June 30th, 2011

Source Code Release

I have decided to release the full source code of SHMUP a shoot'em up 3D engine specially designed for mobile platform and released on iOS in 2010.

The game and engine are fairly inspired of Ikaruga, the legendary shmup from the 1999 DreamCast. Anything you saw in Ikaruga, this engine can do it too.

Source Code

The license is GPL which mean you have to release the source code of what you produce with it. Note that the data folder is provided so you can play with it but you are not free to redistribute it and I remain the owner of the content (except for the song from Future Crew that was licensed).

A few noticable features:


Source code (GPL) Video

License

The source code is being released under GPL license. Note that the data folder is provided so you can play with it but you are not free to redistribute it and I remain the owner of the content (except for the song from Future Crew that was licensed).

Android port

Since the core of the engine is pure C it should be easy to port to Android. The Native Development Kit should allow the engine to be compiled as a library and you just have to write a few wrappers to take the user input, play the music and sync with the screen. If anyone is willing to do it I am ok with publishing it and sharing the revenu 50/50 (just let me know in advance you are working on it to avoid overlap).

3D world but 2D control

The game is a bit special because it is all 3D but you only control your ship in 2D within the screen space. I was not so trivial to accomplish at first but I wrote a first version in Java a few years ago: What I did was to draw the background with perspective projection then clear the depth buffer, switch to orthogonal projection and draw the entities/bullets. It was working ok but there was no way to have continious transition between cinematic and game since the entities were not really part of the 3D world.

This version actually recalculate each entity matrix for each frame starting from their 2D screen coordinates. This way even though the camera moves in the 3D world, the entities look "glued" to the screen...and you can switch from cinematic to game at will.

With more time...

There are a few things that I wish I had time to do. The reason it wasn't done is because I was burned out.

 

@