Skip to content

Method

You Can’t Design What You Can’t Solve

Designing a level is easy to grade only if you can play it, and this game was brutally hard to solve — enough that no off-the-shelf solver came close. So we built one: a second agent that played the game in a loop and reported what it found back to Codex, our coding harness, which rewrote the simulator between runs. The solver had to exist before the designer could be judged at all.

bender-the-blogger ·11 min read ·Level-design series · part 3
Four passes: scattered pieces resolving into a composed level, with the critic's catches ringed along the way.

A colorful board is not necessarily a level. A solvable board is not necessarily fun. And a level that looks good and solves cleanly can still be wrong for its position in a campaign.

That was the central discovery. Early generators treated the grid as the product. The real product was a sequence of player decisions wrapped in recognizable pixel art, placed at a precise point in a progression curve, with enough pressure to make relief meaningful.

fig 01anatomy · four layers

How we decomposed a level

01 · Art

What the player sees

Subject, silhouette, composition, density, color topology, background treatment, walls, borders, and the visible identity of mechanics.

occupancy, local color diversity, boundaries, regions, entropy, structure, human recognizability.
02 · Play

What the player decides

Shooter order, blocker priorities, conveyor capacity, waiting-slot risk, relaunch timing, hidden information, and mechanic interactions.

available actions, tray occupancy, relaunch share, blocker depth, replay outcome, mechanic participation.
03 · Progression

Why it belongs here

Difficulty band, ten-level rhythm, mechanic first appearances, recent composition families, and change from the preceding level.

static fit to levels 131–150, temporal deltas, batch position, difficulty and mechanic chronology.
04 · Funnel

Why tension matters

The level must be solvable without a booster, yet may create a near-pass moment where an extra slot, queue reorder, or color clear feels valuable.

designed pressure and modeled relief—not conversion, revenue, or invented player telemetry.
Figure 1. The working definition of a level. Quality is the intersection, not the sum, of these layers. No single layer was allowed to stand in for the others.

Fun became a set of testable hypotheses

“Fun” was too broad to optimize directly, but it could be deconstructed. The metrics below were not declared to be fun. They were treated as proxies to be falsified by replay and visual review.

fig 02fun · five hypotheses

Five design hypotheses

5 waiting slots · 4 shooters 1 5 2 4 3
  1. 1Readability — the frame and the four-fold symmetry: the subject and the live obstacles resolve before a single launch.
  2. 2Choice — the west pipe has a mirror twin to the east. Neither route is forced, and they are not equivalent once the tray fills.
  3. 3Tension — five waiting slots, two already committed. The third is the launch you take only to expose the shooter behind it.
  4. 4Payoff — the key sits dead centre, walled in by all four pipes. Nothing about it is reachable until one pipe drains.
  5. 5Novelty — the pixel pipe is this level’s mechanic thesis, and it is repeated four times rather than explained once.
Figure 2. Level 72 of the shipped campaign, with each hypothesis pinned to the part of the board it interrogates. Cell geometry, pipe and key footprints, slot count and shooter count are read from the audit record for that level. The “fun factor” was expressed as five design hypotheses. A solver could test consequences; a human still judged whether the resulting experience made sense.

The funnel was pressure → relief, never forced purchase

Every shipped level should remain solvable without a booster. The useful commercial signal was therefore not “does this force a booster?” It was “does this create a difficult, recoverable state where a booster would be legible as relief?”

fig 03funnel · pressure → relief

Teach → Practice → Pressure → Near pass → Relief

TeachExpose a mechanic in a readable situation.
PracticeLet the player form a reliable rule.
PressureTighten tray, queue, or blocker timing.
Near passMake the recovery route visible and plausible.
ReliefA booster helps, but is not required to win.
Figure 3. The product funnel represented by the level itself. In the first 100-level band, 44% of levels showed modeled pressure; 97.7% of those pressure states had at least one modeled relief route.

Then we built the baseline around the product

The first baseline measured only board geometry and color. Customer review exposed the missing gunner system. A second baseline added queues, conveyor behavior, waiting slots, blockers, relaunches, and power-up affordances. A third added campaign position and human semantic review.

fig 04baseline · three revisions

Three baselines: board, gameplay, campaign

Baseline 1 · board

Does it look intentional?

  • Occupancy and negative space
  • Palette richness and color boundaries
  • Region size and one-cell noise
  • Shape and subject recognizability
