Letting Go of Realism

By Guerric Haché (Twitter,Website)


The pitch is easy! Generate a complex world with dynamic societies, like what you’d find in Endless Legend, then play in it as a single character like you would in Skyrim.

That pitch is the last remotely easy thing about the idea. But, after generating worlds as a hobby for years, I’ve found some approaches slow me down more than others. One I think I’ve possibly just understood is the deceptively sensible pursuit of realism.

Intricate world generators have long amazed me — from plate tectonics and erosion to wind flow and temperature gradients, people put enormously impressive work into these things, and for many years I tried similar approaches to generating complex, interesting worlds for hypothetical RPG-like games.

But I was never satisfied with the results. Despite multiple layers of simulation, they felt generic, with ecological gradients smeared across large distances and no clear sense of distinct regions or places. Each little generator eventually suffocated under increasingly complex code that was difficult to maintain or debug, and I moved on. I enjoyed building generators, but why didn’t the results feel right?

I figured it out after a brief return to World of Warcraft in 2017. I hadn’t played since before Cataclysm radically altered Azeroth, so the leveling experience was wholly different. I spent a lot of time contemplating my emotional reaction to these changes to a world I had once loved, and something struck me.

Azeroth stops even pretending to realistic geology and climatology on any scale larger than what the player generally encounters on-screen. Zones are ludicrously segmented by rectangular mountain ranges, humidity and precipitation and rivers are slapped wherever convenient, and there’s very little gradation between ecological zones. And as I traverse that world, I don’t care — I love it. What matters is the player-scale; the zone’s unique combination of colours, art, music, narrative, and themes. Together, they create a sense of place and make the experience of exploring a new zone or town a distinct, compelling event.

Or did, before Cataclysm. The non-realistic, characterful world design of old Azeroth only became obvious to me as I parsed my viscerally negative reactions to world design post-Cataclysm. Cataclysm, it turns out, hacked away at zones’ individuality and grafted on generic lava and fire, generic Alliance-versus-Horde narratives, and generic militarized characters and architecture — the same generic stuff across multiple zones. That last part is key — aesthetic and narrative bleed between zones increased dramatically, making individual places feel less, well, individual.

What did this teach me about generating worlds? Two things. First, worry less about simulating reality; at player-scale, global realism counts for little. A RPG player primarily experiences individual places, not orbital world maps, so it’s individual places that need to be most interesting.

Second, worry more about differences and distinctions between places. Gradual, irregular gradients across dozens of kilometers may be realistic, but traversing them on foot won’t yield many memorable moments of suddenly being somewhere else. Contrast is a powerful tool for creating those moments, and for geography I’ve found two helpful principles for contrast: deliberate consistency within a region, and deliberate differences between regions.

My next generator takes these to heart, and I’m already happier and more confident in the results than I ever was designing simulationist generators. It divides the world into arbitrary zones, simulates climate and geology on a zone-level only, then works on reinforcing those two principles - internal consistency, external heterogeneity. Zone climate and geology are consistently applied within the zone, while the generator tries to ensure adjacent zones are different from one another.

I’ve achieved compelling results with - here’s the best news for a hobbyist - far less work than any previous approach. Any point in one region will be significantly different to a point in another region, and the code is easy to work with since there are no granular simulations. In fact, the workflow and results are so compelling I’m already moving to the next step - feeding these worlds into a functional 3D game with a controllable avatar.

Realism as a concept is often lionized, and its benefits can seem obvious from the orbital view of many map generators, but realism often isn’t the quality that actually brings us joy in games. Vanilla WoW’s world with its unique zones resonated with me, regardless of its rampant affronts against physical geography, because it created places and moments that made an aesthetic impact.

So that’s the idea I’d like to leave you with. In addition to real-world counterparts to thing you’re generating, take some time to consider the gameplay experience you want your procedural content to support. Play the experience you want to generate, then ask yourself what makes that experience special, and try to grasp those qualities algorithmically. You might just find a new angle for tackling your own outrageous procgen ideas.