Today marks the one year anniversary of our game development competition, so I can now safely say that the game will be late. Not only will the game be late, but I’m also about 2k over budget. If you had asked me a year ago if I would be disappointed about being late and over budget, I would have absolutely said yes.
In my former career as a web developer I prided myself meeting budget and time deadlines. I rarely missed any type of programming deadline (unless management screwed things up, of course) and could fairly accurately predict how long any coding task would take. Now that I have a year of game development under my belt, I can confidently say that I can in no way estimate how long it takes to develop a game.
I would have been upset if my being late was due to a lack of effort, but it’s more due to the fact that there is so much more to game development than game programming. I have been off on pretty much every meaningful estimate and the game will be at least 6 months late and possibly a year late (hopefully?). The fact that my opponent is also late helps soften the blow, and while I can’t speak for him, here are some aspects of game development that took more time than I expected.
I don’t know what I was originally thinking here, but coming up with an original game idea, making an art design document, working with multiple contractors, researching music styles, writing dialogue, testing interfaces, and all of the other tasks associated with game design has taken a ton of time. If you take a look at just my last 3 months of development time, you can see that 40% was spent on actual software development.
At least sixty percent of my time was spent on doing things other than development. I say at least because I spend a lot of time at home and not logged into RescueTime that isn’t represented in this chart. Some of that sixty percent of time is doing tedious and repetitive development tasks outside of code, like cutting up sprites, but a lot of it is spent researching, thinking, planning, and testing the game. Somehow I didn’t think about the fact that a game has hundreds of sound effects and somebody has to think of what effects to use and then create an excel spreadsheet detailing those effects. I honestly didn’t understand how game design was a real job before I started making a game by myself, but I definitely get it now. Somebody has to do the mountain of planning work that isn’t programming and art, and when you’re alone that somebody is you.
I knew I’d have to learn the how the Corona SDK worked, but I never really gave much thought to the other tools I’d need to learn and understand. Some of the applications that I have had to learn are iDraw and PixelMator for image editing,Texture Packer for sprite sheets, Batch Crop for batch image cropping, Particle Designer for particle effects, and Garage Band for music editing. Like learning game development API calls, none of these tools have caused major headaches, but getting an understanding of them all has taken up a solid chunk of time.
I can also understand how game studios end up building custom tools, because as I’ll talk about in the next section, game development can be very tedious even when you have tools at your disposal.
I wish I could think of a better title for the section, but so much about game development has just been a tedious process. Don’t get me wrong, I’m enjoying the process, but sometimes I feel like I’m basically doing manual labor on a computer.
A recent example to illustrate what I’m talking about is what I’ve gone through to add a hero’s path to the world map. Here I have a world map that looks like:
What I want to do is animate a yellow and green line that goes from point A to point B in order to indicate the path that the heroes take. The end result looks a little something like this:
That small path looks easy enough, but implementing it requires going into Pixelmator, creating 20 or 30 mask images, and then sequentially animating the path with those mask images. The game has 22 of these paths, so that’s 22 path animations that have to be cut up, animated, tested, usually fixed in some way, and then tested again.
This same scenario happens in some way with pretty much every visual element that goes on-screen. Consider the fact that I have something like 10,000 images making up character sprites and all of those need to made into sprite sheets, tested, resized for multiple devices, etc. and it’s easy to understand how time flies. The devil is in the details, but man, those details sure do take a lot of time.
I would say that I beat my expectations as to how long it would take to learn and be comfortable with a new programming language and development platform. I thought it would take me a few months to become comfortable with a new programming language, but making the switch from PHP to LUA wasn’t all that difficult. On top of that, the Corona SDK has been very easy to use and was easier than I expected. Where I didn’t beat my estimate is how long it would take to learn all of the new functionality associated with game programming.
To understand what I’m talking about, take a look at Corona’s API reference chart. None of that functionality is particularly hard to learn individually, but learning how and when to utilize different techniques has taken a lot of time in aggregate.
As I went over in the last section, masking images is a widely used gaming technique in which I had no experience. Like I did with so many techniques, I took the tutorials, built out a test separate project for experimentation, and then eventually added the technique into my game. Unfortunately, things never seem to work out quite right the first time, so it usually takes two or three attempts to get a new technique to work out just right. What I initially think will take a day can easily end up taking a week to perfect.
This same scenario has played out with scene management, sprite sheets, animations, character pathing, event listeners, display groups, audio management, memory management, multiple device support, and the list goes on. I’m getting very comfortable with the techniques used to make a game, but it’s taken me a year to get here.
So the bad news is that the game is going to be late and over budget. The good news is that I’ve learned a ton, am having having a blast making this game, and have every intention of seeing it through. If I could go back in time I probably would have chosen a simpler game with less story and less complicated artwork, but there was no way for me to know how much is involved with all of this. I see games and game developers in an entire new light now and have a new respect for aspects of games that I never knew existed. It’s been a good year and hopefully I’m writing about a successfully launched game a year from now.