Saturday, April 2, 2011

Engine Rework

We began this project with the intention of making XBLIG our primary target, with PC as a secondary platform. I built the engine up with C# over the top of XNA. My reservations with this decision compounded over time until we hit the tipping point when we found that Ben couldn't even run the level editor above 11 FPS with his computer (this isn't my fault! I like to think that I'm fairly good at optimizing). With XNA 4's minimum system requirements (e.g. shader model 2.0), the fact that XNA is Windows-only, and the realization as our design matured that it is really more suited to PC than console anyway (i.e. it would make much more sense for PC to be our target platform rather than XBLIG), we decided a little while ago to start over with C++/OpenGL.

Fear not! There are of course plenty of awful stories ripe for the reading about the death of game projects because of engine reworks like this. Fortunately, I've been working on the OpenGL port for a while now, and I'm just about at the point where I've reimplemented all of the graphics utilities (including a content manager) that I was using with XN. Next is just the mindless language translation from C# to C++ (my least favorite part of porting anything).

This means several things:

Shader model 2.0 is no longer a minimum requirement (which was kind of ridiculous for a 2D game like this)

Without the overhead of the .NET runtime, slower computers (like Ben's) will be able to run the game just fine. In the indie community, crappy computers are relatively commonplace

The game can be cross platform (i.e. Windows, Mac and Linux). This is probably the thing that I'm most excited about now that we made the change