I’ve been reading a book about video game development recently. Its interesting. I’ve slowly gained an interest in how games that I play are capable of modelling environments and characters and their behaviours. I’ve never really appreciated game development because it for a long time seemed like a totally un-relatable field to me in terms of computer programming that I’ve not been able to comprehend all its aspects, specifically when comparing it to what I do. I write and design office software, and we don't really obsess about performance over and above doing something relatively quickly and reliable in terms of best practises. We don't even touch artificial intelligence.
Game development actively embraces artificial intelligence as well as performance and optimisation, not to mention things like graphics, animation and sounds and controllers – things that us ‘normal’ programmers don't go near and because of that, they’ve developed as a bit of a ‘advanced’ or unknown aspect of our field.
I remember sitting in front of my xbox 360 and stopping for a while and thinking: ‘how do they do that, programmatically?’ and ‘why don't I even have a clue?’ and then I started getting amazed by what was happening in front of me because I was now wondering why and how. For example, I now get Goosebumps when I ‘experience’ an immersive alien world, with the rate of graphic rendering and animation that makes me feel like I’m in the game, so much so it influences my mind, state of being and engages my mind and spirit. I feel like I’m stuck in an alternate reality and the characters feel like they are real –this is a perfect simulation of something. This is important for human development, artificial intelligence and simulation – game development is very important.
In this vein, I’ve started to bridge the blackness that is the unknowns that game development is and its frighteningly different from what I’m used to. To being with there is a totally different way of thinking about code execution and what you do in that code and who data is stored and how its positioned and reasoned with. Its amazing. Its like a discovery of a new world that you just want to explore because its new and there is undoubtedly more.
I have such an appreciation to the new world of game development because it seems like a world that has been hidden from me because its so specialized and almost inaccessible to anyone but those who are willing to put in the effort and skill to achieve the large goals that game developers want. Graphic rendering for one is a expansive topic going into realms of mathematics that scare all but the proficient and diligent. Some concepts such a graph theory and trigonometry are not used in my 9 to 5 day job. Optimisation and artificial intelligence is so new to me.
Things that I’ve been trying to touch on are aspects of how a game is developed, from how the cycles of CPU are split among activities such as drawing, storing, executing algorithms and running logic. I’ve never had more of an appreciation of Finite State machines, rule systems and the use of data algorithms such as hash tables and trees, not to mention how everything seems to revolve around graph theory – its truly amazing.
The book I’m reading right now is called “Core Techniques and Algorithms in Game programming”.