In the last few months, I’ve been spending a considerable amount of time fleshing out some tedious but necessary parts of my game. I realized that since I’m a one-man army, I need the ability to very quickly get all of my ideas out and into a playable form without a lot of process and layers of tools. Unfortunately, the only way to achieve a very seamless workflow is by specializing your tools, which means rolling my own level editor and game formats. These things are nice to have anyway, but I believe that the time I invest in these tools will pay off in even the very first game I end up writing using them. I decided I needed a quick and easy way to import models and other game assets, a scripting language (in my case, Lua) for data definition and eventually scripted events and possibly game rules, and a level editor that allows rapid building and playtesting of open 3D worlds.

Just a short and sweet post on the progress of my game. This demo shows off basic character and camera controls, as well as interaction with the world. You can toggle gravity using ‘g’, as well as the forces that cause the particles to flock to various shapes using ‘c’. The player moves using standard wasd keys, with ‘q’ and ‘e’ moving the character forward and backward. Holding the left mouse button will fire small “bullets” while clicking the right mouse button will fire larger “bullets”. The player moves within a bounded plane. The statistics display has also been updated to show relevant graphics and physics information.

You can download the executable here: tech_demo_1.zip
Note that you will need to install the June 2010 DirectX and the Visual C++ 2010 runtimes if this is your first time running the software. These should not need to be installed again to run any of my future demos, unless otherwise noted.

I’ve been conspicuously quiet the last couple of weeks and this is why. I have been evolving my rough particle system into a (very targeted) game engine. From a design standpoint, the particle system was a learning project where I tried to leverage as much as I could from the natural mechanisms of C++ to develop an object model for what I planned on turning into a more general purpose game engine. I decided to try and model my game objects using an inheritance structure. I felt that in the real world, nearly everything falls into some sort of classification, often with distinct parent-child relationships. However, as I began adding game specific objects to my engine, I realized that not only is it prohibitively difficult to try to model the real world (the way I felt it should be modeled) due to the sheer volume and complexity, but game objects are simply an approximation of real world occurrences, and as such they tend to “cheat” to achieve a certain effect. Objects in a game can chose the be invisible, or defy the laws of physics. This basically breaks whatever elegant classification structure I had planned. Luckily, this can be addressed by converting to a “has-a” object model, where objects will contain pointers to optional collections of data and functionality.

So it’s been quite a while since my last post, but rest assured I’ve been hard at work. I recently attended GDC, met with a lot of game programming superstars, had far too much food, too little sleep, and overall had an excellent time. For anyone seriously interested in developing games or working in the game industry, it is most certainly the place to go. I was fortunate enough to hang out with some very cool people that seemed to know everyone, and it was great to talk with folks that had different opinions and outlooks on the game industry. I found the indie talks to be the most inspirational. Everyone likes a good story, and the indie developers naturally have strong personal ties to their work, and just about every tale each developer told left you with a warm fuzzy feeling inside.