After 2 months - Chaotic Rage 1.7 is here!
So it's been 2 months of development, but Chaotic Rage 1.7 is now here. I've kinda slipped the standard 3-week window a bit on this one - real life got in the way - but I'm hoping to be back on schedule again after this release.
I've kinda forgotten all of the changes that went into this one, I had to take a look back through the Git logs to figure it all out so I could write this blog post.
Firstly some stats. 139 commits. 272 changed files with 28,206 additions and 1,559 deletions. Now that might look like a lot of additions, but it's the adding of the spark physics library. I'll talk more about that later.
So whats new? Well the period started the usual way - code cleanup and little bugfixes. Got rid of a few old maps. Fixed some textures which wern't a power-of-two (OpenGL doesn't like this). Fixed a little bug with the camera when spectating a game. Then it starts to get interesting.
I split the GameState class into two. GameState and GameEngine. It's to hopefully make network coding easier down the line. GameEngine is for all the stuff which is local to the machine. GameState should basically be propogated through the network and be in sync at all times.
Then I started doing actual game stuff. I tweaked some config to make it faster and therefore funner. I added a new gametype, where you play as a zombie trying to kill humans instead of the other way around. I added another gametype where AIs battle it out, and made some AI improvements. I fixed some bugs in some maps. I added another gametype (that's three now) where there is an AI battle going on, but you are a part of it.
Then I realised I wanted more control over gametype weapons. In some gametypes you can shotguns, in others you might want flamethrowers. So I added a way for gametypes to override the weapons that a unit spawns with. Then I added a UI where the user can choose some other weapons, and even ignore the gametype ones if they want.
Okay so you see why this is a big release...I just got onto a roll.
And the roll continued. I implemented the spark particle engine, and created some cool effects. And then spent a whole night making the explosion effect look really cool. There is heaps of commits here because I had a bit of difficulty getting the rendering to actually work properly.
So I finish the particles, and I'm really happy, and it's a Wednesday. I'm ready to relase, but I don't release on Wednesdays, I release on weekends. So I need something to burn a hole through three days. Silly me decides, "let's improve the rendering engine, I know, I'll add shadows". Silly mistake. was meant to be a quick littke two-day feature. Nope. It's an eight day feature, and it's not even finished yet.
And that leaves us at Friday monring, as in this morning. Shadows was in and working well, and in my travels I made the rash decision to see how quickly I could add another renderer to the game - an ASCII art one. I didn't think it would be too hard, and it wasn't. Three-quarters of an hour later and it's done.
And tonight, I do a quick test - yup builds on all three platforms. Release! 1.7 is out! It's still uploading at the moment, but should be done soon. As for Linux and Android builds - I cannot do those on this laptop I'm on at the moment, so they won't be ready until Monday, but that shouldn't stress to many people out.
New feature: ASCII mode
I've just added a new rendering engine to Chaotic Rage - ASCII mode!
It's a top-view ascii-art version of the game. Individual characters represent entities in the game. It even does some glever stuff to deal with the ~2:1 ratio of characters.
Is it feasable for real-world use? Not really. Maybe on a server if you are really bored, although the game still links against SDL and OpenGL so that's not really feasable.
There are also some issues. It's currently spectate-only because my events are run through SDL, but there isn't actually an SDL instance in this case. You can watch fully automatic campaigns like the pound campaign or the new gametype, "AI Battle".
As for why I did it, the real question is "why not?".
Finally we have shadows
We finally have shadows in Chaotic Rage!
About this time last week I was mostly happy with what I was going to release, then I thought maybe I should try to squeese one more feature in. Well that was a mistake because it pushed the release out as the shadows took until about Tuesday to get working.
It's still a bit incomplete and buggy and the quality isn't that great either, but I know of some techniques to improve the quality so I'll do them next, as well as play around with dynamic light sources (think a sun setting or something cool like that).
New particle effects
Over the last week or so I've been busy implementing the SPARK particle engine.
It appears to be well written and feature-filled library, which is good. It's a little bit old and hasn't been updated in an while, but that doesn't seem to be a problem - there wasn't really much that needed fixing or changing in this library, which is good. It did need a new OpenGL renderer which used shaders, but once I got that working, it was all sweet.
I don't have any pics at the moment, but expect to see some cool screenshots when I release on the weekend (6th/7th April).