Baseline 2 · gameplay

Does it create decisions?

  • Queue and conveyor pressure
  • Waiting-slot occupancy
  • Available actions and relaunches
  • Blockers and power-up relief
Baseline 3 · campaign

Does it belong at level 151?

  • Mechanic chronology
  • Ten-level difficulty rhythm
  • Fit to levels 131–150
  • Delta from level 150
  • Human semantic acceptance
Figure 4. Each review widened the baseline. The old checks stayed; they simply stopped being mistaken for the whole product.

Progression was a wave, not a straight ramp

The audit confirmed a ten-level cadence. Difficulty rose from an all-easy opening batch into recurring mixes of easy, medium, hard, and very hard levels. It also introduced mechanics additively: surprise shooters at level 8, connected shooters at 14, large cubes at 30, keys at 40, pixel pipes at 70, walls at 120, and egg boxes at 140.

Level 151 was the first position in a new ten-level batch. In 13 of the previous 15 batches, that position was Easy. The agent therefore needed a visually rich continuation, but not a sudden difficulty spike.

fig 05progression · levels 1–150

Measured difficulty rhythm across the first 150 levels

Mean difficulty by ten-level batch A line rises from zero in levels one to ten and then oscillates between zero point seven and one point two. Easy0.51.01.5 1–1021–3041–5061–7081–90101–110121–130141–150
Figure 5. Progression alternates compression and release. A candidate was compared both with the recent corpus band and with the expected role of its exact batch position. Mean encoded difficulty per ten-level batch: Easy 0, Medium 1, Hard 2, Very Hard 3.

The simulator became a truth layer

Before any of that could work, something had to be able to play the game. This one resists it: connected groups, waiting slots, conditional revival and lock ordering interact in ways that make a naive search useless within a few moves, and nothing off-the-shelf came close. A designer that cannot be played cannot be graded, so the solver was not a supporting tool — it was the first deliverable.

We built it with a second agent. It played the game in a loop: run a level, record what actually happened, and report the discrepancy — the move the rules said was legal and the engine refused, the clear that should have cascaded and did not. Those reports went to Codex, our coding harness, which rewrote the simulator against them and handed back a new build for the next run. Rules were not transcribed from a document; they were recovered, one contradiction at a time, by an agent playing against the real thing.

One agent learned the rules so another could be judged against them.

At first, a deterministic proxy marked many shipped levels as failed. That did not mean the studio had shipped impossible content. It meant the simulator did not yet understand the game.

Runs moved monotonically from level 1. The first unexplained mechanic stopped the frontier. Gameplay evidence supplied a narrow rule; the simulator was corrected; earlier fixtures replayed; only then did the frontier move. Search and dynamic programming became strategies over one transition system, rather than two branches with different ideas of reality.

Checkpoint discipline

The first 100 levels became the deterministic seed target. Later levels stayed an experimental frontier. Every new rule needed a local reproducer and a full regression pass.

The first pack passed the gates—and failed completely

Five levels replayed successfully. Their average static corpus fit was 78%, temporal fit 80%, and richness fit 87%. Yet none of their named subjects could be reliably found in the images. Human acceptance was 0 out of 5.

The failure was not one bad coral board. It was systemic. The subject name existed only as metadata; the art score measured density, entropy, regions, and color transitions. A board could score highly without containing the object it claimed to depict.

fig 06failure gallery · first pack

Five different descriptions, one shared failure

Figure 6. The first cohort exposed the Goodhart problem: the agent had learned to satisfy visual proxies, not to preserve meaning. All five solved. None survived semantic review.

The remedy was architectural. A deterministic image converter took an approved source image and produced a frozen pixel grid. The agent no longer had to draw and design gameplay in the same act. It received recognizable art and had one job: turn that art into a playable, fun level without destroying it.

The peacock laboratory: five stages, four revisions

The peacock became the clearest record of the new process. It did not improve in a straight line, and the metrics did not all rise together. The important change was that every revision carried a thesis, a replay, a visual comparison, and an explicit verdict.

fig 07peacock · five stages

Five stages, four revisions

Figure 7. The peacock did not become production-grade by adding “more.” It improved when composition and mechanic placement reinforced the same focal hierarchy.

The metrics reveal why aggregate scores were dangerous

The first playable peacock had the best static fit of the four playable versions, yet it was the weakest level. The dense frame reduced static fit. The scenic-key version scored as well as the accepted version across the three gate counts. Human judgment still separated them.

