Blog
Why AI battlemaps look wrong (and how to actually fix it)
Ask an image model for a battlemap and you’ll get something back fast, confident, and probably unusable. Not because the model is bad at painting — because a battlemap isn’t really a painting. It’s a floor plan wearing a paint job, and floor plans have to be correct in ways a pretty picture doesn’t. A regular image model has no idea that’s the assignment.
The failure modes repeat, almost identically, across every prompt-to-image tool. Here’s the taxonomy, and why each one happens.
Melted room boundaries
The tell is easy to spot once you know to look for it: walls that bow, blur, or dissolve straight into the floor, or two rooms that are supposed to share a wall but visually bleed into one open space. Look closely at a lot of AI battlemaps and you’ll notice the “walls” are really just a suggestion — a slightly darker line that gives up the moment the model gets distracted by something more interesting to paint nearby.
This happens because a diffusion model paints an entire canvas at once, with attention spread softly across every pixel. It has no built-in notion that “this rectangle is a sealed room” — unless something outside the prompt enforces that boundary, the model is free to let it drift.
Doors that go nowhere
A gorgeous door, painted into a blank wall. A hallway that dead-ends for no structural reason. Occasionally, stairs leading to a second floor that the rest of the map doesn’t have. These aren’t rare glitches; they’re close to the default behavior, because an image model treats a door as a visual motif, not a passage. It paints doors because rooms “look like rooms” with doors in them — it isn’t tracking what’s actually supposed to be on the other side, because nothing told it there’s a “other side” to track.
Decorative grid lines at the wrong scale
Overlay a five-foot grid onto a room where a human-sized bed needs three squares to fit, and you’ve got a map that’s lying to your players about how much space they have to maneuver. This one’s almost always a post-processing problem: the grid gets stamped onto the finished image afterward, with no connection to how many actual feet the room measures. The model never worked in feet to begin with — it worked in “a plausible-looking room.”
One texture soup
Open a twenty-room AI-generated dungeon and count the distinct floor materials. Often it’s one — the same weathered flagstone in the crypt, the kitchen, and the corridor connecting them, because a single global prompt describes the whole map at once and the model defaults to one dominant material to keep the image visually coherent. It’s optimizing for “this looks like one picture,” not “each of these rooms is a different place.”
Cartographic drift
Ask for a tactical battlemap and sometimes you get a decorative world map instead — a parchment continent, a city skyline, anything but a top-down room at fighting scale. “Map” is an overloaded word in an image model’s training data, and without an explicit scale contract, generation drifts toward whatever “map” imagery is most common in that training set. Usually that’s not tactical floor plans. It’s beautifully rendered, entirely useless-for-Tuesday’s-session cartography.
Prompt roulette
And then there’s the one every AI-map user has felt personally: rerolling for the fifteenth time because one hallway looks wrong, and watching the other nineteen good rooms change along with it. Prompt-to-image generation has no persistent, editable version of the map sitting underneath the picture — there’s nothing to revise. Every regenerate is a new roll of the dice, and the dice don’t remember what you liked about the last roll.
The actual fix isn’t a bigger model
None of these are solved by better prompting, and they’re mostly not solved by a bigger, newer model either — plenty of frontier image models still produce every failure mode above, because the problem isn’t image quality. It’s that nothing upstream of the paint step is enforcing floor-plan rules in the first place.
The fix is structural: put a contract between the description and the paint step, and make the model paint inside that contract instead of improvising the whole thing from a sentence.
Concretely, that means:
- Locked region footprints. Every room is an explicit polygon on a fixed grid, decided before any pixel gets painted, so there’s nothing left to “melt.”
- A connection graph. Every door corresponds to an actual edge between two regions — no graph edge, no opening. Corridors go somewhere because the blueprint says where.
- Materials assigned per region, not globally, so a crypt and a kitchen can be told apart by more than the furniture in them.
- Scale defined in feet from the start, so the grid overlay, the furniture, and the door widths all agree with each other, because they were derived from the same numbers.
- An orthographic top-down camera lock, applied at the composite step rather than left to adjectives in a prompt, so “map” means the tactical floor plan you asked for.
- A persistent, editable intermediate layer — the blueprint itself — so fixing one bad hallway means editing that hallway, not rerolling the whole building.
This is exactly the approach behind RealmCast’s blueprint pipeline, and the full walkthrough — with before/after renders for each failure mode — lives on the tropes we solve page. If you’ve ever stared at an AI battlemap wondering why it felt subtly, structurally off, that page is the autopsy.
The short version: the problem was never “AI can’t make a good battlemap.” It’s that nobody had asked the model to sign a floor plan before letting it paint one.