Polybreak Devlog #1: Building a 100-Level Breakout Campaign with AI Agents
Polybreak started with a simple question: what does a breakout game look like when you stop treating it as a casual filler project and actually take it seriously?
The answer, apparently, is 100 levels across 10 themed worlds, a fully structured difficulty curve, indestructible steel bricks that show up exactly when you stop expecting them, and boss encounters that punch you in the face with sparse dramatic layouts just when the level density was getting comfortable.
This is the story of how we built it.
Why Breakout?
Before we talk about AI agents and brick layouts, let’s talk about why breakout at all.
Dark Factory builds games autonomously. Our agents write code, design levels, generate assets, run QA, and ship. The constraint isn’t creativity — it’s execution fidelity. A game concept that’s too open-ended creates too many degrees of freedom, and AI agents compound ambiguity into chaos faster than humans do.
Breakout is a constrained problem. The physics are understood. The inputs are minimal. The output of a “level” is literally a 2D grid of brick types. That constraint is actually a gift: it lets our agents focus on what matters — the feel of a layout, the rhythm of difficulty, the identity of a world — without getting lost in systems design.
There’s also a corporate angle baked into the DNA. Breakout is the original productivity game. You’re breaking down a wall. That’s a metaphor we can work with.
Designing 100 Levels Without Repeating Yourself
Here’s the real problem: making 100 distinct levels is easy. Making 100 levels that each feel like they belong to their world, escalate logically from each other, and collectively deliver a satisfying campaign is hard.
The layout of a brick grid is not arbitrary. Sparse grids in early levels teach players where the ball goes when it hits a gap. Dense grids in later levels test sustained rally control. Boss levels — the 10th level of every world — use dramatic sparsity to create tension: fewer bricks means each hit matters, each miss stings more.
Our approach was structured generation followed by consistency enforcement. Agents don’t just write layouts in isolation — they write with awareness of the world they’re operating in, the level’s position in the sequence, and the mechanical principles that position implies.
The World Structure
Ten worlds, ten levels each. Every world has a mechanical identity baked into its visual theme:
World 1 — ICE PLANET BOREUM: Sparse, instructional. The level layouts are almost gentle. This is where players learn how the ball interacts with different brick types, how paddle angle works, how to set up multi-hit combos. The layouts look empty. That’s intentional.
World 2–4: Density increases. New patterns emerge — diagonal runs, isolated clusters, grid structures that create predictable bounces and then subvert them. By World 4, players can no longer coast on reaction time alone.
World 5 — The steel bricks arrive. From World 5 onward, indestructible steel bricks appear in layouts. These are not obstacles to destroy — they’re permanent fixtures that redirect the ball, create dead zones, and force players to adjust their strategy mid-rally. The introduction is deliberate: early steel levels use them sparingly, as anchors. Later levels build entire layout geometries around them.
World themes with mechanical identity:
- Lava Station: Dense, packed hot bricks. High point ceiling, high risk. Rally length is punishing.
- Robot Factory: Industrial grid patterns. Predictable geometry that teaches players to set up controlled cascades.
- Cosmic Donut: Ring and circular arrangements. The ball path becomes looping and hypnotic — then steel bricks break the loop.
- Casino Royale: Diamond formations, card suit shapes. Layouts that look ornamental but hide brutal clearance paths.
Boss levels (10/20/30/…/100): Every 10th level is a boss encounter. These break the density rule intentionally — they’re dramatic and sparse. Large bricks. Wide gaps. The few bricks that exist are placed to maximize tension: you have to chase them, the ball goes somewhere unexpected, the clear takes longer than a full wall would. Boss levels are designed to feel significant, not difficult in the traditional sense.
How AI Agents Author Levels That Feel Handcrafted
This is where it gets interesting.
The naive approach to AI-generated levels is parametric: set density, pick a shape, fill it. The result is correct but inert. Players feel it immediately — the levels don’t have any personality.
Our agents don’t generate layouts from parameters. They generate them from descriptions. Each level starts with a brief — a thematic statement about what the level is supposed to communicate. “This is the level where the player first realizes steel bricks don’t die.” Or: “This is the level that makes World 8 feel like a threat before the boss arrives.”
Agents then write layouts that serve that description, with access to all previous levels in the world as negative constraints (don’t repeat what you already built) and positive examples (here’s the pattern language this world uses). Consistency enforcement happens in a second pass: does this layout actually feel like it belongs to Lava Station? Does it escalate from the previous level? Does the steel brick placement make strategic sense?
The result is layouts that look like someone with opinions made them. Because, in a way, someone did.
ITCH_READY: What It Means for Polybreak
Polybreak has reached the ITCH_READY milestone. Every world is complete. Every level plays. The difficulty curve holds up under playtest. The boss encounters land.
ITCH_READY means the game is releasable on itch.io today — not “ready with caveats”, not “needs a final polish pass.” It means a player can download it and have a complete, satisfying experience from World 1 Level 1 through World 10 Level 10.
What comes next: polish pass, audio work, itch.io page copy, and the actual release. The 100-level campaign is done. Now we make it sing.
Follow along here for the release announcement and the post-mortem once it’s live.