Inspiration
Lovable showed that anyone can build a web app just by describing it. I thought games should have the same thing: type an idea, answer a few questions, and play it a minute later.
While building it I realized the more interesting part was the characters. In most games, enemies walk a fixed path and NPCs repeat the same few lines. If language models drive the NPCs and CPU opponents, every playthrough is different. An enemy can notice you keep jumping over its charge and start baiting the jump instead. A shopkeeper can remember what you told them. So Creo became two things: a way to make games by describing them, and games where the characters have a mind of their own.
What it does
You type an idea, like "a stealth heist where the guards learn your hiding spots". Creo asks a few quick questions about the style, the view and how smart the enemies should be, then builds a playable game in the browser.
You choose how smart each character is:
- Simple: classic behaviour, like a goomba walking back and forth.
- Plans: every couple of seconds an AI reads the fight and picks a tactic, like flank, surround or retreat.
- Full control: the AI writes the actual moves, like "feint, dash in, attack twice, back off", and the engine plays them.
Every character can hold a real conversation in character, with a voice the AI picked to fit them. You can click any character to see its personality, the model driving it, the moves it can choose from, and a live log of its decisions.
After that you keep editing by chatting. The editor has the chat on the left and the live game on the right, like Lovable. You can ask for changes, click anything in the game to change it, undo any step, run a bot that playtests the level, and share the game as a link.
How we built it
The app is built with Next.js, React and TypeScript. 2D games run on Phaser and 3D games run on Three.js with Rapier physics.
Each game is one JSON document that describes its levels, characters, rules, scripts and style. The AI never writes a game from scratch. It edits that document through small, typed changes, and everything is validated and repaired before it runs. That keeps builds reliable and makes every change undoable. After each build, a checker looks for problems like a win condition that can never happen, and sends them back to the AI to fix.
For the smart characters, running a big model every frame would be far too slow and expensive. Instead a fast, cheap model decides tactics every couple of seconds, and the game engine carries them out 60 times a second. Each decision costs about $0.00024, so one smart enemy group costs roughly
$$ \frac{60}{2.5} \times \$0.00024 \approx \$0.006 \text{ per minute} $$
If no AI is available, a built-in strategist takes over so the game never stalls.
Voices use ElevenLabs and OpenAI text-to-speech, streamed one sentence at a time. Game art is drawn by an image model in one consistent style per game and then turned into sprites, tiles and backgrounds on the server. The site runs in Docker on a VPS, and game scripts run on a separate domain from the editor so they can never touch saved projects.
Challenges we ran into
AI output is unreliable. Models invent fields, forget rules and build levels you can't finish. Typed edits, validation and an automatic repair round fixed most of that.
Smart enemies have to react fast. Splitting the slow thinking from the fast execution, plus letting each character have a different level of intelligence, kept games responsive and cheap.
Testing games automatically was hard. I built a playtest bot and made the engines deterministic, so the bot can play a level about 25 times faster than real time and get the same result every time.
Voices kept cutting off mid-word whenever the player replied, or stayed silent while a custom voice was being made. Now the current sentence finishes or fades out, and a slow voice service falls back to a faster one.
Making the games look good took a lot of work. Code-drawn art had a low ceiling, so I added AI-generated art for each game, and the hard part was keeping every piece consistent in style and size.
Accomplishments that we're proud of
- Going from one sentence to a playable game with smart enemies and talking characters in about a minute.
- Enemies that visibly adapt, where you can watch their reasoning while they change tactics.
- Every character having its own personality and voice.
- An editor that also works on a phone.
- It's live and playable, not just a demo.
What we learned
Language models are good at deciding what should happen and bad at precise details. The best results came from letting the model decide what to do and letting normal code handle exactly how.
A strict data format with validation did more for quality than any prompt change.
Picking the right model for each job matters. A strong model for building and a fast one for character decisions made smart NPCs practical.
People judge a game in the first few seconds, so the art and feel matter as much as the AI.
What's next for Creo
- Opening it up to everyone, with accounts and a public gallery where people can play, share and remix each other's games.
- Multiplayer, so friends can play together against smart AI characters.
- Characters that remember you between sessions, so a rival or shopkeeper picks up where you left off.
- More kinds of games, like card games, rhythm games and puzzles.
Built With
- anthropic
- elevenlabs
- grok
- javascript
- linux
- openai
- react
- typescript
Log in or sign up for Devpost to join the conversation.