One of the issues I’ve regularly had during game development is to find a font that has the exact style I am looking for but is missing variants, e.g. comes in Regular but not Bold.

While working on Hyperscape, I’ve found Arcon and after a few tests, decided it looked good across multiple user interface elements and would make for a solid base font in the game.

However, this font only comes in the Regular weight.

Rather than just discarding the font, I thought I’d try to create a Bold variant. I must say I had expected the process of making a Bold variant to be completely beyond my ability: I’m a programmer after all, and the idea of editing each individual glyph did not appeal.

Continue reading →

No matter what game we are making, robust logging is essential. It is an essential tool for the developer (and for more technical players), assisting both during development and after a game is release.

My custom C++ engine, Genesis, has had a logging from the earliest days, but it has received some upgrades recently to make it easier to use. I thought it might be helpful to other developers to write an article about the considerations which go into writing such a system, as well as share some code snippets.

Continue reading →

With holidays and birthday season out of the way, it’s time to let you know what’s been happening in HEXTERMINATE land.

Engine upgrades

Linux support & Proton

Being stuck on holiday with a laptop that only runs Linux Mint, I thought I’d try to get the game running on it, as the majority of the code was meant to be portable anyway.

That was the theory.

In practice, it required quite a substantial amount of work to get the game compiling, nevermind actually running. Right now it does run and it is playable, although there are some graphical artefacts and sound doesn’t work. However, this led to some interesting discoveries which will affect everyone, leading to better performance and fewer memory issues.

Currently, native Linux support is scheduled for Build 19 (so, not this one but the one after), but the many fixes that have been done to the engine will likely allow the game to be run through Proton in Build 18, rather than just displaying a black screen.

Continue reading →

A new User Interface

It is one of those things which are inevitable in software development: mistakes are often obvious in hindsight.

If we go back several years, I decided that writing my own User Interface library was a good idea. This was a valuable experiment in a number of ways, providing valuable insight into the complexity of such a system: how do I bring fonts in? How does input need to be implemented in a multilayered system? What about popups? How difficult can it be to get the text in a text box wrapping correctly?

If I was just making an engine for fun and experience, that decision would have been fine. However, since I was actually trying to ship a game with it, that was a mistake. This mistake was further compounded by a reluctance to upgrade the UI system to allow for dynamic reloading, which meant that building and tweaking interfaces was very time consuming.

However, with HEXTERMINATE staying in development for the foreseeable future, there will be a substantial amount of UI work that will have to be done. For my sanity, I’ve decided to finally bite the bullet and layer a more advanced system on top of the current UI, allowing me to modify new UI elements on the fly and store the design as a JSON file.

Continue reading →


Working from home has been working well for me for the past year, with a thankfully stable and decently fast Internet connection. However, a recent service issue has led me to try some alternatives and finally set up a backup connection using a Teltonika RUT240 router with a 4G failover. I also cover having a look at the business packages provided by the ISP.

And the connection goes down

The Connection to server lost dialog in Perforce was the early warning to my family’s “Is the Internet down!?” queries coming from downstairs.

The Internet’s gone, guys. There’s nothing but a wasteland out there.

Right, lets try to get everyone back online…

Continue reading →