Early look at libRocket

Now for an early look at our libRocket implementation.


One of our primary long-term goals for the engine has been to add a new interface system to replace the aging Quake 3 infrastructure that we’ve inherited. In our case, the choice would seem to be libRocket. The library will allow for us to design HUDs and menus using CSS and HTML, which allows for greater ease in pulling off some interface tricks that would have been a complete chore with the old system. In addition, it will make things easier for community modders to put their own HUDs together, as you’ll very likely be much more familiar with common web design languages than the arcane system we currently use.

Work began on adding libRocket last summer, and the implementation has still been in development, progress shuffling between it and other urgent coding projects. So far, the libRocket branch on Git will load the game and display a menu, although we’ve yet to add the assets that we’ve made. As you can see from the concepts, we are aiming for cleaner menus outside of the game, and a nice circle menu system for selecting things in-game. The HUD system has also been designed to use modular units, allowing a designer to use HUD elements between both teams. What remains to be done? Ironing out bugs, ensuring user-friendliness, and getting performance up to par with the old system. You can expect us to finally merge it into master sometime next year. If you’re interested, you can help!