
A while ago I wrote about how AI helped me finally tell a story I’d been carrying around for almost twenty years. The short version is that Tales of Encenia has been living in my head since I was a teenager, and for the first time I had a way to get it out of there. I made a video. It cost roughly $50 beyond subscriptions I was already paying for, and once the creative decisions were made, putting it together only took about five or six hours.
What I left out of that post was how the sausage actually got made. Those five or six hours of assembly sat on top of something a lot less elegant: a browser with fourteen tabs open, a downloads folder full of files named image (3).png, and a text document where I kept re-pasting the same paragraph describing Kanaharu so the next generation would look like the last one. Every time I wanted a new shot of a character I had already established, I went hunting for the reference image, re-uploaded it, re-pasted the description, and hoped. Then I renamed the result and dragged it somewhere I’d remember.
That works for one video. It does not work for a story.
The thing nobody warns you about is that consistency is the actual problem. Not quality — quality is mostly solved, and it gets better every few months whether I do anything or not. The problem is that these models have no memory of your world. Every single generation is a stranger meeting your character for the very first time, reading a description, and taking their best guess. Ask for the same person twice and you get cousins. Ask for them from behind and you often get someone else entirely wearing similar clothes. If your story has four characters who need to appear in thirty shots, you are not making art at that point, you are doing continuity management with a slot machine.
There are ways to fight it. You lock a seed so the randomness stops being random. You feed the model a reference image of the character instead of just words. You write identity-lock text that repeats the non-negotiables in every prompt. None of this is secret knowledge, and all of it works. The problem is that doing it by hand, thirty times, across four characters and three providers, is miserable. I kept losing track of which seed belonged to which character. I’d regenerate a hero image and forget that six other shots now referenced a face that no longer existed.
So I started building the thing I wished I’d had while making that first video. I called it SceneForge, and it runs entirely on my own machine.
The first decision was to stop treating characters like paragraphs. In SceneForge a character isn’t a blob of text, it’s structured — first name, last name, title, age, height, build, skin tone, hair color and style, ear shape, and the eyes are two separate fields because one of my characters has heterochromia and I got tired of the models splitting the difference into a muddy in-between color. Each character locks a seed the moment it’s created and holds onto it. Generate the eight standard angles and every one of them reuses that seed and the hero image as a visual reference, so the person in the back view is recognizably the person in the front view. Outfits and props live as their own reusable pieces you assign to whoever needs them, because “the desert traveler gear” shouldn’t have to be re-described every time somebody puts it on.
From there it follows the shape of how I actually work. Scenes are environments with no people in them, generated the same consistent way. A storyboard is a timeline you drag characters and scenes onto, frame by frame, with a camera angle and an action per shot. That storyboard exports as a single labeled sheet with numbered panels, which then becomes the source for a timed video prompt that references those panel numbers directly. The same storyboard can render out as a comic page instead, with speech bubbles and sound effects, because at some point I wanted to see Ethera and Anna’s fight scene as a comic and it turned out to be the same underlying data.
The part I underestimated was that every provider is a completely different animal. I assumed video generation was video generation. It is not. I set a clip to 13 seconds in Grok Imagine and got 8, because it turns out the maximum depends on whether you’re feeding it one image or several, and it silently clamps instead of telling you. Then I added OpenAI’s Sora and set a clip to 10 seconds and got 8 again — not because anything was broken, but because Sora only makes clips that are 4, 8, or 12 seconds long. My interface was showing a smooth slider from 1 to 15 and quietly rounding whatever you picked to whatever the model would actually accept. The interface was lying to me, politely, and I’d built it myself.

A few other things I’d tell anyone building in this space. Build a mock mode first — SceneForge has a fake generator that makes placeholder images and stitches them into a GIF, so the entire pipeline runs end to end with zero API keys and zero cost. I’ve used it more than any real provider, because most of what I’m testing has nothing to do with the image. Track your spending inside the app, because the meter runs whether you’re watching or not, and a number in the corner changes how casually you hit regenerate. And when something behaves impossibly, suspect your own environment before you suspect the model. I lost real time to a bug where my prompt-refinement server kept binding the same port as the app, which happened because the app launched it as a child process and the child inherited the port number from the parent’s environment. I lost more time to having four copies of my own backend running at once, all sharing the same data folder, all running different versions of the code. I was getting “works on my machine” bugs on the machine.
None of this changes what I said last time. AI didn’t write Tales of Encenia — the characters, the kingdoms, and the story have been mine for twenty years, and a model that has never read any of it is not going to invent them for me. What’s changed is that the distance between a decision and seeing that decision is now short enough that I actually make more of them. When regenerating a character with a different outfit is one click instead of fifteen minutes of file archaeology, I try things I would previously have talked myself out of. That’s the whole value. Not that the tool has taste, but that it stops taxing mine.
You are still the director. The tool just stops making you also be the intern.
SceneForge isn’t finished and probably never will be, since every few weeks a new model ships and I write another adapter. But Tales of Encenia is moving faster than it has in two decades, which was the entire point. If it sounds interesting to you, I’d love for you to follow along.