What’s a postmortem? Did somebody die? Not really… it’s actually about a game being born. It is an after-the-fact analysis of a completed project, in this case, the computer game “Devastro”.
Yes, let’s start
Devastro is a fast-paced 2d action game. With a team of up to 4 soldiers your mission is to stop an alien invasion by destroying all flying saucers and killing all enemy. Some missions have different objectives, such as herding sheep to save them from the aliens.
The theme of the game draws inspiration from 50s sci-fi B-movies such as „Earth vs. the Flying Saucers“ and „Forbidden Planet“.
It took 9 months to create Devastro from start to finish. Everything except music was done by a single person – me. I designed it, programmed it, created all the graphics, sounds, and levels myself.
They came, they saw and they got their green butts kicked.
What went right
The right scope. The size of the game was just right for me as the sole developer. If I had chosen anything more complex it would’ve taken much longer or more likely I would not finish it at all. On the other hand, doing a simple puzzle gem swapping game would have felt like cheating. And I don’t play games like that myself, so it would be boring.
If you run out of grenades, make something else go boom.
The platform. Java was a blessing for this project. I was able to refactor things right away and keep everything under control. The source code is over 38000 lines of code and I cannot imagine dealing with the same amount of C++ code so quickly. At the start I knew C++ and STL and Boost pretty well and knew little about Java, but it was very easy to pick up. Debugging and profiling the Java application was so easy and quick I could hardly believe it; Eclipse is a wonderful IDE.
Apache Ant is a great build tool. With one click I can make a new build for three platforms, create the installation packages, upload them to FTP and update the Help page to show the new version number.
And to people who’ve never used one themselves, a version control system may seem overkill for a single person but in fact it is absolutely essential.
The “team”. Having other people do some parts of the game would have definitely slowed it down a lot. Since I was doing everything myself, I never had to wait for anybody to finish their part and all the tasks were in my head.
I always had many different things to do, which meant that I was free to choose what I felt like doing at the moment. Bored with AI code? OK, let’s work on the website for a while. Stuck on graphics? No problem, go record some sounds with a microphone or set up the credit card processing system. The variety of the work was immense and I enjoyed doing it this way. The only thing I didn’t do myself was music. A friend of mine did it at the last moment and it turned out very well. Thanks, Bourek!
It is empty. That means I’m done. Hooray!
Custom development tools. Luckily I realised the importance of having good level and sprite editors early on. I put quite a lot of effort into them and made sure it was possible to create an entire level from scratch without having to edit anything by hand. It is even possible to record the soldiers’ movement and play it back as a part of a cutscene.
The editors are built into the game so the turnaround time between editing and testing the gameplay is really short. I even considered including the editor in the shipped game but decided against it, as it would have required some additional polish I didn’t have time for. Also, probably only a few people would have used it.
Don’t let them kill more than one sheep within the next 4 minutes. Isn’t that clear?
What went wrong (not much, really)
Financing. Towards the end I was really broke and had to borrow money. Having some savings before starting the project would have helped a lot. This is a double edged sword though. Being broke forced me to work harder. It was the best motivation I could ever get.
Flying saucers that don’t fly… Not all the features I wanted to put in are included. All the saucers that you encounter have already landed, you see none of them actually flying. Helicopters and other types of vehicles such as tanks have also been left out. There wasn’t enough time to do it properly, so I didn’t do it at all. I don’t consider this “cutting corners” because the game doesn’t really suffer without these features but on the other hand… tanks are cool, right? Maybe next time.
A few people complained about the lack of proper animation for the aliens. I kind of expected that but kept them in anyway. They do stand out but that can be a good thing considering they are your primary target. So this will either be an improvement I keep for a future update or you will just have to get over it. If you don’t like the way they move, shoot ‘em, not me.
Short play-time It is possible to get through Devastro from start to finish within an hour. On average it will take about 90 to 120 minutes. That’s not much.
Almost each level in Devastro has some unique feature or trick that sets it apart. I didn’t want to water it down just to be able to say it has 300 levels worth 45 hours of gameplay and charge more money.
Also, 90 minutes is not much when compared to other games but it is the length of a feature movie. You can have great fun playing it and then still have time to go out.
OpenAL issues. There are different implementations of OpenAL and some of them behave differently than others. The Mac version of the game often crashed because of OpenAL. This is a very hard thing to debug and in this case even harder due to the fact that I don’t own a Mac myself, so I have to rely on other people’s crash reports. I should have used the more proven FMOD library for audio playback.
The project turned out very well and I’m curious whether it’s going to sell any copies. I had a great time working on it and learned an incredible amount of things. I definitely plan to make more games in the future. It is a great feeling to see the credits roll by.
Devastro home page:
Go home, we’re done with shooting.
|Number of developers
||1 full-time, 1 contractor (musician)
|Length of development
||Windows, Mac OS X
||Low-end office machines running Windows, one Mac Mini for testing the Mac version.
||Java, Eclipse, Apache Ant, NSIS
||3 GB of source assets, 38000 lines of code, 15 MB resulting installation packages for each platform.