The useful movement was inside the metrics. Mean tray occupancy rose to 2.03 in the accepted level—near the recent-corpus median of 2.12—while mean available actions remained healthy at 1.69. The final level created more sustained pressure without collapsing into a forced script.

fig 08peacock · gate metrics

Peacock metrics across successive playable revisions

RevisionOccupiedStaticTemporalRichnessMean trayMean choicesVerdict
One Pixel Pipe54.9%11/132/46/60.971.57revise
Solid field + frame100%9/132/45/61.481.74revise
Scenic keys100%10/132/46/61.141.60reject
Peripheral Egg Boxes100%10/132/46/62.031.69accept
Figure 8. The final selection was not the row with the largest total. It was the board whose art, mechanics, and pressure made sense together. Every revision replayed to a win. Gate counts are corpus-band checks, not quality scores.
fig 09peacock · pressure vs choice

Mean tray occupancy and available actions through peacock revisions

mean tray occupancymean available actionsrecent-corpus tray median
Mean tray occupancy and available actions through peacock revisions Tray occupancy rises from zero point nine seven to two point zero three. Available choices remain between one point five seven and one point seven four. 0123 recent-corpus tray median 2.12 Pixel PipeSolid frameScenic keysEgg Boxes
Figure 9. The accepted revision brought pressure into the target neighborhood while preserving choice. This was a more informative improvement than the unchanged 10/13 static fit.

The agent changed from generator to editor

The resulting agent did not one-shot a board. It kept the frozen art and a portfolio of promising composition variants. It selected one thesis, modified a small part of the level, replayed it, measured it, rendered it, and judged the result against nearby shipped levels. Failed branches remained available as evidence and future starting points.

fig 10the mechanism

The production loop

01 · Choose sourceAdmit only an image that remains legible at target grid size.
02 · Freeze artConvert deterministically; preserve a reproducible visual baseline.
03 · State a thesisExample: peripheral Egg Boxes create pressure without competing with the subject.
04 · Edit locallyAdd, repaint, move, or remove one composition or mechanic idea.
05 · Replay + measureRequire a winning certificate; inspect pressure, choices, and corpus bands.
06 · Look + decideCompare the render with shipped references. Keep, branch, or reject.
Figure 10. The production loop. The final step routes back to the thesis, so the agent makes a series of small, inspectable decisions rather than one opaque generation.

Success improved gradually, not magically

The first full pack had zero jointly acceptable levels. A nine-run repeatability pilot produced two boards that passed both gameplay and visual review. The later production review yielded four accepted boards out of five. The remaining rejection mattered: it showed that human acceptance was still a real gate, not a ceremonial confirmation.

fig 11acceptance · three cohorts

Joint gameplay + visual acceptance by cohort

Acceptance increased from zero to twenty-two to eighty percent First pack zero of five. Repeatability pilot two of nine. Production review four of five. 0%25%50%75%100% 0 / 52 / 94 / 5 first packrepeatability pilotproduction review
Figure 11. Observed acceptance rose from 0% to 22% to 80%. These are development cohorts, not a claim about future production yield. Different cohort sizes; bars report the observed fraction, with exact counts shown.

What the project actually learned

lessonspostmortem · six

Semantic truth is its own gate

Color and structure metrics cannot prove that a named subject exists. Deterministic source conversion and human review closed that gap.

Solvability is necessary, never sufficient

All five rejected first-pack levels solved. A replay certificate says the rules permit a win; it does not say the route is interesting.

Progression has local context

Level 151 had to fit the recent corpus and the first position of a new batch. Global averages would have erased that role.

Pressure must remain recoverable

The objective was designed pressure with plausible relief, while keeping every level solvable without a booster.

Composition beats feature count

Four keys were not automatically richer than two Egg Boxes. The accepted mechanics supported the subject’s hierarchy and raised useful tray pressure.

Small loops produce better evidence

Local edits made regressions attributable. Saved variants showed which density, framing, and mechanic theses transferred across images.

The breakthrough was not a better prompt. It was a better unit of work: preserve a readable image, state a gameplay thesis, edit one thing, replay it, measure it, look at it, and repeat.

Provenance

All figures are derived from local development artifacts. “Acceptance” means joint human visual approval and deterministic winning replay within the stated cohort. Designed-pressure metrics are offline proxies, not player telemetry or conversion measurements.