The Kiwi's tale: Some lessonsSubmitted by Earok on Wed, 12/24/2008 - 12:50
Even though I have been programming games as a hobby for literally years, I always learn something new and important with every game I release. Here are some lessons I learned from our semi-remake of The New Zealand story:
1. 2D is not easy
After making several complicated 3D games in Blitz3D, I had made the assumption that an old school 2D game would be really easy. In fact it was really difficult, the engine took far longer to produce then I had originally thought (I was still programming it right near the end of the competition deadline!) and I easily put more effort into the collision detection functions then I did on Derelict. The single greatest freeware 2D platformer ever, Cave Story, took four years to make - 16 times longer then the deadline of our competition. The fact of the matter is, if 2D was easy, then we'd literally be flooded in games that are of that quality.
2. Version Control is nice
The Kiwi's Tale was the first of my projects to use SVN (Thanks Vijay P) which is a system that uses a central repository to synchronize changes to the project. This allows for instantaneous updates, using the click of a button to download or upload only the files that have changed, even when the other team members are not online. In previous projects I had normally used email to forward updates to the other team members, which was obviously extremely cumbersome in comparison. I had also used the Shared Files function of Windows Live Messenger for another project, which was okay but it only works between only two team members, and only when they're both online. We were using Assembla to manage the source for The Kiwi's Tale, but they changed their pricing structure half way through the competition and no longer offer free project spaces for non open source projects. I'll definitely look at XP-Dev for my next project.
3. Frequent communication and collaboration is important
Stephen set up a Google Group was set up for the project, and using it to be our mailing list made communication between team members extremely easy. Half way through the project we began meeting every weekend at my place, to develop the game together as a team rather then individually and scattered. During these meetings we easily produced as much for the game in an afternoon as we had done over the preceding week.
4. Plan your To-Do list
While having a To-Do list is important, I found that producing a weekly to-do list with a different game task on each day rapidly sped up development. The other team members immediately noticed, going so far to describe my work as "Power Programming"! Asides from having the pressure of a deadline to push me to get things done, I found that if I knew I had a programming task due on a particular day, I'd subconsciously work on the task while doing other things, programming within my mind. I have since started studying the Getting Things Done (GTD philosophy) and using Rememberthemilk.com, which I expect to help me with my future projects both at home and at work.
5. When remaking, you don't need to do it too closely
This is a lesson I should have learned during Derelict, some of the criticism aimed at the Beta versions was aimed at features I had only included because they were in Space Hulk. From a game design point of view they were completely pointless for my game, and it became better when they were dropped. Likewise, in The Kiwi's Tale, there were several features that were only added because they were in The New Zealand Story, such as not being able to jump off balloons when in mid air. The game became more playable when this was dropped.
6. Good level editors are not easy to find
We were investigating two level editors for the project, Tile Studio and Mappy. Even though Tile Studio had some nice features, such as an integrated tile editor, it had a terrible export function: You can only export levels as source code, which makes it impossible for anyone to add or change levels unless they can recompile the source. Mappy was a little better so we used that instead, but it was still pretty flawed. The biggest flaw is that the tile art is integrated in the level files, meaning that each level in The Kiwi's Tale has its OWN seperate tileset. This made it extremely difficult to maintain a consistent look throughout the game, the filesize of levels became unnecessarily inflated, and it was an annoyance having to import and configure the tile art for each level. There may be better level editors out there, but until then, I'll enhance the Derelict editor and use that instead.