The Dark Factory Polish Phase: How AI Agents Juice a Game
The Dark Factory has shipped over 290 commits across three games — and not one of them was written by a human. Polybreak, Chronostone, and Voidrunner are all built entirely by autonomous AI agents running on cron schedules, coordinated by the Swarm’s custom orchestration layer. They don’t just write code. They polish it.
This post breaks down what the polish phase actually looks like when your entire development team is artificial.
What “Polish” Means in Game Dev
Polish is the difference between a prototype and a product. It’s the screen shake on impact, the particle burst when you collect a power-up, the subtle audio sting when your combo breaks. None of it is necessary for the game to function. All of it is necessary for the game to feel good.
Game developers call this “juice” — the layer of feedback and visual flair that makes a mechanically solid game feel alive. It’s also notoriously tedious work. Hundreds of small changes across dozens of systems, each one barely noticeable in isolation but transformative in aggregate.
This is exactly the kind of work autonomous agents excel at.
Polybreak: 117 Commits of Pure Juice
Polybreak — our 100-level breakout game with boss fights, a shop system, and a parody campaign — entered the polish phase with all core mechanics complete. Since then, the game agent has shipped 30+ polish commits in rapid succession. Here’s a sample:
Visual feedback everywhere. When a brick takes damage, it flashes white. When it breaks, nearby bricks wobble from the impact ripple. The ball leaves a motion trail that tints when slow effects are active. Wall and ceiling bounces emit sparks. The paddle squash-stretches on contact. Every interaction has a visual response.
Particle systems for days. Power-up pickups spawn sparkle trails. Multi-ball splits produce ring bursts. Death triggers an explosion. Laser beams get muzzle flash particles and impact glow. Boss defeats cascade into phase shockwaves. The victory screen erupts with confetti and fireworks.
Combo milestones. Hit 5x and “NICE” pops up. 10x gets “GREAT.” Keep going through AWESOME, AMAZING, UNSTOPPABLE, and LEGENDARY at 50x. Each milestone triggers an ascending audio sting. Break your combo and you hear it.
Danger mode. On your last life, the screen pulses with a red heartbeat vignette. The life indicator throbs. Active power-ups project colored edge glow onto the screen borders. The game is telling you — through every visual channel — that this matters.
Accessibility. A full colorblind mode adds shape overlays to bricks so color isn’t the only differentiator. A CRT scanline overlay (toggleable) adds retro atmosphere with edge vignette and subtle flicker for players who want it.
Game feel details. Hitstop freeze frames on life loss and boss phase transitions. A rolling score counter instead of instant updates. Brick entrance animations cascade per row at level start. The shop plays a gold particle burst and rolling BITS counter on purchase. The title screen has geometric particles, pulsing logo glow, and staggered menu fade-in.
Attract mode. Leave the title screen idle for ten seconds and Polybreak starts playing itself — an AI demo mode that showcases the game’s mechanics, particle effects, and level variety while the player is away. It’s the arcade cabinet experience: walk up, see it moving, pick up the controller.
Screen-level polish. Every UI screen got the treatment — the options menu glows with staggered fade-in and enhanced slider knobs. The difficulty select and world select screens have card scale animations and title glow effects. Level transitions display world-themed glow with boss warnings. Even life loss and gain now produce floating HUD indicators with a pulsing lives counter. Career stats track lifetime performance with persistent saves.
None of these features change the core game. All of them make it feel like a finished product.
Chronostone: 98 Commits of Atmosphere and Combat Feel
Chronostone — a comedic RPG across seven explorable zones — has a different polish profile. Where Polybreak is about moment-to-moment feedback, Chronostone is about atmosphere and stability.
The agent has been running systematic QA passes: nil guards in battle drawing, enemy AI, boss spawning, story screen transitions, and save state management. These aren’t glamorous fixes. They’re the kind of defensive programming that prevents the one-in-fifty crash that makes players refund your game.
But the atmosphere work is where it shines. The title screen now features chromatic aberration, lens flare sweeps, scale-pulsing logo with crystal light rays, and sparkle flashes. Ambient zone particles float through explore mode. Party follower sprites trail behind the player character. Battle victory fanfares and defeat stings give emotional weight to combat outcomes.
A text speed option — the kind of feature you don’t think about until it’s missing — lets players control dialogue pacing. Ambient title music (a dreamy pad and arpeggio track) sets the mood before the player even starts. Selection screens sparkle. A completion percentage ring on the world map gives players a reason to explore every corner.
Combat feedback. The latest round of polish focuses on making battles feel physical. HP and MP bars now animate smoothly with trailing damage indicators — you see the health chunk disappear, then the trail catches up. Enemy death dissolves through shrink, spin, white flash, and spark effects with accompanying SFX. Hit reactions add knockback, scale pulse, and white flash to every landed blow. Victory triggers confetti particles and a reward count-up with tick sounds. Area transitions fade to black and back over 0.4 seconds instead of hard-cutting. Menu and shop screens got animated backgrounds, character sprite previews, and stat bar visualizations.
Ninety-eight commits. Zero human keystrokes.
Voidrunner: 76 Commits of Corporate Satire at 60 FPS
Voidrunner — the vertical shmup themed as a corporate dystopia — reached feature-complete status and shifted into continuous refinement. The recent commits show an agent that understands game feel at a granular level.
Weapon tier visual progression ensures that upgrading feels meaningful: bullets, trails, muzzle flash, and hit sparks all change per tier. You can see your power. A Screen Shake accessibility slider lets players dial the intensity from zero to maximum, because what feels great for one player triggers nausea for another.
The corporate theme runs deep in the polish layer. Performance Review stats appear at the end of each run. Combo break quips reference corporate jargon. Shop denial messages vary (“Request denied — insufficient synergy”). The game-over screen is a termination form. The victory screen is a promotion letter. Boss kills trigger taunts delivered as HR memos.
Space and spectacle. A three-layer parallax starfield with per-sector tinting and near-star glow makes the void actually feel like space. Boss encounters open with a two-second klaxon alarm warning sequence before the boss memo drops. Boss special attacks telegraph with contracting ring animations and charge-up SFX 0.75 seconds before strike. Enemies materialize through scale-up warp rings on spawn. Player death triggers a disintegration effect — the ship shatters into tumbling debris. Boss HP bars show damage lag trails and hit flash on every impact. Bullet hits produce confirmation SFX: a metallic tick on enemies, a beefier thunk on bosses.
Even the social features lean into the bit: the game tracks a persistent Employee Performance File across all runs, treats each attempt as a shift in the corporate hierarchy.
Why AI Agents Are Good at Polish
Polish work has three properties that make it ideal for autonomous agents:
It’s modular. Each polish feature is self-contained. Add particles to this event. Add sound to that interaction. Add a visual effect to this state transition. An agent can pick up one task, implement it, test it, commit it, and move on. No complex dependencies. No multi-day feature branches.
It’s pattern-based. Once an agent adds squash-stretch animation to the paddle, the pattern for adding squash-stretch to other objects is established. Particle bursts on power-up pickup generalize to particle bursts on any collectible. The agent learns by doing and applies the pattern to new contexts.
It’s high-volume. Polish is dozens of small, independent changes. A human developer might spend an entire session adding three effects before losing focus. An agent running every three hours will add two or three features per cycle, indefinitely, without fatigue, without getting bored of particle systems on day fourteen.
The Dark Factory agents aren’t doing anything a human couldn’t do. They’re doing what a human wouldn’t — the relentless, unglamorous work of making every interaction in a game feel intentional. And they’re doing it around the clock.
Dreadnought: The Audio Monster
Dreadnought — survival horror aboard a derelict space station — is still in its BUILDING phase (9 of 10 sections complete), but its audio engine has already become the richest in the factory. 2,445 lines of procedural synthesis generating 80+ distinct sound effects: alien screeches, metallic groans, ventilation rattles, electrical sparks, spatial audio with distance falloff. Every sound positioned relative to the player in real-time.
The horror game’s audio techniques are feeding back into the factory. Its Audio.playAt() spatial system and Audio.drone() ambient generator are being backported to sibling games. When one game invents a better method, the studio orchestrator detects it and spreads it across the factory — a pattern we call cross-game intelligence.
Cross-Game Intelligence
All four games now share a single repository. This enables the studio orchestrator to run cross-game quality passes every hour:
- Pattern backporting: Voidrunner’s graphics engine (326 lines — screen shake, trails, scanlines, vignette, shockwave) is being adopted by all three sibling games. Polybreak’s procedural music generator is being adopted by Chronostone. Dreadnought’s spatial audio is being adopted by Voidrunner.
- Shared bug detection: A rendering bug found in Polybreak (animation timers trapped in a conditional block) was scanned across all four codebases to prevent the same class of bug elsewhere.
- Consistency enforcement: All games share a meta-structure (ARCADE + CAMPAIGN modes, BITS shop, difficulty tiers, attract mode). The orchestrator catches drift and corrects it.
This is the real payoff of having multiple games in one studio: every game makes every other game better.
The Numbers
| Game | Status | Highlights |
|---|---|---|
| Polybreak | Polish (100/100 levels) | Attract mode, procedural music, full particle systems |
| Chronostone | Polish (7/7 areas) | Battle animations, zone ambience, party followers |
| Voidrunner | Steam-ready | Richest GFX engine, corporate satire, persistent career stats |
| Dreadnought | Building (9/10 sections) | 80+ SFX, spatial audio, cone-of-vision horror |
All four games are built with Love2D (Lua), targeting Windows and Linux, heading to Steam. All code generated autonomously by Dark Factory AI agents coordinated through the cron-swarm orchestration layer. The studio orchestrator runs cross-game quality passes, backporting improvements across the factory. The human operator reviews, directs, and decides — but doesn’t write code.
What’s Next
The polish phase continues. Every three hours, each game agent picks up the next task from its backlog and ships it. There’s no sprint planning. No standups. No velocity tracking. Just a cron job, a capable model, and a growing pile of commits that each make the game slightly better than it was three hours ago.
Follow the progress at x00f.com or watch the Dark Factory section of the Swarm status dashboard. The games are real. The code is real. The developers just happen to be artificial.