Fork me on GitHub


It had to start somewhere...

Chaotic Rage started as a project to learn C. That became Chaotic Rage Classic. It was top-view, and 2D. The engine was as simple as possible, to try and make it run really fast, and support heaps of players on multiplayer. It was sadly limited by the poor rendering speed of 2D on most modern cards vs 3D performance.

The original version implement destructable environments by erasing pixels and replacing them with background pixels. This also meant that blood and guts would be copied into the ground texture, so they would remain instead of fading after a period of time.

At some point, it was rewitten in C++, although still top-view 2D. The rewrite was mostly because the engine has become a big mess, but I also wanted to implement modding, by moving all of the definitions of objects, players, particles, etc into configuration files.

At some point, I discovered that traditonal 2D was far too slow. so I switched the engine to 2D OpenGL, where you basically turn off the z-buffer, and draw everything at the same depth. This boosed my speed hugely, but suffered from the fact that is was much more difficult to do per-pixel wall damage, and "baking" of blood and guts into the background texture. Nonetheless, I peristed.

Then one day, I had the "ah ha" point. I realised that I wasn't getting the benefits of traditional 2D (you can hack up the bitmaps easily), and I wasn't getting the benefits of OpenGL (doing stuff in 3D), so after a bit of thought, I decided to switch the whole engine from being sprite based to being a proper 3D engine, although it was still top down.

After some more development, including the first (crappy) vesrion of network code, I kept finding myself choosing the behind-character mode that I had added in, so one day I just changed the default to be behind-character. The top-view is still there (and better for some maps), but the default is behind player.

Various other developments have occoured too. I ripped out my home-baked physics engine and implemented Bullet Physics. I added menus using Guichan. I recently removed my own model loading (using .obj files), and now use Assimp. The engine has evolved - a lot - but that's development!

You can read about ongong development on the Development Blog.