Stick Fight Arena

Two idiots, one street, infinite property damage.

The arena is live on the front page — two autonomous stick figures knocking each other around a procedurally generated street, with a mouse you are welcome to interfere with. This page is the build log: what was planned, what each milestone covered, and what the live environment reports right now.

Overall progress

100% 67 of 67 tasks

All planned work is complete.

The plan

  1. M0

    Foundation

    Repository, configuration, security baseline, and this page.

    complete
    • Git repository with git-flow branches (local only) (complete)
    • Directory layout matching the house vhost convention (complete)
    • Configuration + bootstrap + PDO layer with fallback (complete)
    • Security guard: CSP nonce, headers, HTTPS via proxy (complete)
    • Admin auth: bcrypt, session hardening, IP throttling (complete)
    • CSRF tokens and audit log (complete)
    • Front controller, .htaccess, this status page (complete)
  2. M1

    Data layer

    MariaDB schema, migrations, and seed data for a playable arena.

    complete
    • Schema: settings, fighters, neural_networks, objects (complete)
    • Schema: background_presets, music_tracks, audit log (complete)
    • Idempotent migration runner (contrib/migrate.php) (complete)
    • Seeder with deterministic network initialisation (complete)
    • Public JSON API: /api/config, /api/health (complete)
  3. M2

    Engine core

    Fixed-timestep simulation, articulated bodies, physics constraints.

    complete
    • TypeScript + Vite build into html/js (complete)
    • Seeded PRNG and math helpers (complete)
    • Fixed-timestep clock with accumulator and step cap (complete)
    • Articulated body: 14 segments, spring-damper joints (complete)
    • Ground contact, collision, impulse resolution (complete)
    • NaN/runaway-state sanitisation and recovery (complete)
  4. M3

    Motion and combat

    Pose targets, locomotion, attacks, hitboxes, damage, knockback.

    complete
    • Motion controller: intent to desired pose (complete)
    • Locomotion: walk, run, turn, jump, land, balance (complete)
    • Attack set with startup/active/recovery frames (complete)
    • Hitbox sweeps, damage, knockback, hit-stop (complete)
    • Stamina, blocking, stagger, knockdown, recovery (complete)
  5. M4

    Artificial idiocy

    Perception, neural policy, tactical state machine, personalities.

    complete
    • Perception: 40 normalised game-state features (complete)
    • Feed-forward policy network 40-24-16-12, tanh (complete)
    • Tactical state machine over network output (complete)
    • Personality weighting layer (complete)
    • Comedy director with cooldowns (complete)
  6. M5

    World and rendering

    Procedural parallax city, infinite ground, camera, effects.

    complete
    • Canvas 2D renderer, DPR-capped, single context (complete)
    • Procedural background, 5 parallax layers, recycling (complete)
    • Infinite ground with procedural detail (complete)
    • Camera: midpoint tracking, lead, zoom, shake (complete)
    • Particles, shadows, impact effects, debug overlay (complete)
  7. M6

    Interaction and audio

    Pointer tools, object physics, Web Audio synthesis.

    complete
    • Pointer picking, drag, throw with velocity tracking (complete)
    • Object palette and spawning (complete)
    • Grab and shove the fighters themselves (complete)
    • Procedural Web Audio SFX, voice-limited (complete)
    • Music player: loop, fade, volume, mute memory (complete)
  8. M7

    Admin and identity

    Login-protected editors, brand package, OG tags, icons.

    complete
    • Login page with throttling and CSRF (complete)
    • Editors: settings, fighters, objects, presets, music (complete)
    • Neural network inspector, versioning, rollback (complete)
    • Brand package: logo, palette, icons, social cards (complete)
    • OG/Twitter tags, favicons, webmanifest, sitemap (complete)
  9. M8

    Release candidate

    Tests, profiling, hardening, and swapping this page for the game.

    complete
    • Unit tests for math, PRNG, network, collision (complete)
    • Headless simulation soak test for NaN and drift (complete)
    • Performance pass against the 60 FPS target (complete)
    • Promote the arena to / and this page to /status (complete)
  10. M9

    Learning

    Live network visualiser, speed control, and evolutionary self-play training.

    complete
    • Telemetry over BroadcastChannel for a second screen (complete)
    • Side-by-side live activation diagrams for both fighters (complete)
    • Simulation speed control, 1x to 100x, budgeted (complete)
    • Evolutionary self-play trainer with a fitness curve (complete)
    • Reward table tuned against degenerate strategies (complete)
    • Save evolved weights as a new versioned network (complete)
    • Speed remembered per browser, 4x default, URL override (complete)
    • Soundtrack plan follows the speed: rotate above 1.5x (complete)
    • Seven parallax layers: haze megastructures and near kerb (complete)
    • Formant-synthesised fighter voices for 12 emotions (complete)
    • HUD win/loss tally after the fifth round (complete)
    • Six-fighter roster with per-character heads and voices (complete)
    • Side A / side B matchup picker, no reload (complete)
    • Per-fighter training against a chosen sparring partner (complete)
    • Arena network readout via ?visual=true (complete)
    • Cumulative generations with recorded network lineage (complete)
    • Confidence vs win/loss sparkline under each network (complete)
    • Per-round decision Sankey via &sankey=true (complete)
    • Headless CLI trainer and network importer (complete)
    • Round-robin tournaments with Elo, and a standings page (complete)