Skip to main content
Back to all work
2026PublicPersonal project · Solo dev

Indie roguelike - shipping a game solo in Godot + C#, with AI at every layer

Ongoing solo indie project. A Megabonk / Risk of Rain 2-adjacent roguelike in Godot + C#, with every asset generated through AI-first pipelines.

Why I'm building this

Six years of full-stack work pays the bills. The game is where I keep the taste and the craft, and where I find out what AI tooling can actually do when I'm the only pair of hands on a product.

The design is Megabonk / Risk of Rain 2-adjacent: tight combat loop, runs that bleed into hours, builds that snowball into nonsense by the end. Five minutes turn into two hours before you notice.

Ice biome combat encounter with HUD

The premise

You're an interdimensional being trying to make it home. Every death reconfigures reality and boots a new run, but fragments of memory carry across resets as small initial edges. The meta layer that sits above the runs is still on paper; the framing already changes how each death feels - the universe bending again, not a fail screen. Few stories slot into a roguelike this cleanly.

The shape of a run

You conquer solar systems planet by planet. A branched galaxy map (FTL / Slay the Spire-style paths) lets you pick the next jump and shapes the run: lava, toxic, ice and storm biomes never repeat back-to-back.

Each planet plays the same beats, differently every time:

  1. Landing. The ship sets down empty. You disembark with your companion, who guides you across the map toward what you need to refuel and leave.
  2. Combat and refuel, concurrent. Hostile fauna and patrols come for the intruder. Fuel pillars scattered across the terrain charge by proximity. Killed enemies drop magnetised fuel shards. The companion threads the route through the noise.
  3. Boss. Every planet ends in its own boss. Beat it before you can board the ship again. Music crossfades from intense to boss without a cut.
  4. Last push. With the tank near full, difficulty ramps hard in the closing window. Camping has a price.
  5. Warp. Andy Asteroids (Earthworm Jim 2) by way of a 3D corridor at hyperspeed: dodge asteroids while the soundtrack drives the visuals. Rings emit on the bass, the nebula breathes on the shimmer, obstacles spawn on beat onsets. Survive it, pick the next branch.

Build and loadout

You carry several weapons at once and rotate between them with Q/E. Auto-fire is the default; some pieces aim manually. Your build pulls from a handful of layers:

  • Weapons. Each with its own damage curve, projectile shape and bonus tiers.
  • Implants. Physical chips rendered on the player's back, each pushing one stat (offensive, projectile, defensive, utility) through a two-tier system that handles flat bonuses, multipliers and soft-capped hyperbolic stacks.
  • Anomalies. World drops with effects you won't see in any other layer. A few are corrupted: stronger payoff, difficulty penalty baked in.
  • Rewards. Objects scattered across the planet, pickable from the route the companion walks you through. Their effects don't repeat in the weapon or implant pools, so they're how the run takes its weirdest turns.
  • Powerups. Meteors crash mid-fight and drop temporary, loud effects. The kind that flip a wave on its head if you grab the right one.

Stats interact through a luck mechanic that compounds procs, an MMO-style armour curve, and a synergy pass coming in the polish phase.

How it holds together

  • Movement vocabulary. Sprint with a stamina meter that rewards sustained pressure with a temporary HP bonus. Slide with i-frames, slope physics, and an optional contact-damage powerup. Both feed the combat read.
  • Reactive Tron glow. Emission lines on the player react in real time: red on damage, white on kill or boss, gold on upgrade, green on refuel progress. The character doubles as a status indicator.
  • Biome-aware music. A dual audio player crossfades Base → Intense → Boss without a cut. Late planets skip the intro. State persists across the run.
  • Audio-reactive warp. Multi-band spectrum analysis drives ring emission, nebula breathing and speed lines. Beat onsets spawn obstacle bursts in formation. The minigame is mixed against the song, not on top of it.
  • Procedural planets. Chunked FBM-noise terrain, seeded per planet, with hazard pools (lava, acid, ice, storm) sampled from the same noise. Signal caches surface as upgrade pickups across the chunks.
  • Ship states. Idle, flying, landing, refuelling, ready, launching. Each one carries its own glow colour and animation, visible in the world and in the HUD.

The AI-native stack

  • 3D models and art direction. Image references generated with Grok and Gemini, turned into 3D models via Tripo3D, rigged and animated via Mixamo, then cohered and sculpted by me. A documented texture-path workaround keeps Tripo's good textures alive on Mixamo's good rig.
  • Music and SFX. Full soundtrack composed through Suno across menu, galaxy, warp, combat, biome and boss contexts, mixed by me. The SFX pipeline is documented, generation in progress.
  • Engine. Godot 4 .NET with C#, Jolt Physics, Forward+ rendering, custom GLSL shaders for stylised toon, hit flash, terrain blend and post-process. Architecture is autoload singletons coordinated through a typed signal bus, with object pooling for anything that spawns at scale and a UI built entirely in code.
  • Tooling. Claude Code talks to the editor through a Godot MCP server. It builds nodes, reads project state and captures screenshots while I drive the design.
  • Landing and marketing. The site that announces the game is a Next.js and Tailwind build, with AI-generated key art.

What's next

First playable build, wishlist campaign and devlog entries. Name, screenshots and Steam page go public when the vertical slice is locked.