One year after the last release, a lot of water has flown under the bridges and a lot of progress has been achieved in Unvanquished. In terms of bot development, bug fixing, and so on. Let’s focus on the progress made on the UI today, to give you something to chew before the next version (0.53) comes out. With extra pictures!
A new, improved UI library: LibRocket is dead, long live RmlUi!
To draw the user interface, menus and HUD of Unvanquished, we used libRocket until now. This library was growing old and unmaintained, so in the not-yet-released 0.53, it has been replaced by RmlUi. RmlUi is a libRocket fork that includes bug fixes and new features.
The RmlUi migration project was started two years ago by Ishq, and was taken up again by slipher recently. To accomplish this migration, a total of 4 people contributed code, with help by others. The effort included adding C++14 support to the engine and rewriting important chunks of the user interface. In the process we also had to tweak the size of every element as some had odd sizes after upgrading the CSS engine.
Some interesting font rendering features like text-shadow and outlines are unlocked by the new library. Unlike the sprite example above that will have to wait until after 0.53, some of the things showcased below are already included in the next release 😀️
Flexbox and more CSS selectors
There are quite some tiny spacing papercuts inside the Unvanquished UI. This can be attributed to various issues, like float layout used here and there, the lack of a
:last-child selector and a very specific CSS particularity on RmlUi: the lack of margin collapse with the parent element.
Any of these missing features can be used to implement consistent spacing easily enough, but libRocket was unfortunately missing all of them. RmlUi doesn’t implement everything, but it at least implements
:last-child and flexbox’s
display: flex which should allow redoing much of the content flow in a much cleaner, and more consistent way.
Text outlines and shadows
Readability is a known problem in many areas of the game UI
There is support for outlines in RmlUi. The feature was missing in libRocket. This will allow hunting down the places with poor font contrast. As you can see, we can improve the current situation quite a bit!
Transition, animations and transforms
CSS3 have some interesting transform properties which are also implemented in RmlUi.
Among the features that ship in 0.53.0, there is some work by Ishq that implements transformation matrices inside the Dæmon engine. This allows fancy UI transforms inside Unvanquished. If you are hungry for nice pictures, don’t hesitate to follow the link above 😀️
A new map loading screen
This one isn’t about RmlUi features, but illwieckz added back the messages on the loading screen.
One of the most visual thing is the new RmlUi debugger support. It isn’t ready yet, but it should come in some following release.
That’s all folks. Rumours are that the 0.53.0 should arrive in a week 👀️ Stay tuned!