I spent a couple of weekends playing with Sandbox Gamemaker, which is essentially the Cube 2 game engine with level designer, just to see what I’d create with it. Obviously I’m not going to produce anything on the same level as the latest FPS, since that requires a team with considerable resources and a much wider skillset, but the results I’ve got so far, on an old Lenovo T60, are pretty good.
The software’s pretty cool. It works a bit like Minecraft, where the environment is constructed from cubes (of variable size here), and Sandbox Gamemaker has a library of bitmap surfaces. A configuration file stores the geometries of whatever’s constructed, and I believe developers either add scripts to them, or add pointers to external script files.
Within a few days I managed to build a world that’s passable for a modern FPS/RPG, and the Gamemaker generated a config file, a skeleton where I think the back-end code would be placed. I’m assuming there’s a method of compiling this later.
What’s needed now is a way of creating and importing 3D objects (‘mapmodels’) into Sandbox. This is where the design artists normally get involved.
As far as the actual development’s concerned, I have a rough idea of how a game engine works and what the computer does in the background, thanks largely to the guys at Unified.Diff. Each object in the environment has a rendering function and buffers for size, X, Y and Z values – these are continually updated as the player moves around the screen, giving the illusion of moving through a 3D world. Some objects could also have a buffer to store the distance between the player’s avatar and a given object, and this would enable some interactivity with the environment. For ‘mapmodels the buffers could be much larger, as they involve real numbers for rendering curves.
In addition, I’d also need to create a ‘HUD’, a static overlay that might print global variables for health, ammunition, etc.