Aug 20, 2026 - How RTS Games Solve Information Overload

Comments

RTS UI collage

For the past few years I’ve been working on reverse engineering and remaking an almost 40 year old DOS game. Despite its age, I’m often surprised by the complexity and little tricks the game used, one of which is sound priority.

Here’s the deal: the game, Crystal Caves, uses PC speaker audio, an extremely primitive, single-channel technology that was mostly used for simple beeps and boops. In practice this meant you could only play one sound at a time. So what happens if two sound-emitting events happen together, like jumping while a rocket hits an enemy?

Well, every sound in Crystal Caves has a priority field, a number representing its relative importance. A sound will interrupt another that’s already playing only if its priority is higher. Simple and effective, and the player barely notices that only one sound is playing at a time.

Fast forward to 2006’s Company of Heroes, an RTS that boasts 128 “voices” (depending on game settings), and many sound emitters: infantry rifle cracks, tracked vehicle rumbles, unit shouts, distant artillery rumbles, rocket screeches, all on top of music and UI noises. With dozens of units possible onscreen and more offscreen, this can easily become an overwhelming cacophony, and yet the game’s audio is designed so that the player never misses the most important audio cues.

There’s an entire field of study on how this is made possible.

Read more

May 21, 2026 - Nutritious Games

Comments

When I was very young I, like many kids, thought subjects like history were dull and impenetrable. A series of meaningless dates and events to memorise for the sake of writing history reports. But by the time I was a young adult my attitude had done a 180 - I was a full blown history nerd, thinking about empires, battles, revolutions and more. I was hooked.

At the start of every obsession there was a gateway drug, and mine was video games. Specifically, games like Age of Empires, Civilization and Total War not only had heavy historical inspiration to draw you into the source material, the voluminous flavour text means you’re constantly teased into sinking further into the rabbit hole of learning more. The Civilopedia and Age of Empires’ History section contain books’ worth of information. I remember the exact moment I crossed the point of no return, when one evening, instead of playing the game, I spent hours reading about the Britons and their longbowmen in the Hundred Years War.

Civ I rifleman

Some games are more than mere entertainment, they leave you with lasting knowledge and inspiration that compounds over time, helping you grow as a person. So not just empty calories, they are nutritious games.

On the other hand, there’s a strain of thought on games that goes like this:

Read more

Jan 24, 2026 - Easy Backward Compatibility

Comments

This one’s a practical coding article, one that I haven’t done in quite a while. It’s something I’ve come across often over the years so I’ve always wanted to have an article to point people to, so here it is.

Here’s the premise: you’re making a game (or really any program) that reads data, whether that’s game data, config files, save files and so on. When these files get extended (like adding new fields or even changing the meaning of existing fields), you want the old files to still be usable, and not be made obsolete. This is backward compatibility, and it’s great to have.

A common misperception is that backward compatibility is always hard. Understandable since we often hear about vendors breaking it, or when vendors do provide it, it’s made a big deal out of (e.g. when Sony fans tout that new PlayStation consoles can play previous gen games, or when Microsoft fans tout the legendary backward compatibility of Windows). Maintaining backward compatibility for complex systems is indeed hard, but when we’re talking about simple config or data files, it’s surprisingly easy. Even novice programmers can do it, in fact.

PlayStation backward compatibility chart

Read more

Dec 25, 2025 - Timeless Games

Comments

The games industry is famously tough and insecure to be in, as it is hit-driven: rush the right game to market at the right moment and you can rake in the big bucks as your game becomes the current cultural phenomenon, or miss it and die in ignominy. This leads to a bunch of pathologies: the persistence of crunch, rushing to hit key sales dates, or to beat a competitor (or avoid being beaten), constantly chasing trends in tech or fickle tastes in the latest hot game genre. No wonder so many people keep burning out.

Timeless games collage

As a hobbyist, the odds are even more stacked, as you have limited time and energy to chase trends, so making a hit is literally winning the lottery. There’s got to be a better way: don’t make games that quickly go out of date, make games that will be fun even if they are late, that stand the test of time. Make timeless games.

Which Games Become Outdated Easily

Before answering what games are “timeless”, let’s rule out what kind of games we definitely don’t want to make:

  • Flashy tech
  • What’s trendy right now
  • Games that big studios are making
  • Games that a lot of people want to make

That is, avoid relying on novelty and in crowded competitive spaces.

Read more

Oct 15, 2025 - Great Music Done Poorly

Comments

There are few experiences where the situation is so incongruent that you are left utterly speechless at the absurdity of it all, your mind incapable of processing what just happened, after feebly trying to search for an explanation. One of these is the soundtrack for Resident Evil: Director’s Cut DualShock’s Mansion Basement:

A survival horror game should have music that sets a creepy ambience, but this track has fans baffled, variously describing it as “clowns farting”, “Charlie Brown gets in trouble”, or “trombones falling down the stairs”.

One interesting theory is that the MIDI instruments got messed up in this track; here’s the same with the instruments “corrected”, the difference is night-and-day (skip ahead a bit):

Read more