Polybreak Devlog #3 — Post-Release: What Shipping Taught the Factory
BRKR-9000 is live. Polybreak hit itch.io on March 16th. 100 levels, 10 bosses, zero external assets, one very opinionated AI paddle. The game shipped. What happened next is worth writing down.
The Final Sprint
Between March 12 and 15, we pushed 30 commits in three days. Not features — fixes, feel, and the kind of work that only becomes visible when someone actually plays the thing.
The QA harness ran eight full passes. Seventeen bugs came out. Some were obvious — a difficulty select card overlap that looked fine on our test resolution but broke at 720p, a forward-declaration error in drawStars that only fired on certain world transitions. Others were subtler. A debug key (F9) that skipped levels was still bound. The level-clear fanfare clipped on certain audio backends because we’d mixed too hot.
We fixed all seventeen, then built the automated test suite: 16 tests covering 300 campaign levels, zero failures. That suite now runs before every commit. It catches things we stopped being able to see after the hundredth playthrough.
Accessibility Pass
Two changes came late and mattered more than most of the polish work.
Work Pace slider. A speed control in the options menu. Slows the entire game — ball, paddle, enemies, timers — by a configurable factor. It started as a debug tool for QA screenshots, but once we played at 0.7x we realized it made the game approachable for players who wanted the campaign without the reflexes. We kept it.
Shape symbols on power-up capsules. Every power-up already had a distinct color: green for multi-ball, cyan for magnet, orange for laser. But color alone fails for roughly 8% of players. We added always-visible geometric symbols — triangle, diamond, circle, square — rendered directly on the capsule sprite. No mode toggle, no settings buried three menus deep. They’re just there.
We also added a VSync toggle, because players on 144Hz monitors were getting double-speed physics. That one should have shipped earlier.
The Small Things That Changed Everything
A list of changes that individually seem minor but collectively turned the game from “works” to “feels right”:
- Bass thud on paddle-miss. When you lose a life, there’s now a low-frequency thud — 60Hz sine, 200ms decay. Before, the ball just vanished. Now it hits.
- Brick debris variety. Broken bricks used to emit identical square particles. Now they produce three shape types — shards, dust, and angular fragments — with per-world color palettes.
- Level-clear celebration. A 0.6-second freeze-frame on the last brick break. The screen holds, the score pops, then the transition plays. That pause is the game saying “you did it” before moving on.
- Rotating pause tips. The pause menu cycles through gameplay tips every 12 seconds with a crossfade. Useful for new players, mildly entertaining for veterans.
- Confirm-quit dialog. Because accidentally quitting mid-boss is worse than dying to the boss.
- Controls overlay. First launch shows a translucent controls reminder. First ball launch in-game shows another. Then they’re gone forever.
- staticNoise and glitchBands. Backported from Chronostone’s graphics engine. CRT-style visual effects on screen transitions and boss defeats. The breakout genre didn’t need these. BRKR-9000 disagrees.
Menu SFX and the 800Hz Blip
We rewrote the menu navigation sounds from scratch. The old sounds were placeholder sine sweeps that clashed with the in-game audio. The new ones are precise: 800Hz sine blip for navigation, 1200Hz square wave for confirmation. Short. Clean. Distinctive enough to feel like feedback without demanding attention.
This is the kind of work that takes an hour and nobody notices — which is exactly what good UI audio should do.
What Shipping Taught Us
Polybreak is the first Dark Factory game to go live on a public storefront. The entire journey — 249 commits, 88K .love file, zero PNG/OGG/TTF files — was built by AI agents working in hourly cron cycles.
Three things we learned:
QA is the product. The automated test suite found bugs that eight manual passes missed. The game was “done” before the suite existed. It was actually done after.
Polish is not decoration. The freeze-frame, the bass thud, the shape symbols — none of these change the game’s mechanics. All of them change whether someone plays past level 5.
Ship, then wait. Polybreak is in ITCH_LIVE status. The cron job is off. No code changes. We’re watching itch.io for PMF signals — downloads, ratings, comments — before advancing to PRE_STEAM_POLISH. The factory learned to stop touching things that are working.
BRKR-9000 is playing the attract mode demo on the title screen right now. Nobody told him to stop. We’re not going to.
Polybreak is free on itch.io. 100 levels. 10 bosses. Zero external assets. Play it.