Development time: 4 weeks
Platform: Flash Player 9
Magnum Force 10 is a endless racing game where jump with a motorbike from one roof top to the next aiming for a new highscore. It uses a custom 3D engine based on the drawing API in flash and can read custom 3d model data created in 3dsMax.
Before the actual development of the game begun we made a technical prototype in 3dsMax to illustrate how the technical architecture will work. At that point we decided for example that buildings would always consist of 3 base elements.
After the technical concept one of our designers made an initial mock up of the visuals so that we can present the client something closer to the final game.
Levels were build as modular pieces in 3dsMax and kept and a low triangle count. A 2d collision path was created using the path tool in 3dsMax and saved for each module. A few custom tools written in Maxscript made lining up vertices to game units easier and exported the level data for the game engine. This level data was encoded in Maxscript and decoded as Binary data inside the Flash file for smaller file sizes and faster parsing.
Unwrapping and Texturing
With the texturing we got a closer collaboration with the designers and developers as not all designers were familiar with the concept of texturing 3d models. It turned out that we could use Photoshop CS4+ for the texturing with a real time model preview inside Photoshop. In order to archive low draw calls in the game engine we combined pretty much all objects into 1 mega texture. Using TexTools we created a object ID texture and Ambient occlusion pass so that designers could easier identify within the texture space where each 3D part would go.
For the effects we got a FX animator to make me some pretty particles. All the special effects were projected on 2d planes within the game and as such had to share the same texture for performance reasons.
The game engine uses Box2d for the physics of the motorbike. Because these physics are in 2D space but projected into 3D space it turned out to be very helpful to have a additional debug render layer in order to figure out sometimes what actually was going on. Like many other 3d engines of that time we used a draw call batching system to reduce the drawing instructions per frame. Additional bounding boxes around each triangle set furthermore helped clipping objects at a higher level and optimize performance further more.
Video Engine revisions
This video shows several game engine revisions, how it looked and felt in the first few days up to the last week when everything was coming together.
This video show gameplay footage of the final game.