Why

An early access game with no server

Radical Heights went into early access in April 2018, a battle royale dressed up as an '80s game show, from Boss Key Productions. You rode BMX bikes, banked your cash at an ATM between matches and kept ahead of a play area that shut down one grid square at a time. A month after launch, Boss Key closed. The servers ran on for a while, then went off for good.

If you still have the game, it runs fine right up to the login screen and stops there, because everything it tries to reach is gone. It was never finished, but what's there works. It only needs a server to talk to.

So that was the job I set myself. Work out exactly what the game expects from a server, then build one.

The method

Understand first, then build

Here are the seven steps in the order they happened. Building comes sixth, because everything before it is there to make sure what I build is right.

  1. Line up the engine

    The game runs on Unreal Engine, and the engine's code for that version is public, so I built my own copy to compare the game against.

  2. Read the code

    I read through the game's program and worked out what each part does, noting where each answer came from.

  3. Read the data

    I read the game's tables, settings, maps and menus.

  4. Write the contract

    I wrote down every call the game makes to a server, and what it expects back, in one document.

  5. Check it live

    I ran the real game and watched what it actually sends, to settle whatever reading alone couldn't.

  6. Build

    I built the launcher, the mod and the server one piece of the contestant's journey at a time, starting with sign in, then the menus, then a match.

  7. Go on air

    I packaged it, checked it over, and put it out here and on the Discord.

Curious about a step? Ask me on the Discord.

Reading the code

Reading a game without its source code

There's no source code for Radical Heights, so I worked from the program itself and the data files that came with it. Games built on Unreal Engine carry the names of their own classes, functions and settings inside them, because the engine needs those names while the game runs, so there was a lot to go on.

The engine makes up half the program, and its code is public, so I built my own copy of the same version to compare against. The game's own half I read closely, piece by piece, writing down where every claim came from.

The contract

What the game expects

The game's menus are a web page running inside the game, so every request they make is written out in plain view, where it goes, what it sends and what it does with the answer. The rest of the game's calls, like asking for a match, sit in the program, and everything a match passes between players is spelled out in those same built-in names.

All of that went into one document I call the contract, and I built the server to it. Nothing went in until the game's own code confirmed it, and whatever reading couldn't settle I checked live against the real game.

The matches were the biggest gap. Boss Key never released a match server, and the parts of the game that would have run one were missing, so I put them back. Every match now runs on the game's own code, on my servers, in more than one region.

The result

What came out of it

For you

The launcher and the mod

They're two small programs. The launcher opens your copy of the game and connects it to the community server. The mod runs inside the game, switches off everything that used to talk to Steam and Boss Key, and carries the community fixes.

For everyone

The community server

One server does everything the old one did. You sign in, find your friends, get matched, bank your cash and shop the prize room there, and your stats and the news live there too. Beside it sit the match servers, in more than one region.

Help out

How you can help

Most of what keeps this going isn't code at all.

Break it and say so

Play it the whole way through, and when something goes wrong, post it on the Discord with your log, what you were doing and who was in the match.

Something broke? Tell me on the Discord.

Bring your mates

Some things only show up with real people in a match. The more of you in a lobby, the more of the show gets a workout.

Get them an invite code on the Discord.

Help with the bill

The community server has a monthly bill. Anything you put in on Ko-fi goes towards it.

Help out on Ko-fi.