My game was accepted to IndieDB which I'm really excited about. Most of the development has been under wraps for quite some time and in my final push to get it all finished, I will be releasing more and more content on here over the next few weeks. :)
Over the last week and a half, I've been working hard on renovating the UI of the game. Until today, I have been using a custom written GUI system which worked okay, but had a large set of problems:
- All images had to be contained inside a global texture atlas.
- Only gradients and rectangular elements were supported.
- There was no support for clipping, so text that was outside the bounds of a parent window "spilled" out.
- I didn't implement very many controls, so no scroll-bars, radio buttons or anything more than a button.
Fortunately, I've been migrating the UI code to use a library called libRocket, which is a nice piece of middleware designed to create user interfaces in games. Rocket was ideal for this project because it supports a large number of controls, very easy to plug into the existing engine and - arguably the best feature - uses both HTML and CSS to control the layout and theme it.
For the time being, a simple CSS script is being used to make the windows look similar to the design of the original UI. However, it's very easy to alter the window to use a background image or add a title bar, just need to add a couple of background-image properties to the CSS file. :)
Recently, I've had a little bit of fun with dependencies for the engine. At the moment, I'm using a CMake build system which looks for dependencies in a designated folder of the projects root directory. I need to do this because Windows doesn't have any package manager so I can't simply issue an "apt-get install lua" and then know that CMake will find it automatically.
As a result, I've written a pretty nice script that given a folder with all the dependencies source code, it will construct a package that can then be dropped into the games dependencies folder and then the build system will pick it up and build the game, without having to install any prerequisite software. You can find the script I'm using at the moment here.
Additionally, I spent a couple of hours moving from Luabind to Luabridge, which IMO is a much nicer Lua-C++ binding library and finally allows me to rid myself of the dependency to Boost which has made compilation much faster!
Over the next week, I'm going to finish up on the UI migration (as it's currently a mutant hybrid of the new code and old code) and begin work on improving the ships. I want the user to be able to see the navigational thrusters in action when performing manoeuvres and be able to semi-destroy other players ships by firing at and destroying their engines, so I'll be working on this and hopefully will have something to show for it next week.