To Graph or Not to Graph

When I started working this time around on Infinite Storyes, I knew I wanted to simplify the world representation. Earlier incarnations had an overworld map, no matter how simplified - think Mount and Blade: Bannerlord for the 3D type, or Unreal World for the 2D one. In these games, you explore a vast place, the size of a small country, on a zoomed-out overworld map, but have interactions with very local things - a village, a person, on a zoomed-in map.

https://cdn.taleworlds.com/static/screenshots/1920x1080/mnb-ii-b-06.jpg
Overworld map in Bannerlord

The overworld map, open-world games’ salvation

The alternative to this is of course to make every movement on a zoomed-in location, which has been of course how open-worlds game have been mainly designed for quite some time now. Note that it forces you to shrink the world to a reasonable size, which is done mostly in two ways.

You can decide to restrict the map to a small section of a much bigger world. Kingdom Come: Deliverance, where the towns and places feel far apart enough for their respective sizes, and the number of inhabitants feels relatively sensible - although a clear lack of peasants.

Or you can keep the big world you want your story to take place in, but you shrink everything in it. Take Skyrim, where the capital city of the whole country has around 60 inhabitants - that’s a hamlet, not a city. I know that knowing how many people actually lived in the past is not easy, but Skyrim misses the mark so wildly that, for me, it is hard to take the story seriously.

In any case, restricting your world space limits the scope of a story you can tell in it. Kingdom Come manages to tell a riveting local story, with global implications in the country, but you can not tell The Lord of the Rings in such a small province. These sort of stories need space, need the travelling, need the armies - and I’m not speaking about Skyrim-sized armies.

Adding an overworld map solves this issue by having two separate scales. You can represent travelling long distances without forcing the player to sit for IRL days trotting on a horse, you can represent a whole world and only show the details for the interesting parts.

The graph, a simplified overworld map

But building an interesting overworld map is tricky. In my case, I can’t afford to handcraft it, that would defeat the purpose of infinite replayability. Once you, the player, know the map, your character has an unfair advantage over the other characters.

Building a procedural overworld map, with generated places, a rich history, dynamic civilizations, is certainly possible but after a few aborted attempts, I realized that this would be a huge undertaking, and more importantly, not strictly beneficial for the game I want to create. It puts an emphasis on emergent gameplay based on a intricate simulation, with the distinct possibility that no interesting story emerges. I want to reverse this, and make a simulation serve the story.

https://clan.akamai.steamstatic.com/images//34693670/4b1db11b318053e891f85d27a0a380738a5fd206.png
The MVP of procgen worlds: Dwarf Fortress

This is where I thought about simply using a graph to represent the world beneath. In essence, when travelling, you only really need to know what places you can reach from where you’re standing currently - and through which points you should pass to reach your destination. What happens in between is the meat of the story, obviously, but the choices made for the journey depend on the lay of the land.

In a way, a graph is an overworld map pushed to it’s logical conclusion, only showing the relevant locations as nodes and their connections as edges. A prime example of its usage is Slay the Spire, a roguelike card-game - you climb ever higher in a tower, the titular Spire, following along a graph that always ends up in a big boss fight, for each of the three acts.

/slay-the-spire-map.png
Slay the Spire example map

The one criticism I have with this system is that you get perfect information - you know exactly where each step will take you, and can plan your move throughout a whole act. This also does not sit right for Infinite Storyes, as if characters always had perfect information on which path to take, where monsters are, they would likely not encounter some of the most interesting parts of a story.

That’s the reason why I intend to represent the graph information through the travel screen , to limit what the player/character can see ahead. In addition of making it less dry to look at, it also hides crucial information, leaving tough choices to make without being sure of the consequences - and as a side-effect, leaving the underlying storytelling system some wiggle room to fudge the next steps to better tell the intended story.


Next time we will look at my struggles for generating the graph, but more crucially, laying it out. I will share my different attempts, and my current working solution. In the meantime, keep creating!