I started developing the game back in 2010 after a brief period of playing with the DevKitPro and the Nehe GX lessons, which take you through 8 lessons to display a basic spinning cube, originally intended for GameCube programmers to learn.

GX is much like GL in many ways, but lower level to the GameCube and Wii systems than OpenGL is designed to be.

At the time I started development of Exiaxis a certain publisher had declined to port a game to the wii, citing that if they ported their game from Xbox and Playstation to the Wii, they would not be able to display the large numbers ( upwards of 100 ) enemies on screen at once - the wii simply didn't have the power.

I wanted to see for myself what the Wii could display.

I decided to target some very simple N64 level graphics, without too many bells and whistles such as dynamic lighting or high poly models and textures.

Eventually I was able to produce a game engine from scratch, able to display at 60fps over 150 enemies at once, and up to 300 enemies at once at 30fps, and able to continue with relatively little degradation to frame rate up to 1000 monsters at once.

Some features of the engine

  • Only processes GX for on-screen enemies
  • Level of Detail ( lod ) to only display textures and models as needed when they get close enough to be seen
  • Dynamic generation of landscapes using a Diamond Square Algorithm
  • Separate processing of graphics and simulations, retaining normal play even when the graphics subsystem isn't able to display 60fps
  • 29000 blades of grass blowing gently in the breeze
    • 1000 monsters at once
    • 200 extra FX sprites showing explosions, dirt, smoke etc

 

The models for the monsters themeselves were created and animated in blender from quads, converted with a perl script to arrays that were included directly in the game. I targeted around 1000 Quads per model, although some of the enemies are quite far under that, and several break that barrier handily. 

All the models are UV mapped with varying degrees of success, and at 3 different resolutions, so that distant enemies can use extremely low resolution textures without impacting performance too much - it helps that the wii only goes up to 480p, so you can get fairly close with a 32 or 64 pixel wide texture without too much detail loss.

With the asndlib and gcmodplay libraries included in DevKitPro's LibOGC, I was able to include sound effects, which I created from raw and then converted with custom scripts, swapping the binary endianness of them to work with the Wii, and used MilkyTracker and a selection of samples from snippets of other instruments to create 13 songs for background music on the title and during gameplay, which you might find catchy if you're into old C64 style .mod music.