
One prompt line fixed 96 of my buildings
Six of my game's seven worlds had buildings that looked subtly wrong on the board. The fix wasn't better AI — it was four words my best world had already been using, sitting in a log I'd never read back.
Six of my seven worlds had buildings that looked off. Not broken. Not ugly. Just wrong in a way I couldn’t name. And one world — Earth — looked perfect.
Same AI model. Same pipeline. Same everything. So why did six worlds look like cardboard cutouts and one looked like it belonged?
I almost did the dumb thing and regenerated all of it by feel. Then I went looking instead.
Stickers standing up
The board in Overserved is isometric. Fixed high 3/4 camera — you see the roof and two faces of everything, like a tabletop diorama. That’s the whole vibe.
But most of my buildings weren’t shot that way. A parliament rendered head-on like a postcard. A clock tower with no roof in sight. Drop those onto an iso board and they don’t sit in the world — they stand on it. Stickers propped up on edge.
Earth’s buildings? Roofs visible, glossy, warm lit windows. They sat down properly. The rest were standing up awkwardly at the party.
Same model. Same studio setup. The difference had to be somewhere I wasn’t looking.
The log nobody reads
Here’s the one habit that saved me: every image I generate gets logged — prompt, seed, settings, all of it. 308 generations on record. I’d never once read it back. It was insurance I didn’t know I had.
So instead of guessing, I grouped the buildings by how their prompt started. The pattern fell out in one pass.
Sixteen assets opened with the exact phrase “isometric 3/4 view 3D render of…” — and all sixteen were Earth’s. The good ones. Everyone else got the lazy version: terse “iso 3/4 building,” and one batch that literally said “low-angle.” I had typed the wrong camera into my own prompts, then spent a week blaming the model.
That’s the quiet superpower of logging generations: a bad batch stops being a vibe and becomes a diff. You’re not asking “why does this look wrong,” you’re asking “what’s different from the one that looks right” — and the answer is sitting in a column you can grep. AI image work feels unrepeatable because the output is, but the input is just text. Log the text and your wins become recipes.
Say the camera out loud
Why did four words matter that much? Because a text-to-image model knows nothing about my board. It has never seen the isometric diamond, doesn’t know the camera is a fixed high 3/4, can’t infer any of it. It renders the average of whatever words it’s given — and “iso 3/4” is a shrug it’s free to interpret as eye-level. “isometric 3/4 view 3D render of” pins the one variable that decides whether a building sits in the world or stands on it: the camera angle. Naming it did more than any style adjective I could stack after it, because angle was the thing actually going wrong. Fix the load-bearing word, not the decoration.
So I lifted Earth’s opening verbatim and turned the rest into a scaffold — only the subject and palette change per world:
isometric 3/4 view 3D render of [building], glossy stylized low-poly, warm lit windows, floating with no ground plane, isolated on a flat neutral grey background.
Two of those clauses are doing unglamorous load-bearing work. “Floating with no ground plane” stops the model from drawing a baseboard or shadow that fights the iso tiles. The neutral grey background isn’t a style choice — it’s so the background remover cuts a clean alpha later. The pretty words are last; the words that decide whether the asset is usable come first.
Then I wrote sixteen subjects per world to fit each place — gothic stone for Europe, Silicon Valley glass for the USA, neon-meets-pagoda for China, crystal and chrome for Space, savanna-and-solar for Africa.
Do the whole set in one breath
One rule I won’t break again: regenerate a set in a single pass, identical framing words every time.
The reason is the same reason naming the camera worked. A txt2img model has no memory between calls — call seventeen knows nothing about calls one through sixteen. There is no shared anchor holding a set together except the words you repeat. Keep the scaffold word-for-word and the sixteen pieces share a look; drift the wording even a little and they drift apart — different scales, different angles, sixteen strangers instead of one skyline. Consistency in the prompt is the cohesion of the set; nothing else is enforcing it.
And I judge each world as a set — all sixteen on one dark sheet — before a single sprite goes in. A building can look great alone and clash the instant it shares a board with its neighbors, so the set is the unit of judgment, not the sprite.
96 buildings later
Six worlds, ninety-six sprites, all now crisp, high-angle, glossy, and sitting down where they belong. The Europe before/after is almost embarrassing: same buildings, right camera, completely different result.

One world I left alone on purpose: Rogue. Its decor was art-directed into a corrupted, glitchy style — “consistent with the formula” would’ve meant “wrong for that world.” Knowing where the formula doesn’t apply is part of owning it.
What stuck
- Your own asset library is a prompt cookbook. The winning recipe wasn’t something I invented — it was sitting in one world the whole time, written by a past version of me who’d stopped reading his own notes.
- Log every generation, then read it back. Logged prompts turn a bad batch from a mystery into a diff. The fix is almost always already in there.
- Name the load-bearing word. The model knows only what you type, so spend the words on the variable that’s actually wrong — for an iso board that’s the camera angle, not the style adjectives.
- A set is one breath. Same scaffold, one pass, judged together — because repeated wording is the only thing holding a memoryless model’s set together.
I didn’t need better AI art. I needed the prompt my best asset had already written for me.