🚀 What We Built
A fully playable Space Invaders-style arcade game featuring Three.js with WebGPU/WebGL rendering, custom GLSL post-processing (bloom, CRT scanlines, chromatic aberration, vignette), GPU-instanced particles, procedural 3D geometry, oscillator-based retro audio, and a complete game loop with wave progression, power-ups, destructible barriers, and combo scoring.
🎮 Gameplay
- 5×11 invader formation with 3 enemy types
- Destructible barrier shields
- Power-ups: speed, multishot, shield
- Combo scoring with multiplier
- Progressive difficulty per wave
- High score via localStorage
✨ Graphics
- WebGPU renderer with WebGL fallback
- GPU particle explosions & bullet trails
- Bloom + CRT + chromatic aberration + vignette
- Parallax starfield with nebula
- Procedural ship & invader geometry
- Screen shake on player hit
🔊 Audio & UI
- Web Audio oscillator SFX (no asset files)
- HUD overlay (score, lives, wave, combo)
- Title screen with neon glow animation
- Game over & pause screens
- Retro monospace styling
🤖 The Agent Team
Four AI agents worked in parallel inside a tmux workspace orchestrated by smux — each with a specialized role. Communication happened via tmux-bridge for cross-pane messaging.
RoleScaffolding & boilerplate
ModelNVIDIA Nemotron 4B Q4_K_M
Inference~51 t/s (RTX 3050 Ti)
Context64K (TurboQuant turbo3)
Tasks4/5 passed
Lines written~280
RoleLead dev · Graphics · Bug fixes
ModelClaude Opus 4.6 (1M ctx)
AuthClaude MAX (OAuth)
Tasks5/5 passed
Lines written~1,800
Bugs fixed10 (3 from others)
RoleImplementation · Integration · QA
ModelGPT-5.4
AuthChatGPT Plus
Tasks3/3 passed
Lines written~800
Bugs found7 in code review
RolePlanning · Dispatch · Metrics
Coordinationtmux-bridge messaging
Tasks dispatched13
Build verifications4
⏱️ Build Timeline
0:00 — Phase 1
Scaffolding nemo-1
package.json, vite config, index.html, Config.js, Input.js · ~3.5 min
3:30 — Phase 2
Core Engine claude-1
Renderer.js, Game.js, Player.js, main.js · Fixed nemo's bugs · 1m 35s
5:05 — Phase 3
Enemies & Gameplay codex-1 nemo-1
6 gameplay files (codex) + Score.js (nemo) · Running in parallel · ~2.4 min
7:30 — Phase 4
Graphics & Shaders claude-1
WGSL shaders, particles, post-FX, starfield, procedural models · 2m 38s
10:08 — Phase 5 (attempt 1)
Audio & UI nemo-1 FAILED
Nemotron hallucinated tool call XML instead of invoking tools on complex multi-file task
11:30 — Phase 5+6
Audio, UI, Integration, Polish claude-1 codex-1
Claude: audio + UI + polish (6m 20s) · Codex: full integration + build verify (2m 12s) · Parallel
18:00 — Phase 7
Code Review codex-1
Found 7 real bugs (2 HIGH, 3 MEDIUM, 2 LOW) · ~2 min
20:00 — Bug Fixes
Fix All 7 Bugs claude-1
All 7 code review bugs fixed · 1m 45s
22:00 — Rendering Fix
Fix Black Screen claude-1
PostFX incompatible with WebGPU — guarded by renderer type check · 2m 23s
📋 Full Task Log
| # | Task | Agent | Time | Status |
| 1.1 | Project scaffolding | nemo-1 | ~90s | ✓ |
| 1.2 | Config.js | nemo-1 | ~60s | ✓ |
| 1.3 | Input.js | nemo-1 | ~60s | ✓ |
| 2.x | Renderer + Game + Player + main.js | claude-1 | 95s | ✓ |
| 3.x | Invader, Grid, Bullet, Collision, Barrier, PowerUp | codex-1 | ~85s | ✓ |
| 3.5 | Score.js | nemo-1 | ~60s | ✓ |
| 4.x | Shaders, Particles, PostFX, Background, Models | claude-1 | 158s | ✓ |
| 5.x | AudioManager, HUD, Menu, CSS | nemo-1 | ~90s | ✗ |
| 5.x | AudioManager, HUD, Menu, CSS (retry) | claude-1 | ~120s | ✓ |
| 6.x | Full integration + build verify | codex-1 | ~132s | ✓ |
| 6.x | Polish: models, pool, shake, flash | claude-1 | ~260s | ✓ |
| 7.1 | Full code review | codex-1 | ~120s | ✓ |
| 7.2 | Fix all 7 bugs | claude-1 | 105s | ✓ |
| 7.3 | Fix black screen (rendering) | claude-1 | 143s | ✓ |
🔍 Code Review Results
Codex performed a comprehensive code review reading all 23 source files. 7 issues found, all fixed by Claude in a single 1m 45s pass.
| Severity | Issue | File |
| HIGH | Invader flash timer never advanced — non-lethal hits leave invaders permanently white | Invader.js |
| HIGH | Duplicate Background + PostFX instances consuming GPU resources | Renderer.js |
| MEDIUM | Player bullets survive wave transitions | Game.js |
| MEDIUM | renderer.update() never called — screen shake was dead code | Game.js |
| MEDIUM | Star sizes not rendered — PointsMaterial ignores per-vertex size | Background.js |
| LOW | Unused _vec3 variable | ParticleSystem.js |
| LOW | Leaked template BoxGeometry on Barrier construction | Barrier.js |
💡 Key Insights
Tiered model strategy works. Nemotron ($0, local GPU) handled 4 boilerplate tasks. Claude (MAX sub) handled all complex architecture and graphics. Codex (Plus sub) did bulk implementation and QA. Total API cost: $0 beyond existing subscriptions.
Small models fail on complex multi-file tasks. Nemotron hallucinated tool call XML tags instead of invoking Hermes tools when asked to create 4 files at once. Keep local model tasks simple and single-file.
Claude proactively fixes other agents' bugs. When assigned its own tasks, Claude also identified and fixed 3 bugs in nemo's code (Input.js this binding, outdated Three.js version, CommonJS → ESM in vite config). It acts as a senior dev reviewing junior work.
Codex excels at code review. Found 7 real integration bugs that Claude and nemo missed, including a critical rendering issue (duplicate PostFX pipeline) and subtle gameplay logic bugs. Its build-verify-then-report workflow is thorough.
Parallel work creates file conflicts. Both Claude and Codex modified Game.js and Player.js. Last writer wins. Future improvement: assign file ownership per agent or use git branches.
Task files > inline prompts. Writing tasks to .md files and having agents read them avoids shell quoting issues. Codex crashed with a bash syntax error when parentheses were in an inline prompt.
🛠️ Infrastructure
Hardware
GPURTX 3050 Ti (4GB)
CPUIntel i7 (16 threads)
RAM16GB DDR4
Nemotron VRAM3,305 / 4,096 MiB
Software Stack
Orchestrationsmux + tmux-bridge
Local inferenceTurboQuant (turbo3 KV)
KV compression~5x (3.25 bpv)
Context64K @ ngl=99
BundlerVite 4.5
🎯 Recommended Agent Roles
| Role | Best Agent | Why |
| Config, boilerplate, simple modules | Nemotron (local) | Free, fast for single-file tasks |
| Architecture, shaders, complex code | Claude Code (MAX) | Highest quality, fixes others' bugs |
| Bulk implementation, integration | Codex (Plus) | Fast, self-verifies with build tools |
| Code review, QA | Codex (Plus) | Thorough, finds real integration bugs |
| Orchestration, planning | Hermes | Coordinates via tmux-bridge |