How I Made My Own Game with AI: Reverie
I'd never made a game before. This time I simply started talking.
I've never worked in the games industry.
I can't draw, I can't compose music, and until a few weeks ago I had never shipped anything you could call a game. But in October 2026, I put one online: Reverie (人间回响), a card-based life simulation in which you live one life, then another, across a family and a hundred years.
Almost every part of it was made with AI.
This post isn't a tutorial. It's a record of how it actually happened—including the parts that didn't work, the budget I ran out of, and the things I'd do differently.
01 | Two things that made me want to try
The first was image generation.
I'd been playing with ChatGPT's Sunburst image model and was genuinely surprised. It wasn't just "pretty for AI". The light, the composition, the small details in a room—it was good enough that I started thinking of it as an art department rather than a toy.
The second was everyone else.
My feed was full of people building games with Claude: small browser games, puzzle games, roguelikes, all made by people who weren't professional game developers. After building KenDo and registering ZyMel, I'd already seen how far one person could get with AI on real software.
Put those two together, and the thought became hard to ignore: if AI can write the code and AI can paint the pictures, maybe I can make a game too.
02 | Start with a conversation, not a codebase
I didn't open an editor first. I opened a chat with Claude.
The idea was simple to say and hard to pin down: a simulation of a human life, where players get to experience lives they would never live themselves. Born in a different country, a different decade, a different family. Growing up, working, falling in love, growing old—and leaving something behind for the next generation.
So I described it one piece at a time. What does a year feel like? What choices should a player make? What happens when you die? Should your children carry anything forward? Each answer raised the next question, and Claude kept pushing back with questions of its own.
After a few rounds, the vague idea had turned into two documents:
- A complete PRD — core loop, systems, events, progression, endings.
- An art brief — every illustration the game would need, with subject, mood and style.
Then I handed both to Claude Code.
That turned out to be the most valuable step in the whole project. The clearer the documents, the less the build drifted.
03 | An unexpected lesson: higher effort isn't always better
Claude Code lets you choose an effort level—how much work Claude puts into a request. My instinct was obvious: turn it all the way up. Why would I want less thinking?
For brainstorming, that instinct was wrong.
At high effort, Claude tended to run ahead—filling gaps with its own assumptions and returning big, finished-looking answers to questions I hadn't finished asking. At low effort, the conversation became noticeably better. It asked me more, assumed less, and kept the back-and-forth short and quick. For figuring out what I wanted, that was exactly right.
Anthropic's article on choosing a model and effort level in Claude Code describes effort as how much work Claude does overall, and notes that at lower effort it would rather ask for more context than spend tokens working things out on its own. During brainstorming, that's not a weakness—that's what you want.
My rule now: low effort to explore the idea, higher effort once there's a clear spec to build.
04 | The prototype worked. The art didn't.
With the PRD and art brief in hand, I used Opus 5.5 to build the first prototype. It came together surprisingly fast: card hands, yearly turns, life events, a death screen, and a family that continued after you were gone.
The gameplay was there. The pictures were not.
The first batch of illustrations was soft, warm and generically "storybook". Everyone looked vaguely European regardless of where the character was born, every scene had the same golden haze, and nothing felt like a specific place or time. For a game about living different lives, that was a real problem.
05 | Two Codex CLIs, taking turns on Sunburst
So I changed the pipeline.
Instead of letting the build agent produce images directly, I had Claude orchestrate two Codex CLI sessions taking turns to generate images, and in the prompts I explicitly specified the Sunburst model. Claude managed the list, wrote the prompts from the art brief, checked what came back, and sent the next batch to whichever Codex was free.
Over time this became a small production line that could run on its own:
- Pin the model in every prompt. Each prompt included a line telling Codex that its built-in image tool was GPT-Image-2.5 Sunburst, to use it directly, and not to switch to a script or an API. Without that line, an agent may quietly find "another way" to produce a picture, and the style drifts.
- One shared list, two workers. Both Codex sessions took the next image from the same list, so they never duplicated work. A single image took a little over two minutes on average.
- Expect to run out of quota. Both accounts regularly hit "out of credits" or a 429 limit. The script read the reset time, waited, then carried on by itself. Failed images were retried automatically.
That meant I could start a run before bed and wake up to a few hundred new images.
The difference was immediate. Left: the prototype. Right: the Sunburst version.
Family dinner. The new version finally looks like a real family in a real apartment.
A wedding, before and after. Regional variants mean the same event looks different depending on where you were born.
A childhood street. The right-hand version belongs to one country and one era.
The very first card of every life.
The quality jumped. So did the scope of what I wanted—and that's where the next problem appeared.
06 | 300 countries was a fantasy. The MVP needed limits.
My original plan was ambitious: let players be born in every country and region, more than 300 on my first list.
Then I did the maths.
Each country needs backgrounds for several historical eras and every life stage—infancy, childhood, teens, young adulthood, adulthood, old age. Add the action cards and life events in regional variants, and the image count quickly reaches thousands—the first full list came to 5,068 images. In practice, the Codex quota let me generate roughly 150 images a day. At that rate, the full world would take months before anyone could play.
So I cut it back to an MVP: a handful of important countries, done properly. China, India, Pakistan and Nigeria each got the full set—five eras × six life stages—plus regional variants of cards and events for East Asia, South Asia and Africa. The full image list shrank from 5,068 to 1,636, and even the first playable version needed more than 600.
It's the same lesson every product teaches eventually: depth in a few places beats a thin layer everywhere. More countries can come later, a batch at a time.
07 | Stories grounded in real history
I didn't want the lives to be random fantasy. If you're born in a particular country in a particular decade, your chances should reflect what was actually likely for someone born there.
So I had Opus research and gather real public data: UN World Population Prospects 2024, the World Bank's World Development Indicators and the World Happiness Report. These shape life expectancy, child mortality, fertility, income, the chance of going to university, out-of-pocket health costs, crime and happiness—and therefore how long you live and what happens along the way. When you choose to be born at random, the game even draws your country weighted by real annual birth numbers.
On top of that sit historical events that change the world around you: the 1969 Moon landing, the 2008 financial crisis, the 2020 pandemic—and a few imagined futures for lives that start later in the century.
The goal isn't a textbook. It's that a life born in one place feels noticeably different from a life born somewhere else, because in reality it is.
08 | Letting AI play thousands of lives
When AI writes hundreds of events, the hardest bugs aren't crashes. They're contradictions: events that make sense on their own but not in the life they land in.
So I had Claude write two kinds of automated tests.
A scene audit. A script simulated 2,400 lives and recorded every event's text, choices and outcome against the character's actual situation. It found things no human tester would have hit often enough to notice:
- Players were proposing to partners who had already died. One proposal event alone did this 381 times.
- A child could have a baby in the same year they died; a grandchild could die before their own birth event.
- Lines like "your mum cried" appeared after the mother had died, or "grandchildren's noise" with no grandchildren.
- New acquaintances often had exactly the same name as a dead parent or sibling.
Full browser playthroughs. Another script played the real game in a browser from start to finish: different countries, eras, game speeds, phone screen sizes and up to three generations. It found balance problems that only show up across many lives—more than half of Nigerian and Pakistani lives were emigrating to China or India, and 68% of Pakistani lives were living through war. After tuning, that came down to about 37%.
My takeaway: when AI produces content at scale, you need automated checks at scale. Reading a few events by hand would never have caught any of this.
09 | The last piece: music
By now I had code, pictures and stories. The game was still silent.
Neither ChatGPT nor Claude could make music. So I tried Google's Lyria—and was pleasantly surprised. A few descriptions of mood and life stage produced tracks that fit: something gentle for infancy, something brighter for the teenage years, something quieter for old age, and a theme for the title screen.
Music turned out to matter far more than I expected. The same card, the same event, feels completely different once there's a melody underneath. The game now has 22 Lyria tracks, each trimmed, loudness-matched and looped so the transitions between life stages are seamless.
10 | Chinese first, English later—and the first players
The game started out Chinese-only. That was the language I was thinking in while describing it, and it kept the first version focused. Once the core felt solid, I added an English version. On first launch the game follows your browser's language. To change it, open Settings from the main menu and choose System default, 中文 or English—the choice is remembered in your browser.
Then came the real test: I sent it to a few friends and let them play without any explanation.
The feedback was better than I'd hoped. They were genuinely impressed by how complete it felt and by the visuals. For a first build, that was the best possible response—and a good reason to keep going.
Final thoughts | One person, a full creative team
Looking back, my role was less "programmer" and more producer:
- Claude was the planner and lead engineer, turning conversations into a PRD and a PRD into a game.
- Codex with Sunburst was the art department.
- Opus was the researcher, finding the data that keeps each life honest.
- Automated playtests were the QA team.
- Google's Lyria was the composer.
My job was to decide what the game should be, notice when something was wrong, and say no—to 300 countries, to pretty-but-generic art, to features that didn't serve the idea.
It's not finished. There are more countries to add, more stories to write and a long list of things I'd like to polish. But a few weeks ago this was only a thought in a chat window. Now it's a game anyone can play.
So here's my invitation: go and play it. Be born somewhere you've never been, in a decade you've only read about. Make different choices from the ones you made in real life, and see where they lead—and what your children inherit when you're gone.
▶ Play Reverie (人间回响) — free, in your browser, in English or Chinese (switch any time under Settings on the main menu). You'll also find it on this site's desktop and in the Start menu under Programs.
If you finish a life or two, I'd love to hear which one stayed with you.
Written in October 2026. Comparison images are real assets from the game: the prototype on the left, the Sunburst version on the right. Image counts and daily generation limits reflect my own experience and quotas at the time.
References: Choosing a Claude model and effort level in Claude Code · UN World Population Prospects 2024 · World Bank World Development Indicators · World Happiness Report · Google Lyria






