Go full Rogue, or go home. That’s always been my take on procedural content generation in games. Naturally then the recent slew of games that call upon the holy name of roguelike, when they’re actually just randomizing some small amount of variables in an otherwise largely designed game, enrages and annoys.

I had to revise my opinion when I made one of those games, and embraced hybrid procedural generation, of course. But I still won’t say roguelike.

One of our soon-to-be-released titles, Salvage Heroes, features procedurally generated levels. The game itself is a horizontal scroller in which the player must reach the bottom of large levels to retrieve a humorously named artefact. Finding myself in possession of the artistic talents of a slightly mouldy piece of concrete, and lacking the funds to hire a thousand artists for a thousand years, it was clear early in the game’s development cycle that we’d have to resort to procedural variety over cleverly designed, unique set pieces.

The game’s original prototype featured a ball in a completely randomly generated level. The ball could not stop rolling once it started going, and the goal of the game was to score as many points as possible. We could not, however, come up with a coherent packaging for the scoring system, much as the basic gameplay was fun. Eventually, one iteration at a time, Salvage Heroes – a fast-paced game about future archaeologists for hire emerged from the prototype, and it had a lot of gameplay elements.

Deadly tiles, mined tiles, walls you could break through and walls you couldn’t break through. Walls covered with spikes and timed doors that opened at set or random intervals. The procedural generator started becoming heavier and heavier. Unbreakable walls had to check the previous and next floors to make sure there’d be a path down, and of course they could not occur at the edges of the level and so on.

It wasn’t long before we noticed that random doesn’t produce complexity very well. Not the kind of complexity we were after, in any case. Once all restrictions to ensure proper gameplay were put into place, the generator ended up gravitating towards three or four fixed options, with some more variation thrown in for long term tests (over 50 games), but never enough for the casual gamer to notice.

Roguelike-ness had failed us – mostly because the game didn’t hold the kind of complexity required to make a procedural generator shine. Designed levels were out of the question since we don’t have the manpower or ability to produce a sufficient number of levels this century.

Eventually, after some adventures in tile-based level generation, we turned to a hybrid system that mixes pre-designed gameplay “chunks”. Each section of the game is designed to be resolved in multiple ways, and contains at least one gameplay element, placed in a way to provide a specific challenge that random generation could not have provided without being wholly scripted.

Several chunks are randomly selected and loaded, and then strung together to form the level. In between chunks, to keep things interesting, we insert some completely randomly generated floors. Because all complex gameplay elements have been removed from random generation, the challenges offered by these segments are primal, and harsh, and fun: it’s just coins and missing platforms and deadly bundles of electrified wires.

Figure 1: scientific proof that full, unfettered randomization simply leads to messy, grey clouds of nothing.


Figure 2: scientific proof that within the proper framework, and with good balancing, randomization can lead to awesome results.

The result is something that no sane man would consider roguelike, but that contains many of the supposed elements of dungeon crawlers: randomized rooms, random passages between them, a final, at first unattainable goal at the end of your journey, but because we have self respect, we’re not using the word roguelike to describe it.

By a route that tried to avoid that kind of setup desperately, we ended up making a game that embraces randomization, and we learned a few lessons down the way. The first is that pure randomization is just uncontrollable chaos, and the second is that randomization within the framework of a tightly designed gameplay experience can provide endless amounts of fun, if one is willing to make some room for it in his life and game designs.