Blog
Our game development journey
-

Sample-precise sound
In the Christmas 1 level, we wanted to add a Christmas band as a small fun NPC. If the player gives them any drink or food, they’ll play a tune. (Obviously, if the players ignore the band, they get no tunes.) So far, so easy. But we also wanted to…
-

Testing for valid glyphs
We localise KOPI to many different languages, including traditional and simplified Chinese. As I was working through the Christmas edition, I happily typed in “Christmas” in the traditional script (聖誕節), saved everything, compiled the localised strings, and assumed that the simplified version (圣诞节) will also work. To my surprise, I…
-

Recording KOPI
We’re working on KOPI trailer, which needs a lot of in-game vide shots (yes, much more than we thought, there’s a pattern emerging!). The initial naive thoughts of just capturing game play of the two of us playing very quickly turned out to be completely insufficient: even at 4k, the…
-

Testing gameplay II
Continuing the previous–to paraphrase–“Testing is painful” post, we did everything we could to reduce this pain. Tests indeed aren’t easy, so we need to do all we can to reduce this pain & friction. In KOPI, we support local multiplayer for “couch mode”: if you plug in two controllers, and…
-

Testing gameplay I
Tests are crucial part of any system; tests help us make sure the code we ship works as intended. Ah yes… and yet, there are bugs left. And a lot of the times, it’s the players that discover the bugs: strange bugs; complicated and unexpected sequences of actions, leading to…
-

A few C++ tips
const_cast It is the case that const_cast can remove or add const ness to things. However, even if the const ness is removed, if an object is declared to be const in the first place, making any modifications to it remains undefined behaviour. Consider this code Here we use const_cast…
-

Fast local iterations
In case you didn’t notice, we’re building a game. The game of course runs “without any bugs 🫣” in the Unreal Editor, but it is necessary to test the game on various local devices as quickly as possible. We could use our CI/CD, but that is a touch slower: it…
-

Multiple local controllers II
In KOPI, we needed to implement couch co-op mode with multiple controllers all driving the game’s user interface using Unreal Engine’s CommonUI. All controllers should share the same focus, but a APlayerController should only be spawned for a controller that joins. To implement this kind of functionality without strange glitches,…
-

Dream on a Stick build environment
Ignoring the artwork side of things, game is a piece of software; and as serious engineers, we knew that we could not fall back into “it works on my machine”; or as is the case may be in Unreal Engine, “works on my machine in the Unreal Editor”. We needed…
-

Kopi is going to Yorkshire
We are super pleased to announce that we’re going to be attending and demoing at the GaYaMo #22 event in Tileyard North on 23rd May. So, we will be bringing the latest and greatest build of Kopi for everyone to enjoy. Prepare yourselves for lots of organised chaos and fun!…