How One D&D City Map Took Over 12 Sessions of My Campaign
I prepped 4 districts for a throwaway port city. Three months later my players refused to leave. How one D&D city map became the center of my entire campaign.
Session 26 of the Shattered Coast. The party needed a port city to book passage to the Shard Isles. I had 90 seconds to generate a D&D city map that would hold together for at least one session.
I typed "bustling harbor city with docks district, old town quarter, cliffside noble estates, and a central market square" into the city map generator and got back a map that looked like it belonged in a worldbuilding sourcebook.
I named it Driftholm. I gave it 4 districts. I planned to spend one session there.
That was 12 sessions ago.

The 4-District Framework
Here's the thing about D&D city maps: you don't need 40 named districts. You need 4.
Consider how a city actually works in play. Your players don't explore randomly. They go where the quest leads, where they can buy and sell things, where they sleep, and where they get into trouble. Four districts covers all of that.
For Driftholm, I mapped:
- The Docks — where ships arrive, goods get loaded, and smugglers operate after dark
- Saltmere Market — the commercial center with taverns, guild halls, and the place where information trades hands faster than coin
- Old Town — narrow stone streets, the temple district, residential blocks
- Cliff Quarter — noble estates perched on the high ground, the harbormaster's manor, sweeping views of the entire port
That's it. No sewer network. No detailed street layout for the fishing village on the outskirts. No underground catacombs.
I borrowed this thinking from Jane Jacobs — specifically her idea in The Death and Life of Great American Cities that a neighborhood needs only 4 things to function: mixed uses, short blocks, varied building ages, and density. Translate that to D&D: a city district needs a primary function (what happens there), a sensory anchor (what it looks, sounds, and smells like), a key NPC, and one secret.
Four districts. Four NPCs. Four secrets. That's a city.
What Happened at Session 26
The plan: dock, resupply, book passage to the Shard Isles, leave.
What actually happened: Jess's rogue went to the Docks to find a ship. I described a row of warehouses with obsidian dust on the loading dock — a detail I improvised because the Shattered Coast uses obsidian shards as currency. Jess asked, "Why is there raw obsidian at a shipping port? Isn't that like seeing raw gold piled up at a FedEx warehouse?"
One question. That's all it took.
By session 27, the party had staked out the warehouse. By session 28, they'd met Sergeant Varek — a border guard I prepped in 4 lines (gruff voice, short sentences, burn scar on his left hand, secretly taking bribes from a smuggling ring). By session 30, they'd uncovered that a dwarven mining cartel on the Shard Isles was funneling obsidian-laced weapons through Driftholm's docks.
None of this was in my original session plan. All of it emerged from 4 districts and one player asking the right question.
I've run 340 sessions across 8 years and 4 different groups. The campaigns where players drove the story hardest were always the ones where I gave them a physical space to reason about — a D&D city map they could point at and say "we go there." Abstract descriptions invite passive play. Maps invite planning.
The Driftholm city map — 4 districts, 90 seconds of generation, 12 sessions of gameplay so far.
Why 4 Districts Works (The Iceberg Principle)
Brandon Sanderson talks about the "iceberg" approach to worldbuilding in his BYU creative writing lectures: show 10% of your world, imply the other 90%. The audience fills in the rest — and their version is always richer than anything you could write.
The same principle applies to D&D city maps.
When I generated Driftholm's city map, it showed winding streets, clustered buildings, a harbor crowded with ships, and elevated terrain for the noble quarter. My players looked at it and immediately started asking questions I hadn't prepared for:
- "What's that building at the end of the main dock? Is that a customs house?"
- "Are there any ships flying the Kethranor flag?"
- "The cliff district looks isolated. Is there only one road up?"
I improvised answers to all of them. The customs house became a story location. The Kethranor ship became a clue pointing to the missing cleric thread. The single road up the cliff became a tactical consideration 4 sessions later when the party needed to confront the harbormaster.
The map generated implications I never designed.
That's the iceberg working.
The Session 34 Moment
The arc peaked at session 34. The party had mapped out the entire smuggling operation on a whiteboard in my living room — not my whiteboard, their whiteboard. They'd drawn lines between NPCs, marked patrol routes on the city map I'd printed at the local shop ($1.50, engineering B&W, same process I use for all my printed maps), and color-coded which warehouses were legitimate.
Marcus's fighter wanted to storm the docks head-on. Jess's rogue wanted to turn Sergeant Varek into an informant. Dan's wizard — who normally forgets to prepare spells — had specifically prepped Invisibility and Detect Magic for the warehouse infiltration.
When your players bring a whiteboard to your house, the city is working.
That moment didn't come from elaborate prep. It came from the fact that 4 districts gave them enough structure to build a mental model. They knew where things were, which meant they could plan around geography. A vague description of "a port city" doesn't give players anything to grasp. A D&D city map with 4 labeled districts gives them a chessboard.
What I'd Do Differently
If I could restart the Driftholm arc, 3 things would change.
I'd generate 3 map variants, not 1. I generated one city map and used it for 12 sessions. By session 35, I wished I had a zoomed-in version of the Docks for the warehouse infiltration. I ended up generating one mid-campaign, and the visual style didn't quite match. The city map generator makes this trivial — 90 seconds per variant — so next time I'll generate an overview AND a district-level closeup before the first session.
I'd prep district NPCs from the start. I had Sergeant Varek at the Docks, but the other 3 districts had no named NPCs until the players visited them. Old Town's temple keeper got improvised at the table and ended up with a contradictory backstory because I forgot what I said 2 sessions earlier. Four NPCs. Write them before session 1.
I'd track district reputation. By session 32, the party had burned a warehouse in the Docks. That should have affected how every Docks NPC treated them. I didn't track it, so consequences felt inconsistent. Now I keep a simple table:
District | Reputation | Why
Docks | Hostile | Burned the Red Sail warehouse
Market | Friendly | Exposed the poisoned grain shipment
Old Town | Neutral | Haven't caused trouble (yet)
Cliff Q. | Wary | Asking too many questions about the harbormaster
Three columns. Updated after each session. Takes 30 seconds.
The Broader Principle
The question to ask is not "how detailed should my city be?" The question is "how many entry points does my city give the players?"
A city with 40 detailed buildings but one storyline is less interactive than a city with 4 districts and a secret in each one. Complexity doesn't come from detail. It comes from interconnection — when the smuggling ring in the Docks connects to the bribes at the Cliff Quarter which connects to the weapon shipments that trace back to the Shard Isles.
That's systemic city design. You don't need more districts. You need more connections between the districts you have.
Mike Shea's advice on designing fantastic locations pushes the same direction: a location needs a name, 3 notable aspects, and a secret. I scale that to 4 districts — each one is a "fantastic location." Together, they form a city that feels alive without requiring a 40-page gazetteer. A r/DMAcademy thread on city prep repeats this advice from a dozen DMs: prep what the players will touch, and imply the rest.
Not every D&D city map needs to be a walled capital — but when it is, the same 4-district framework applies. The districts just get bigger.
Build Your D&D City Map in 4 Steps
If you're building a city for your campaign, start here:
- Name 4 districts. Give each a function. Docks, market, residential, and power center is a solid default — but swap based on your setting. An underground dark elf city might have Fungal Farms, Spider Warrens, the Obsidian Bazaar, and the Matron's Spire.
- Generate a city map. Use the city map generator to get a visual in under 2 minutes. The AI-generated map will add details you didn't plan — and those details become story hooks.
- Give each district 1 NPC and 1 secret. That's 4 NPCs and 4 secrets. Enough for 3-5 sessions of city-based play.
- Let the players connect the dots. Your job is to place the pieces. Their job is to build the conspiracy board.
I've used this same principle for building entire fantasy worlds in 3 hours — it scales. A world needs 4-5 kingdoms. A kingdom needs 3-4 cities. A city needs 4 districts. The number 4 keeps coming back because it's the smallest set that creates meaningful contrast.
Driftholm was supposed to be a rest stop. 47 sessions into the Shattered Coast campaign, it's the city my players mention most — and Jess is still chasing that smuggling ring.
Not bad for 90 seconds.
Related Reading
- Fantasy City Map Generator — The city map generation workflow in detail.
- I Built a Fantasy World in 3 Hours — The 4-district principle applied at the world scale.
- What I Prep Before Every D&D Session — The 90-minute framework that includes city prep.
- City Map Generator — The tool I used to generate Driftholm.
- D&D Map Generator — For all map types, not just cities.
- Medieval Village Layout: What Real History Teaches DMs — For when a village threatens to take over your campaign too.
- Building a Kingdom Map From One City Outward — The controlled version: expanding from city to kingdom deliberately.
Written by
Toby
Indie Developer & Creator of FantasyGen
Toby is an independent developer focused on building AI-powered creative tools. He created FantasyGen to help game masters and worldbuilders generate fantasy maps instantly — no artistic skills required.
Continue the Campaign
5 Districts Every Fantasy City Map Needs (and 2 I Forget)
After mapping 15 cities across 3 campaigns, I always start with the same 5 districts. The 2 I forget — undercity and tent slums — end up mattering most.
How to Stock a Hex Crawl With 12 Cities in Under an Hour
A step-by-step workflow for stocking a hex crawl with 12 cities using a random city generator. I prepped the entire Shattered Coast map in 45 minutes flat.
Island Map Design: Coastlines, Secrets, and Why Shape Matters
A 5-step island generator workflow: shape the silhouette, carve coastline features, place harbors, and hide secrets. Design your island map from the outside in.