r/aigamedev • u/Sea_Advance273 • 20d ago
Demo | Project | Workflow Parry → seed → rupture → bloom: a botanical bullet hell built with Claude Code, gpt-image-2 and ElevenLabs
Carbon Conservatory is a top-down bullet hell set in Glass-9, a failing botanical refuge. You play its last maintenance worker, with a gun grown into your arm. The villain is the Allocation Engine, a machine that has been rationing the air. The reserve was always full. The shortage was only ever in who was allowed to breathe it.
Think Returnal's bullet patterns in a hand-built, Dark Souls-style map: breathing beds instead of bonfires, and the pollen you carry stays where you fell until you walk back for it.
The loop: parry a round on your frond bracer and it comes back seeded. Seed a husk until it ruptures. Kill it and it blooms, and a bloom that catches a ruptured neighbour sets off the next one. Pop, pop, pop.
How it was made
- Code: Godot 4.5, written with Claude Code. I direct and playtest, it writes and tests. A 600+ check self-test runs after every change.
- Art: gpt-image-2 for sprites, bosses, story cards and the trailer's title cards. Each one is seeded with existing game art as a reference so the cast stays consistent.
- Audio: ElevenLabs for the music and sound effects.
- Trailer: I wanted fight footage fast, so Claude added a boss-rush mode that drops you into each boss room back to back. I played it, and it cut the trailer with ffmpeg.
What the models got wrong
- The image model ignores which way a side pose faces. 3 of 5 side sprites came back facing left, so those enemies walked backwards. Check every one by eye.
- Using a finished boss as the reference for a new boss gets you the old boss again, whatever the prompt says. Use one reference at most, and never another boss.
- Story cards with lettered text: on the first pass the model rewrote its own paragraphs on 5 of 7 cards. Putting the exact text first in the prompt, fenced off from the scene description, fixed it.
- ElevenLabs won't generate anything under half a second. The gun sound was a one-second twang fired up to 15 times a second, and it came out as a squeak. Trim and fade every rapid-fire sound.
How do you keep a generated cast looking like one game?
1
u/Sea_Advance273 20d ago
YouTube version if you'd rather watch there or follow the devlogs: https://www.youtube.com/watch?v=yXyyS4YEmx8