When programming Rabbit Wars back in 2007, I ended up with huge objects for each of my game entities. They handled player input, AI, moving, shooting, health points and rendering. I didn't like it, it drove me mad. But then I came across this Evolve Your Hierarchy article. Since I was still in the middle of programming, I refactored my game entity code to use components instead of multiple inheritance (just like the article described). It worked great, my code was readable again. [caption id="" align="aligncenter" width="240"] Rabbit Wars for PocketPC[/caption] (more…)
I wrote my original article on game loops a few years ago, and it's nice to see that it's still popular today. Recently I stumbled upon some game loop lecture slides of Aaron D. Lanterman, and he seems to use my game loop article as a reference :). He even has a video of his session online. So if you had a hard time understanding my article, maybe you should check out that video. It might make things more clear.
When developing a new game, the first thing you should consider is your high level game architecture. You're probably going to use some 3rd party libraries, maybe you already have some in-house libraries that you're going to use, or develop them for future use. How these things fit together seems obvious, but when you consider following architecture, it will save you a lot of time and frustration later on. (more…)
The Rampant Coyote has created a list of 19 general purpose 2D engines that you can use for you project. Now how do you choose the right one? Well, an indie game developer should consider following things: To get as many customers as possible, use an engine that supports multiple platforms: Windows, Mac and Linux. To make the best use of your time, prefer higher level scripting languages over lower level programming languages. Paying for an engine doesn't necessarily mean that you get a better product or better support. My personal favorite? Pygame of course! :)
When programming a new game, most of the time you implement some basic features and start from there. As the game gets bigger, your code gets more interwoven, and the classes bigger. And before you know it you end up with spaghetti code and god classes, and that's the last thing anyone wants. Let's assume we're programming a racing game, and we have a class called RaceCar. Soon enough that class will contain a method to update it's state, to draw it onto the screen, to accept user input, etc. It will become huge with all kinds of different functionality in there. So how can we divide up our game so it's nicely split up into modules and classes? Just read on and learn ;). (more…)
The game loop is the heartbeat of every game, no game can run without it. But unfortunately for every new game programmer, there aren't any good articles on the internet who provide the proper information on this topic. But fear not, because you have just stumbled upon the one and only article that gives the game loop the attention it deserves. Thanks to my job as a game programmer, I come into contact with a lot of code for small mobile games. And it always amazes me how many game loop implementations are out there. You might wonder yourself how a simple thing like that can be written in different ways. Well, it can, and I will discuss the pros and cons of the most popular implementations, and give you…
(This article was translated to Serbo-Croatian by Jovana Milutinovich) This guide describes the coding style that I developed over the years. My style isn't very widespread. As a matter of fact, I don't know anyone who comes even close to the weird way I program. But I like it and want to share it with you anyway (you lucky bastard!). I use it for all kinds of programming languages: C, C++, Java, C#, Python,... . (more…)