Postmortem: How to Train Your Wizard

The name of this game came about because my wife and I were watching the Fairy Tail and How to Train Your Dragon tv shows at the same time. But the game was really intended to be a Fairy Tail game. You were to manage a wizarding guild. Interactions between your wizards would be where most of the fun would come in. But I saw it primarily as a sim game.

What went right

Keeping my scope small

From the get I decided to minimize a number of aspects of the game. Most notably I decided to make a CLI game instead of a GUI game. This meant I didn't need to create very many assets as everything was texted based. I also started by taking a single system or problem and focusing my work on that. This did infact serve me well. I got to something playable inside of a few days and weeks. It wasn't fun, there wasn't an objective to speak of, but it was playable. It game me a fair bit of encouragement to keep going at it.

Modular components

I managed to keep various parts of the game as separate modules as I developed. Wizards, the Guild, facilities in the guild, jobs, etc. This worked fairly well. When it was time to add a new aspect of the game I could make a new file and add in that aspect. It allowed me some fairly good logical separating and got me a number of interesting aspects to the game. Including wizard loyalty and injuries.

What went wrong

Lack of Experience in Game Design

My biggest problem as far as I can tell at this point is my lack of experience with game design. While I am a skilled programmer, I have very little experience with game design. I couldn't figure out what the exact objective of the game was. I had this problem also years ago when I was working on a project with my friend Winkle. We were making a game we just referred to as "little boy" but I think I stood in the way of doing it well because I couldn't image what our objective was. This lead me to scale things back and attempt to make a wizard board game, but even that failed to be fruitful. I'm realizing how few games I have played when I am honest with myself. Which is why I have decided to spend more time developing a breadth of experience with games so I can have more mechanics and ideas to draw from. I need to develop as a game designer.

Lack of specification

As a result of the above problem I ran into a lack of specification. This was kind of intentional. I wanted to grow the game organically instead of setting out everything from the getgo and being unable to start because I had designed something so big. While I do agree with the general sentiment that you should grow your program, particularly when you are a team of one, you still need a couple guiding principles to get that to work, plants have the sun, I had nothing. I had a nebulous concept of "like Fairy Tail" but Fairy Tail doesn't go into its guild management very much, except when it is important to the plot. So that left me with little guidance as to what I was trying to achive, and as you might expect, that came out in the resulting program. When I "played" the game I was never sure what I was even doing. The flavor text on things was uninteresting because I didn't care about the underlying character or item it was describing. So while I may not need a detailed spect to create a game, I do need a nailed down objective and concrete idea to grow my code base.

Learning CLI was not free.

I choose to do a CLI because I figured it would be cheap in programmer time to implement. While there is some truth to this, it still was not free. There was more than one occation where I spent a long time trying to figure out why my UI was not displaying the content I was expecting. I had decided to use a library named py_cui, which is a great interface to the "curses" library so I could make interactive interface. This was neat, gave me kind of a dwarf fortress feel. But the thing is, that was basically GUI programming. If I had stuck to a print only interface, one that clears the screen and the user enters numbers to select choices perhaps it would have stayed simple, but my choice to use py_cui and curses by extension ruined this.

Conclusion

I'm going to revisit "Wizard" as I've come to refer to it at a future date. This time I think I'll make it in unreal engine. But before I do, I want to get a solid understanding of what exactly it is I am making. Never the less this was a fun little experiment, I learned a lot about where I am lacking.