Game Development Chronicles: Episode #2
More than a month has passed since the previous update, I was too busy to write an entry in the blog. I can definitely say now that writing a game is hard, but writing it without a correct methodology (and previous experience) is even harder.
I spent lot of time working on tools and frameworks when instead I should had spent more time working on a prototype; just working on a demo made me realize much better what I need to do to reach the end and what tools I need.
I also learnt not to use a physics engine. Why ? Because it's much easier to simulate physics without using a physics engine than simulating "arcadeness" using it. When your characters need an almost real behaviour, don't use a physics engine !
It's easy to decide, there's only one question you have to ask yourself if you are in doubt about using a physics engine or not. The questions is: am I building a simulation ? If your answer is yes, then you better not reinvent the wheel and choose a physics engine. There are several out there but I can comment only on ODE since it's what I used. But if your answer is not then it's probably going to be easier to roll out your own custom physics engine, specialised for your game.
Another important lesson I learned during the latest month was to write the tools using the technologies that I know the most. I'm writing a track editor that I would like to include within the game to allow users to create their own track. I still can't write anything else than basic text and lines using the GUI system offered by the 3D engine I'm using, and this restrain my freedom to explore the best interface to adopt. Although it is true that one day or another I'll have to master this API, at least now I have a working track editor written in PyQT that I have quickly written and that allows to me create track and progress with the game.
But the biggest lesson I've learned is to write prototypes, as soon as possible. For the next months I'm going to stick to a Prototype-Driven-Development methodology. A quick search on Internet didn't reveal a specific definition, but to me it means shaping the final software thanks to the continuous improvement and re-factoring of prototypes. The biggest advantage of using this approach is that it make you realise exactly what your game needs in order to work, and that allows you to shape your framework around your game, always trying to keep it as generic as possible though, if it's a framework you're probably going to reuse it for another game.
I've completed the first prototype last week and I'll complete the next two hopefully in the middle of March, then I'll finally be able to post some screenshots so keep staying tuned!
