AI Wrote My Game's Code. It Still Can't Write One Line of Dialogue That Isn't Cringe.
I don't write code, but I've got three games in flight.
I wrote about this once — the guy who doesn't code is making three games. The code part I genuinely don't sweat; the agents write it faster than I would, and more correctly. So I naively assumed the story could be hand-waved the same way. Hand it a worldview, let it fill in the dialogue, done.
Then I saw this.
"As the last guardian of this city, you of course know that the great war three hundred years ago took everything from us."
I read that line and my toes curled hard enough to file for their own apartment.
Sit with why it's cringe. Two characters, solemnly telling each other things they both know cold. That's an exposition dump — the "as you know, Bob" problem. The emotion gets stacked with adjectives: he felt boundless grief and despair, her heart was a tangle of feelings. Every line states its meaning outright, terrified you the player might not get it.
That's not writing a story. That's splitting a Wikipedia entry in half and having two people read it aloud.
And this was an agent's first draft for me. Can you believe that.
Honestly, I panicked a little. Code I'm allowed to not know — the agents know it. But story I'd always filed under talent. It's the screenwriters' turf, and what's a STEM brain doing trying to compete. I've never had a day of writing training. Never wrote a single line of fanfic.
But dim as I am, there's exactly one thing I know how to do.
Take "how do you write a good game story," turn it into a research problem, throw a team of agents at the primary sources, and be the one who makes the judgment calls and proofreads the result. This is the same path I ran for that cyber-fortune-teller skill I pulled out of PanPanMao — the opening post of a series I'm calling AX Skill Workshop. This is part 2. Same approach, the hardcore part swapped from divination to screenwriting.
So I started digging.
Eight streams at once. One chewing through craft theory — McKee, Vogler, Sanderson, K.M. Weiland, names I'd never heard before. One tearing apart Genshin, Star Rail, Arknights, FGO, and Blue Archive beat by beat. One combing GDC talks and developer interviews. And one dedicated entirely to the failures — the arcs that famously went off the rails. The first pass didn't feel solid enough, so I re-ran the whole thing with Opus 4.8, folded in three separate outside research drops, and ran two rounds of independent review before it was clean.
Halfway through, a thought crept up on me — half resentful, half thrilled.
The stuff I'd assumed was the most mysterious, the most talent-bound, the most about innate feel — it all had recipes.
Start with the one that surprised me most. Theme.
Beginners, me included, love to say a sentence like this: my game is about freedom. Or about redemption, about memory. McKee calls that a theme word. One word. Then he asks you, with zero mercy: what does your story actually say about freedom?
You have to be able to state a whole sentence. Something like — freedom is won when you trust your own strength enough to break the system controlling you. That full sentence is the controlling idea, the spine of the whole thing, and every scene from then on gets measured against it: does this earn its place, yes or no.
And there's a way to test it, a brutal one, called the acid test. Flip the ending. Let the protagonist fail instead of win. Does the story still hold? If it does, your theme never grew into the structure. It's just decoration floating on top.
That stopped me dead. My own fuzzy little "I want to make a game about loneliness" went into that test and shattered on contact. Because in my story, protagonist lonely or not, it made no difference at all.
Next layer down: why a character feels alive.
I'd had no model for this — always figured whether a character lands is a matter of feel. Turns out there's a very hard chain: wound, lie, want, need. Weiland's framework. Not "gave him a sad childhood." A specific thing happened in the past that broke something in him — that's the wound. From that wound grows a false belief — the lie. Someone who believes the lie chases something — the want. And to truly heal, he has to accept a truth he's been running from — the need, which is almost always the lie's exact opposite.
There's a companion trick for writing the character down: the one-line trait, where you're only allowed to fill in behavior, never adjectives. Brave, kind, smart — those are categories, they fit anyone, they say nothing. You have to write something like: she's the type who laughs loudest at a funeral. Suddenly the person stands up off the page, and you can even guess why she's like that.
Then I hit the one that genuinely won me over. Gap moe.
Selling characters is the lifeblood of gacha, and gap moe is the whole game. But before I dug in, I had it backwards — I thought gap moe meant welding two contrasting labels together. Tsundere plus scheming. Aloof plus secret glutton. Stitch them up, done. Wildly wrong.
The real recipe is one high-recognition surface trait, multiplied by an inner core that sharply contradicts it and is rooted in the wound. The back half is the whole point. The contrast has to be explainable by the wound, or you've just sewn two characters into one body and the player spots the seam instantly.
I put an example character in the skill, named Su Ji, to make exactly this point. Her one-line trait: the type who can price your tears to market rate in three seconds, but hasn't cried for herself in three years. The surface is the coldest emotion-appraiser in the city. The core is that she's gone emotionally mute, hasn't been able to cry in three years. Why do the two stick together? Because the one tear she ever truly shed was taken and sold by the mentor she trusted most, in exchange for her promotion. The betrayal shaped the cold shell, and shaped the person under the shell who can't cry anymore.
That's gap moe. The wound welds the surface and the core together, welds them so you can't find the seam.
On worldbuilding, I have to confess a disease I had a bad case of: worldbuilding self-indulgence, or more clinically, worldbuilding procrastination.
The symptom is easy to spot. Your setting notes outweigh your actual script. You can talk for three hours about your world's currency system, its pantheon, its 8,000-year chronology — and you can't write one line of real story. I was exactly like this on my first game. Building setting is addictive, because building setting carries no risk. Writing scenes does. Writing scenes exposes the fact that you can't write.
The agents brought back one dead-simple test that cured me. For every piece of lore you add, ask it: does this directly drive some character's decision, or create a visible obstacle in the plot, or explain a consequence the player can actually perceive? If it's none of the three, don't build it yet — go write. The world serves the story, not the reverse.
Sanderson has a related law: limitations are more interesting than powers. You make a power good by giving it a cost, a rule, a list of things it can't do. An all-powerful magic has no story in it. A magic that cures anything but takes a year off your life each time you use it — that one has a story.
Then there's the hardest thing in gacha: how a long-running serial keeps from collapsing. Because it's a narrative machine that ships weekly, never ends, and has to sell you characters on the side.
Nasu — the guy who writes Fate — has a plain approach to FGO. Nail the endpoint first. Say the whole story is, clear these seven chapters; the player knows the finish line on day one and feels grounded. Then you fill the seven boxes in. Skeleton first, content after, not adding things aimlessly as you go.
It comes with a foreshadowing ledger, ideally one only the lead writer can edit — which hole is dug in which chapter, scheduled to be filled in which one. Star Rail's Amphoreus arc took some flak on pacing: the chapter ran very long, thread laid on thread, players wearing thin partway through, the common feeling being that the holes got dug faster than they got filled. Digging holes is the fun part. The ledger is what carries you.
All of that was still in "okay, learned something" territory. But the next one made me say it out loud.
I had a deep-rooted belief: Chinese gacha is world-first — build a grand world, then stuff characters into it — while Japanese gacha is character-first, the character lands and the world is backdrop. I thought this was a nationality thing.
Completely wrong.
Cai Haoyu said it himself at GDC 2021 — what miHoYo does is precisely character-first, with cinematic packaging. In Genshin, in Star Rail, the main dish on the table is the characters; the grand world is just the vessel that makes them glow. The genuinely world-first Chinese studios are Hypergryph, who make Arknights, and Bluepoch, who make Reverse: 1999. Over in Korea it's Project Moon, who make Limbus Company.
Narrative emphasis — character-first versus world-first — and presentation form — lightweight text boxes versus full cinematic cutscenes — are two independent axes, and neither one equals nationality. The moment I straightened out that crossed wire, a whole pile of design choices I couldn't previously parse just clicked into place.
That moment, right there, was the best part of the whole dig. Something I'd taken for granted for years, taken apart on the spot by primary sources.
One more, and this one I really didn't see coming: even tearjerking has anti-patterns.
We broke emotional craft into four flavors — the knife, comedy, romance, mystery. Take the knife: how you make a player cry. There's exactly one core rule — you have to make them genuinely love the character first, before you've earned the right to take them away. The opening four minutes of Pixar's Up land the way they do because the film spends everything making you love Carl and Ellie's entire life together, and only then takes Ellie.
There are three anti-patterns. One is misery-mongering — just pile suffering on the character without making the player love them first. One is instrumental death — the character dies purely to make the protagonist sad and push their growth; they're not a person, they're a prop. And one is specific to gacha: the pull paradox. You just spent real money, real feeling, pulling a character — and the very next arc knifes them. Whether the player feels moved or stabbed in the back is a razor's edge, and it's brutally hard to get right.
Mystery has an iron law too, and the biggest one is: never open a loop you don't have the answer to yourself. Lost is the cautionary tale — it opened one mystery box after another, until the writers couldn't close them. Before you plant a hook, make sure you're holding the answer.
The last pitfall: the protagonist can't be a camera.
This was one of the most-criticized things about Wuthering Waves at 1.0 — the protagonist felt more like a camera trailing the plot, an information relay, with no agency of their own, nothing for the player to inhabit. But to tell the story fairly: Wuthering Waves reworked a lot of its script afterward, kept iterating, and didn't really win the audience back until the 2.0 region, Rinascita. Zenless Zone Zero took heat early for its TV mode too, but its response is worth studying — fast, transparent acknowledgment, changed the delivery format, and clawed its reputation back.
So a bad first impression costs a fortune, but it's not unrecoverable. The price is several of your future versions, burned.
Once I'd dug all this up, I didn't let it rot in my head. I built it into a skill.
One thing I want to stress: it is not a one-click generator. One-click story is exactly the cringe from the top of this post, because the AI defaults to laying every piece of information flat on the table, which is the precise opposite of good story. This skill is a coach. A sparring partner.
It doesn't assume you're a beginner, and it doesn't assume you're a pro. It has you dash off three sentences describing the moment a person gets bad news — and that one tiny sample reads truer than any self-assessment, because beginners either overrate or underrate themselves, but the sample doesn't lie. From that it works out which layer you're actually stuck at, and decides whether to demo hands-on for you or just stand beside you and hand you the thread.
Then it walks you the whole way. From the blurriest image in your head, step by step, out to a worldview, a theme, a main-line frame, the characters, and finally a scene you can actually stage — dropping a real document you can hold in your hand at every step, all of it accreting into a story bible that's yours.
The story is always yours. The skill is only scaffolding. I wrote that in the most visible spot in the whole skill, because I was terrified of it turning into one more thing that makes your decisions for you and then spits out a pile of AI slop.
The whole thing — twelve reference docs, nine templates, one worked example that runs end to end — is open-sourced in my AX-skills repo, under the name game-script-creation. Whether you want to write a game story or you're just curious what this craft actually looks like up close, go dig through it.
But the thing that really stuck with me isn't the recipes themselves.
It's something I realized after I was done: "I can't write" is, for the first time, no longer the end of the road.
Think about it. In the past, if you couldn't write a story, that was basically it — take a class for a few years, or accept it. But once the craft gets decomposed into judgment criteria you can pull off the shelf at any time, the bottleneck quietly shifts. It moves from "can you execute" to "do you have the taste to judge." The dialogue the AI writes for you is still cringe; that part hasn't changed. But the AI can compress an entire library of craft into an on-call coach standing right next to you, and the "yes — that's the one" judgment gets left to you.
Scaffolding was never about climbing the wall for you. It's about letting you reach a height you'd never have reached in your life.
Back to that line at the top, the one that curled my toes.
AI still can't write a line of dialogue that isn't cringe — that hasn't changed to this day. One-click it and it'll still have two characters reading Wikipedia at each other. But I'm not anxious anymore. Because cringe was never the AI's problem. It's a judgment problem.
I finally know why that line is bad. It has no subtext, the characters are telling each other things they both already know cold, every emotion is laid out on the table, with nothing left for the player.
And knowing why it's bad is knowing how to fix it.
That, probably, is the most valuable thing I pulled out of the entire dig.
This is part 2 of AX Skill Workshop — a series about skills I build for AI agents and what each one teaches me. Part 1 packaged a fortune-telling product into a skill; this one turned a craft I'd had zero training in into a coach you can call.