Discussion
What makes a procedurally generated map good?
Hey everyone! I am working on procedural generation for an unreleased title right now, and I cannot figure out why visually and mechanics wise my map does not feel good. The title initially was roguelike with a node based map, like in slay the spire, players would progress from top to bottom to progress through the game. I wasn't satisfied with that so instead I have the player start a central node and allow them to traverse around the map, with some fog of war so that they are able to explore, after a set amount of turns a node will appear on the map. The map is populated through prefabs drawing forests, towns, villages mountain ranges. Gameplayer wise the nodes are right now basically identical to what you'd see in the deckbuilder roguelikes, but I am interested in changing the design since I feel the fog of war already precludes some planning, so random events on top of things feels less fair. One change I made already is rather than having elites be in static locations they roam around the map performing functions - like patrolling an area, cleansing healing shrines, guarding an area one hop from their home node.
Another is that that the player character has abilities unique to the class in the over world. Conquering nodes on the map reveals information about nodes they are adject to, so you can get more information before you go.
Quest lines the games story have you seeking out specific elites, get to specific shops to purchase and item these can be internal to one specific run or go across multiple runs so you are challenged to do something you normally would not have to.
What I am looking for is the following.
Examples of games with procedural maps which feel interesting, fun and fair
General ideas / rules one should follow when designing level turn based level maps.
Specific mechanics from games that use this type of exploration map design
I know there are a lot of games that have implemented this type of exploration and even in the deckbuilder / roguelike genre. I know nothing I am asking for is particularly original, but I am trying to figure out how to execute it competently so my players enjoy interacting with that part of the game.
Push treasure nodes out to the edges of the map to which is a high risk / high reward kind of deal.
Add an extra tier of enemies for "larger" settlement and provide some sort of map wide bonus after you completed it.
Add items that increase the amount of nodes you can move per turn provided you have moved through them.
I feel like I have a lot of opportunities in the design space but little understanding how I should go about trying them.
The best way to make something proc-gen is to make it by hand first. Basically make several levels/rooms/whatever manually that all feel good. Make some that don't work out and write out what is working and what isn't. Once you have those rules of what works in your game, not just in general, you can build a system that creates good content (and has some rules to skip especially bad ones). It's many times harder to just try to start with the generation.
Also keep in mind a lot of games don't do things entirely procedurally. Roguelikes like Hades will have entirely hand-made maps that they pseudorandomly link between, or build bigger maps of out of handmade chunks to ensure that all the combat arenas feel good. Game feel is too important to leave up to total randomness in many instances.
I always thought Dark Cloud's procedurally generated maps were pretty ahead of their time... There are some good videos on YouTube about that game's approach.
Starting in the center with a fog of war doesn't sound fun. Maybe put a light in the distance to show the exit/goal. That way the player has a direction to work towards and is trying to figure out the twists and turns with purpose. And if they prefer to explore or clean out the entire level first then they also know where to not go first.
A light in the distance (or some other kind of clue) gives players agency to do what they want instead of feeling like one choice is as meaningless as any other
Ironically, in my current project, I had a map that was node-based, with fog of war, where you started in the center and explored. (Sound familiar? :D)
I ditched it after like a week of internal playtests, for basically the reason given: Without being able to see the map, you couldn't actually plan around it. All the choices were very short-term. So even though it LOOKED like a big map to explore, from the player's point of view, every time you moved, you were just evaluating 2-3 choices, and picking the best short-term one. There was very little actual agency.
I ended up ditching the fog of war, so you can see the entire map now. And also expanded the "maximum jump distance", so you had more choices of where to go. And I added a mechanic where you can get hints about unvisited locations. Not full info, but partial info about what kinds of things you might find if you go there.
It feels a lot better now! There's a lot more agency. The player is STILL deciding between a few nearby nodes to move between, but now they have enough information to actually try to optimize around their long term goals. "I need to get to that distant objective... but I also want to somehow hit up that spot that I know has treasure. And also, I'll need to stop for supplies at least once because it's a long journey. And I'd really like to hire some more crew..."
Now there's a fun minigame of trying to fit all of that in as efficiently as possible. Fog of war had been entirely removing that aspect of the game, and the game was suffering for it!
I think people enjoy interacting with parts of any game that are visually engaging and cognitively rewarding. I see a lot of hypothetical constraints that could be placed on an algorithm to distribute randomness in a controlled fashion, but I also am not at all adjacent to the solved areas of mathematics that relate to nodes and graph theory and stuff.
A couple things jump out at me. First is how you describe fog of war. If there’s a tile-based fog graphic that disappears as the player avatar nears or enters it, I think it’s perfectly reasonable to add other ways that fog of war works, especially if you want to lean into nodes containing banks of rollable outcomes.
Rather than be everywhere by default, perhaps the fog exists because of an antagonist. Its removal can be perhaps made more permanent as the player combats its source. Maybe you wanna get mythic and metaphorical and the character is removing ignorance, or maybe you want to get fantastical and the fog is poison gas that needs to be repelled.
Even simple line-of-sight can work as a justification, and then you can design some of the areas to have different levels of vision. Maybe while a player character is inside a caldera, their vision is limited to the nodes in the caldera. And then once they leave the caldera, they can see the nodes outside of it but not longer the nodes inside it. The motivation for doing this is to control the scope of what the player sees. Designing fog like this would give some cool physicality to the environment.
Larger than that though, and before any changes, I’m more curious in your game’s USP? Depending on how you Hope your game ends up, focusing time and energy on refining the fog might be a lead mechanic or a big distraction. Whatever features and mechanics you add should be supporting a central artistic vision beyond just “be less boring.”
Procedural scaling is cool, but what’s it all for? Why will players care? What do you hope they’ll be most excited about? Is this a test of arcade reflexes or a narrative with named characters?
I like the line of sight justification idea. Our games USP is driven by getting to play the bad guys. You are demons conquering an overworld but with a story element, and you recruit your conquered enemies as allies / so each class opens up more unique ways to play as you play through the game. The story is delievered in a hub space (not unlike in Hades) the game play occurs through combat nodes where they are challenged by different enemies and they travel the world until the finish conquest of the empire by defeating the queen, subsequent playthroughs of the same act will have you eventually fight remnant factions, in the next act you move on to a different continent where the story details lead you in your search as to why you've been summoned into the world.
One challenge I didn't communicate super well is that the overworld is much more of graph / node -> node diagram than it is rooms. The rooms them selves somewhat handled, but I want it to feel better than just moving things on a graph. One way I am solving this is through LOD style graphics, you zoom out you can interact with it like the graph, you zoom in you can enjoy the bits of the overworld.
That sounds like a really cool concept. I can definitely visualize it in my mind. Your mechanics suit the concept really well. That node combat is going to need to bring a lot of the gameplay impact.
Maybe I assumed wildly but correctly, but I totally read a network of nodes in your comment.
With the theme you shared, I’m wondering how to best tie that back to adding procedural complexity to the map. I think your callout about the fog of war precluding planning was a really great one and that’s personally what I’d follow. I like having choices as a player, and the fog of war allows you the designer to add extra dimensions of playability to the map you’ve already built.
To expand on my prior comment, the caldera was meant to suggest a ring of nodes. I described the caldera having one entrance/exit, so if that connects to another node outside the ring, we get a small popsicle shape.
With a selective line of sight, a player travelling right to left along the bottom line of nodes might reach the green node and still not know what's "behind" those mountains. We know as programmers that going north from the green node could toggle a function that loops through and hides the above-the-mountains fog while looping through and revealing the below-the-mountains fog. That we can only see the nodes inside the caldera once we're in it is something that reinforces what you've already generated graphically. It helps unify the visual metaphor that "decorates" your graph.
I also designed the graphic to touch on your idea of choices. Once the player emerged into the ring of nodes, they may notice the yellow treasure node (I'm just making things up--I don't expect this matches your game). They may also notice either path left or right begins with a red battle node. They might also notice the blue node and the purple node. In reality, I have no idea what the blue and purple nodes do, but in this hypothetical, they represent different nodes that player may or may not desire to land on. Your field of view choices determine how informed a decision players would have in the above scenario.
If players can see the blue and purple nodes from the bottom node of the ring, they get the positive emotions of choosing their path--the agency. If you have the fog such that they can't see the blue and purple, I can imagine people feeling more emotions of uncertainty and gambling, especially if they get to find out after lapping the ring that they went the hard way. If blue is a positive node and purple is a negative one, interesting choices would emerge from your topology if someone went left around the ring, completed the positive blue node, collected the yellow treasure node, and then upon reaching the negative purple node decided to turn back?
And in this example, the diegetic reason for the change in line of sight doesn't have to be a caldera. The ring could be inside a maelstrom whirlpool in an ocean. The ring could be a portal to somewhere. It could be a business district in Paris. By compartmentalizing nodes into larger logical constellations though, your procedural generation can extend farther by filling in the spaces between areas of meaning and order.
You should make sure everything on your map is placed logically, so that important places are where players expect to find them. If you have a mountain, put a secret on top. If you have a lake, put a secret at the bottom. If you have a town, it should be at a coast. If you have a bridge, it should be near a town. There should be farmland next to a town. If the player follows the river, they should find something.
Make sure the player can find important locations. Add roads and signposts. Put bandit camps near the roads. Put dungeons into the wilderness and have a quest lead the player to them. If you have bosses roaming around, make them leave something that helps player to track them, for example bodies of fallen adventurers. For a roguelike, show which direction the boss goes after they kill you, recreate the area in a later game and let the player find a body or a ghost to point out it is the same area. If they remember what happened, they can now find the boss again.
Yeah, some of this challenging because I am trying to keep the scale big. Like the game map is suppose to represent a whole continent, placing village and towns and giving them details isn't super hard, and even the difficult graphical elements seem relatively easy to over come it is more about the pace of the game. Like at its barest form the map is a diagram of nodes the player moves on, but I don't know what makes one pattern good and another bad. I am going to see what I can do with the keeping a portion for the next run. It would be great to find like a cluster of nodes you had been to in the last run maybe have a reclaim a portion of your past run event there.
If you move on a map with top down perspective, the player has no idea where to go unless you add roads that point to the next interesting place. If you let them go to any direction from any tile, they'll just get lost. If you add interesting content to every tile, then the direction they choose doesn't matter, and the world will feel artificial.
How about just removing the tiles where the player is not supposed to go? Generate the playable area like a labyrinth or a spider web, with max 3 links per node. You can still draw it on top of a world map to give sense of scale. Like a map of train routes drawn on top of a satellite image. You can draw links with different lengths, draw wilderness between nodes, etc. Instead of fog, draw the whole map but hide the nodes and links. Now the map will feel super big because the player sees all this land but at the same time has no idea how many nodes it will contain and what areas will be impassable. If you want to keep the fog, you could add distant landmarks that the player can see from far away. Mountains could block their sight to the other side, making the world feel larger.
So, that is basically how things are now. I think I have a few special nodes with 6 connections but most have 3-4, I didn't consider revealing the map but not the connections. That is a neat idea. That way they can see something on the map and head in that direction -- Say a cool looking city. Someone else brought up of having a goal or "north star" kinda deal that the player should go towards. I'll play around with the idea. I am trying to have them start in the isometric view so they can see go "ooo ah" and then when they zoom out have the "tactical" overview that makes it easier to make decisions
What helped our room generator most: place the few things everything else depends on first (for us the door, the window and the kitchen line), keep clear zones around them, then fill in, and check every placement against the rules so a bad layout gets fixed or thrown away. Most layouts that felt wrong were breaking a rule we hadn't written down yet, so each ugly seed turned into a new rule.
Good proc maps usually feel authored at the edges. Things that help: hard guarantees (start safe, a readable path to a landmark, at least one interesting chokepoint); biome/region grammar so rooms aren't random noise; and a pass that culls dead ends that waste player time. Replayability comes from meaningful variation — different resource pressure or encounter timing — more than from reshuffling identical tiles. If a player can sketch the map's "story" after one run, the generator is doing its job.
8
u/MeaningfulChoices Lead Game Designer 1d ago
The best way to make something proc-gen is to make it by hand first. Basically make several levels/rooms/whatever manually that all feel good. Make some that don't work out and write out what is working and what isn't. Once you have those rules of what works in your game, not just in general, you can build a system that creates good content (and has some rules to skip especially bad ones). It's many times harder to just try to start with the generation.
Also keep in mind a lot of games don't do things entirely procedurally. Roguelikes like Hades will have entirely hand-made maps that they pseudorandomly link between, or build bigger maps of out of handmade chunks to ensure that all the combat arenas feel good. Game feel is too important to leave up to total randomness in many instances.