This release we focused on our spring cleaning effort, fixing showstoppers and improving the user experience of the game; read on for what’s new!

With the extensive changes we have been making to the game since the beginning of the year, a number of issues have arisen, some of which completely prevented players to run the game on some platforms. This was unacceptable so we declared a feature-freeze while the most critical issues were not fixed. Some difficult crashes appeared late in the cycle so we took one extra week to iron them out, and this is way Alpha 39 comes a bit later than usual.

Apart from the bug-squashing, the major code features were the cleaning of many warnings and Quake C-isms (for example, the removal of qbooleans) and moving the computation of vertex deforms on the GPU to save CPU time.

Interesting GPU driver bugs

One of the hardest parts of working on the renderer is to track down and fix renderer bugs, as they are specific to one hardware/driver combination. We’ve had a few this release:

The Gallium r300 driver crashed the program with an LLVM error after we moved vertex deforms on the GPU. It was the result of the driver inefficiently allocating arrays in registers and no proper error reporting instead of a hard crash. With the kind help of the #radeon@Freenode developers we worked around that problem by generating a shader for each deform.



On Mac we started seeing huge FPS drops from 100 to 5 in some cases. Unvanquished was going over the uniform limit for the bone data and the Mac Nvidia driver, instead of giving us an error as it should, resorted to software rendering. The one character fix for this was to reduce the number of available uniforms for bone data.

Other works in progress

The feature-freeze was only for the release branches but new projects have been worked on too:

Our gamelogic code has been very difficult to work with so we are experimenting with a new architecture based on components; early results are promising and show that it will make it very easy to tweak the gamelogic.

We have been working on an updater and launcher for the game so that player always get to play the latest version of the game. This will also allow us to push fixes in the middle of the release cycle.

Having CGame run in NaCl, we are moving our UI to the gamelogic so that it is closer to the data it shows; a quick benchmark showed an FPS gain from 90 to 200 FPS (!) in some situations.

Finally we have been providing support to another game investigating a port to our engine. We are strongly hoping it succeeds as it would mean we join forces to make FOSS FPS games better.

Here’s the list of commits: