This has been a very mixed couple of weeks. Roughly when I was supposed to write this blog post I experienced an internet outage which lasted a good 10 days. In that time, I was completely isolated as my ISPs engineer failed to turn up to an engineer visit to fix the problem and my phone has awful GPRS signal here. Luckily, I use Git so I could still happily write commits without having to push to the external server, but it was still more difficult to continue development as I could not research anything online, or grab any external libraries as needed, or anything like that. However, despite this slight downtime, I've worked on quite a few interesting features.
Graphical Improvements
A lot of the textures in the game have been pretty low par or they still didn't feel right, so I spent some time in Photoshop tweaking the colours, making things more or less subtle and cleaning some artefacts which I discovered due to JPEG compression. The result so far:
As you've probably noticed, this and most of the other screenshots so far have a nasty looking "stepped brightness" effect on gradients, which is caused by the RGB8 backbuffer. Once HDRR has been implemented, this artefact should disappear.
Improving Ships
Since the last dev update, I have implemented more accurate collision. The physical rigid body is now roughly the shape of the ship constructed rather than just the bounding box. Additionally, navigational thrusters have also been implemented so rotating the ship doesn't just happen by magic and actual thrusters fire up to change the torque, much like how normal engines accelerate/decelerate the ship.
Game Modes
Very basic game modes are now working, so this is finally starting to feel more like a game! The engine loads up a lua script with functions designed to respond to game events like "QueryShipSpawn" and "IsGameFinished" and then these functions are called when these events happen. For example, for Team Deathmatch, the engine will call QueryShipSpawn and if this returns true, the ship is allowed to spawn, false otherwise.
This system is mostly useful for modding. Using a scripted solution rather than hard coding it, it becomes trivial for players to create new and completely unrelated game modes without having to hack the games source files.