Every once in a while as a game programmer you need to take a walk through the latest and the
greatest (or at least the latest) technologies to keep your hand in and to make sure you understand
how the newest technologies really work. In the world of game development nothing does that
better than writing your own game engine.
While I can (and do) spend hours every day going over changes to the the Torque Game Engine, and
I firmly plan to continue to use it in my development efforts, I simply need to make a new engine to
refresh my brain cells on the issues and benefits of some of these new technologies. I have also found
from experience that only when you try to build a game engine do you appreciate the wisdom of the choices
others made in their designs.
This is the fourth or fifth engine I have done. For the last couple I started from various individual books
because they had example material that I wanted to explore. This time I have about a half dozen books
influencing me and so I decided to set a big stack of the relevant ones beside my desk in easy reach,
and over the course of a couple days browse them all, and then pick one as a starting point.
After a couple days casual reading, I ended up choosing 3D Game Engine Programming by Zerbst and Duvel
(Premier Press ISBN 1-59200-351-6) as a starting point.
There were a couple of reasons for using its architecture as a starting point. It was modular, it was
focused on one set of API's (DirectX - no surprise) but it was basically designed to be cross-platform
and allow the substitution of different API's as required for different platforms.
This has great appeal since my goal is to try out different things to see how they work. Most game engine
books focus solely on the graphics portion of development and devote only short chapters to audio, networking,
inputs, etc. Since I also plan on doing some research work in these areas as well having them broken into
modules which can be substituted was a nice plus.
In keeping with the magnitude and direction of the task I have even come up with an appropriate name for
my latest engine - Sisyphus, the legendary figure who was condemned to roll the same stone up the same mountain
over and over, only to see it roll back down just before he reached the top.
Kind of a metaphor for modern reusability don't you think?
For those of you who dislike unhappy endings and don't know your Greek mythology, Sisyphus was finally
relieved of his burden, by Heracles (or Hercules), who lifted the giant stone carried it to the top of the
mountain and slammed it into the peak lodging it there so it could not roll back.
Nothing was ever said on what Sisyphus did with his remaining eternity, now that his regular job was gone.
Hopefully, he got a bright, shiny chariot and went off to the Elysium fields to chase after maidens...
I will be devoting a separate page to the development of the Sisyphus Engine and you will see it posted on
the side panel to your left if you care to follow along. I haven't decided if I will make the code available
yet. It will be derivative (what game engine isn't?) but I do plan on making some changes just to see how
they function in the real world, including the use of a different nomenclature and coding style to check on
productivity. For more info you will need to go to the Sisyphus page where I will discuss it in more detail.
|