tiennm99 f74aa6c245 feat: v3 — tiers, drones, medals, bonus waves, announcer, hit-stop, top-5 leaderboard
Chicken-Invaders + 1942-inspired additions: stack a booster to level it
(L1-L3, larger spread / faster fire / deeper pierce), new drone
power-up spawning 1-2 orbital companions that fire along with you,
medal pickups that fly up on kill for bonus score and combo, a
meteor-rain bonus wave every 4th non-boss wave, flavor-specific
announcer banners (ROLL CALL, SHOOTERS JOIN, BOSS APPROACHING,
PERFECT WAVE), hit-stop on boss kills and combo bumps, and a
persistent top-5 local leaderboard with game-over placement
highlight. Verifier approved with zero blockers.
2026-04-19 10:25:28 +07:00
2026-04-19 08:26:27 +07:00

OMC Neon Arena

A top-down arcade survival shooter built with oh-my-claudecode multi-agent orchestration. Survive endless waves of neon enemies, chase the combo multiplier, and compete for the high score.

Built with oh-my-claudecode

This entire game was designed and implemented by a specialized multi-agent OMC team:

  • worker-1: Engine & scaffold (HTML5 canvas, fixed-timestep loop, input handling)
  • worker-2: Gameplay systems (player, enemies, bullets, waves, collision, scoring)
  • worker-3: UI & visual theme (HUD, menus, neon CSS aesthetic)
  • worker-4: Documentation (this README)

Pipeline: strategic planning → parallel execution (engine + gameplay + UI in lockstep) → verification → release.

How to Run

No build step. Open the game in your browser:

Option 1: Use a static server

# Python 3
python -m http.server

# Or Node.js
npx serve

Then visit http://localhost:8000 (or the port shown).

Option 2: Open directly Open index.html in your browser. (Note: Chrome and modern browsers may block module imports from file:// — use a server for best compatibility.)

Controls

Action Key
Move WASD or Arrow Keys
Aim Mouse
Shoot Click or Space
Pause P or Escape

Gameplay

Player

  • Health: 3 HP per run
  • Speed: 260 px/s
  • Shoot Cooldown: 140ms (≈7 shots/s)
  • Bullet Speed: 520 px/s
  • Invulnerability: 0.9s after hit

Enemy Types

Type HP Speed Color Score
Chaser 1 110 px/s Magenta 10 pts
Bruiser 4 55 px/s Yellow 40 pts
Splitter 2 90 px/s Lime 25 pts → splits into 2 Minis (1 HP, 5 pts each)

All enemies seek the player. Splitters explode into two faster mini-enemies when defeated.

Waves

Wave Contents Spawning
1 8 chasers 0.35s stagger
2 10 chasers + 2 bruisers 0.35s stagger
3+ Scales: 8 + wave×2 chasers, floor(wave/2) bruisers, max(0, wave2) splitters 0.35s stagger

Between waves: 2 second intermission to catch your breath.

Scoring & Combos

  • Base Points: Enemy score × combo multiplier
  • Combo Multiplier: 1 + floor(combo/5)
    • Earn 1 combo per kill
    • Combo resets if you take 2+ seconds without a kill
    • Max multiplier at 5 kills = 2×, at 10 kills = 3×, etc.
  • Example: Kill a bruiser (40 pts) with 7 combo stacks → 40 × (1 + floor(7/5)) = 40 × 2 = 80 pts

Architecture

The game uses a modular, file-scoped design to allow parallel development:

src/
├── main.js                 Entry point, bootstraps engine + game + UI
├── engine/
│   ├── loop.js            Fixed-timestep game loop, render loop, pause state
│   ├── input.js           Keyboard (WASD/arrows) + pointer input
│   └── entity.js          Base Entity class, EntityPool (free-list allocator)
├── game/
│   ├── game.js            Game state machine, collision dispatch, scoring/combo logic, shake FX
│   ├── player.js          Player movement, shooting, health, knockback, invulnerability
│   ├── enemy.js           Enemy types (chaser, bruiser, splitter, mini), pathfinding
│   ├── waves.js           Wave scheduler, difficulty curve, enemy queue
│   ├── bullet.js          Projectile entity, lifetime, collision tag
│   ├── particles.js       Particle emitter system, pools, lifetime decay
│   ├── collision.js       Broad/narrow phase collision resolution
│   └── audio.js           Procedural Web Audio SFX (shoot, explode, hurt, wave, gameover)
└── ui/
    ├── hud.js             Score, health, wave, combo display updates
    ├── menu.js            Start, pause, game-over overlay state
    └── highscore.js       localStorage high-score persistence

styles/
└── main.css               Neon cyan/magenta/yellow palette, glows, overlays, responsive layout

index.html                 Canvas host, HUD/menu/overlay DOM, ES module entry

What OMC Demonstrated

  • Parallel Task Decomposition: Three subsystems (engine, gameplay, UI) developed independently without merge conflicts.
  • Specialist Routing: Each agent played to its strengths — engine builder, gameplay designer, UI/visual specialist.
  • File-Scoped Isolation: Strict module boundaries prevented stepping on toes; no shared mutable state between lanes.
  • Dependency Ordering: Engine completed first, gameplay built on top, UI integrated last — critical path was visible and managed.
  • Verification Gates: Each subsystem verified before integration; final pass checked gameplay balance and visual polish.

This is a proof-of-concept that multi-agent orchestration scales to interactive, real-time applications.

License

Unlicensed. Built as a demo for oh-my-claudecode.

S
Description
No description provided
Readme Apache-2.0 169 KiB
Languages
JavaScript 79.5%
CSS 17.9%
HTML 2.6%