Skip to content
Mecha Skirmish / ProgressPrototype field notes / v0.6

Progress

New local prototype work: scope, implementation contracts, and agent handoffs. Remote play is excluded.

Every work item from the project tracker, grouped by phase. The phases are the milestones of the GDD: a believable simulator first, then a tuned catalog, then a game that two people can play.

items done
138/169
in progress
6
decisions open
9
decisions made
29

By phase

Unphased

41/52 done · 1 active
  • BUG-017bugMomentum does not reach interactive melee after a qualifying Chargeactive
  • BUG-006bugDestroyed Head and Back retain derived Sensors and E-Def modifiers contrary to F7planned
  • TASK-028taskDecide B8 roster complexity: keep seven slots with the kit-then-two-swaps ladder (recommended), merge Head into Chassis, or fold Back into Legs. Reviewed 2026-09-06 at 35 partsplanned
  • TASK-108taskInstrument Pace, Deadeye and ranged Momentum and add per-roster intervals before the next balance studyplanned
  • TASK-120taskSecond corpus variant to cover the rules paths the default corpus never exercises: activationOrder alternate and alternate-opener (RollInitiative, ChooseNext), builds with F12 ammunition loads, grapples, the melee location reroll, defensive E9 rerolls, a durabilityScale other than 1, meleeOpportunityTarget null, verticalMovement legacy; pnpm sim corpus --variant coverage; the C# corpus test runs both (review of TASK-116, 2026-09-22)planned
  • BUG-003bugpnpm sim catalog prints the jammer mast's sensor bonus and drops its E-Def +2; the CLI back printer disagrees with the generated C6 Effect columnidea
  • BUG-004bugMonte Carlo balance-math tests time out under full-suite worker contentionidea
  • BUG-022bugUnity CLI 1.0.0-beta.8: unity test exits 0 and runs the previously compiled test assembly when a new test file fails to compile, with no CS error in the editor log; unity build reports success on a failed Linux build (missing sysroot). Both documented in the Unity repo's CLAUDE.md; worth reporting upstream via unity bugidea
  • IDEA-003ideaChoose a working title (Mecha Skirmish is a placeholder)idea
  • TASK-109tasksite/export-liste.mjs: sort items by id before writing site/data/liste.json; liste list --json order is not stable, so every pnpm site:data churns the whole file (1,362-line diff on 2026-09-14 with one new item)idea
  • TASK-112taskFold data/weapon-skills.json into data/parts.json equipment and mode entries, edit them in the Tuner, and generate their rulebook rows from the catalog (adoption follow-up to TASK-111)idea
  • BUG-001bugAI attacks with a weapon canAttack rejects: 'Reaver: cannot attack with leftArm' in 1000-game Quarry batch (seed 1) after durability x0.73 + glance 3/4done
  • BUG-002bugBot froze in place for whole games on maze-like maps: with no line of sight the greedy approach used hex distance, so any building between it and the enemy left no reachable hex that scored better than standing still (100% draws, 0 attacks on Foundry v2)done
  • BUG-005bugEnraged browser test expects stale engine version markerdone
  • BUG-007bugWeapon form lookup bypasses resolved profile overrides and changes legacy replay snapshotsdone
  • BUG-008bugTuner edits of transforming weapons leave the default form out of syncdone
  • BUG-009bugGuard form offensive dice incorrectly increase shield defense dicedone
  • BUG-010bugEscape does not cancel launch platform reposition modedone
  • BUG-011bugAircraft Fire records reactor meltdown as self destructiondone
  • BUG-012bugLocal match aircraft definitions remain mutable after setupdone
  • BUG-013bugWhole-game content study counts raw overkill as actual damagedone
  • BUG-014bugWhole-game content study permits incomplete or stale input provenancedone
  • BUG-015bugWhole-game content study does not reject overlapping train and holdout seedsdone
  • BUG-016bugContent study conflates voluntary Vent actions with stress vent resultsdone
  • BUG-018bugWhole-game postanalysis accepts incomplete factorial and unverified policiesdone
  • BUG-019bugWhole-game postanalysis attributes both teams damage to each rosterdone
  • BUG-020bugTuning register link to the content prototype report does not resolve in packetdone
  • FEAT-011featurePlay tab: a human side chooses which of its mechs activates next (E2); today the controller picks with the bot's turn-value policy for humans too (T30)done
  • IDEA-004ideaGenerate rulebook section C tables (and the html copy) from data/*.json so the Tuner and the rulebook cannot driftdone
  • IDEA-005ideaAmmunition loads for ballistic weapons: AP, HE, incendiary and flechette loads bought with weight (KT Piercing/Devastating/Limited analogs); energy weapons take Overcharge (heat) instead. Gives light rosters an anti-armor answer that is not a cannondone
  • IDEA-006ideaOverdrive for Energy weapons (F12 counterpart): more dice or Pen for extra Heat, the way Kill Team plasma supercharges; gives the Pulse arm its own version of the load choicedone
  • IDEA-007ideasim grid: a CLI command for the mutual-best-response grid (aggression 0.5/0.75/1.0 per side, both sides per cell, equilibrium reported) so balance verdicts are one command instead of a throwaway script (register T21, T31)done
  • TASK-020taskDecided: lethality target is about half of all games ending in a wipe inside the round cap (2026-09-05); reached with Durability x0.69, glance stays at half damagedone
  • TASK-021taskDecide how balance is judged: each side at its best-response bot aggression (today A 1.0, B 0.75) instead of the default 0.5, and whether the tuning default moves to 0.75done
  • TASK-022taskCannon range 12 -> 10 (register T4/T18): light roster 25% -> 40% at default bots, 34% -> 37% at best response; re-baseline afterdone
  • TASK-023taskResearch: how Kill Team 2024 balances weapons against saves and power across teams (docs/research/2026-09-05-kill-team-2024-weapons-and-armor.md)done
  • TASK-024taskDecided 2026-09-05: no mandatory heavy. Light and medium frames with light weapons must be a legitimate roster: target a 45-55% win band vs heavy rosters at best-response aggression (register T21)done
  • TASK-025taskBench and Tuner: choose alternate loads per weapon slot in the roster builder, edit loads in the Tuner (F12); the engine, CLI and batch already support themdone
  • TASK-026taskSecond map: Foundry (data/maps/foundry.json), industrial blocks with broken sightlines, point-symmetric, centre slab; plus the pnpm sim maps sightline audit (T4 map lever)done
  • TASK-027taskDecide the map order rule for best of three (I1): fixed neutral rotation, or the loser of game one picks the next map. Simulator: map order is worth about ten points of match win rate (45% vs 55%)done
  • TASK-032taskProject subagents in .claude/agents: scout, sim-runner, publisher (haiku); implementer, writer, reviewer (opus); CLAUDE.md Subagents sectiondone
  • TASK-094taskPublish reviewed current prototype packet to productiondone
  • TASK-095taskAdd a packet stats guide for parts, pilots, and weaponsdone
  • TASK-110taskDecide the turn-order rule after study 01: revisit E2 (TASK-036) with the finding that the same side opens every round at 3v3 and turn order sweeps mirror cells (register T71)done
  • TASK-111taskWeapon abilities for the transforming weapons and the guard lance: one Charge track per mech and one named skill per weapon (Phial Discharge, Amp, Shelling and Wyvern's Fire, Extracts, Counter), behind a rule flag, measured in the simulator before adoption. Owner decision 2026-09-15 after study 01 found the transformers roster at 16 to 19 percent and three lance packages identicaldone
  • TASK-113taskPacket site: restyle to a plain, conventional documentation look (light default, standard type, simple nav and tables), less stylized; owner request 2026-09-22; branch packet-plain-ui, screenshots for approval before deploydone
  • TASK-114taskExport a seeded replay corpus from the prototype: a few hundred games across the three maps and the study rosters as JSON event logs with seeds and rule versions, plus a checker script; this is the acceptance reference for the C# rules (TASK-010 follow-up)done
  • TASK-115taskUnity project skeleton: Unity 6.3 LTS, URP, text serialization forced, Steamworks.NET, Linux and Windows build profiles, Unity CLI build and test from the command line, CI job (TASK-010 follow-up)done
  • TASK-116taskC# rules core in Unity: hex board, rulebook A to I as deterministic C# with integer math and a seeded rng, the typed event log, and a test that replays the exported prototype corpus and reports every divergence (TASK-010 follow-up)done
  • TASK-117taskUnity vertical slice on Steam Deck: one mech assembled from parts, one die that lands on the board, one activation driven by the C# rules' event log, running on a Steam Deck with the default controller config (GDD M4, TASK-010 follow-up)done
  • TASK-118taskDecide the art production approach for Unity: 2D sprite parts with Sprite Swap versus modular 3D with shared skeletons, or the render-3D-as-2D hedge; the spike informs it (TASK-013 in the Unity context)done
  • TASK-119taskDecide the camera under HD-2D: the locked 2.5D camera rotates in 90-degree steps, but HD-2D sprites face the camera, so a full rotation shows one facing from every angle. Options: fixed camera; limited swing (about 30 degrees each way); sprites with 2 or 4 facings and 90-degree stops. Raised 2026-09-22 with the HD-2D decisiondone

Phase 1 · Believable sim

13/14 done · 0 active
  • TASK-014taskDecide v1 content targets: pilots per faction, maps in ranked poolplanned
  • FEAT-001featureSim: terrain, elevation and geometric LOS on the board (H3-H6)done
  • FEAT-002featureSim: zones and zone scoring (H7, I4)done
  • FEAT-007featureBattle tab: hex map panel - positions, moves per activation, LOS lines on fire eventsdone
  • TASK-001taskSim: smarter AI policy - kiting, focus fire, heat planningdone
  • TASK-003taskDecide proposed rules: lite facing E8, pen thresholds F5, crit/stress tables F8 G2, scoring I4-I6, Fire-once E4done
  • TASK-006tasksim sweep: vary one catalog value across batches and print a comparison tabledone
  • TASK-007taskSecond AI policy (cautious: kiting, cover-seeking) for differential tuning vs greedydone
  • TASK-009taskGDD v0 draft (docs/gdd.md)done
  • TASK-010taskChoose production engine (Godot / Unity / Unreal); platform decided: PC full-engined game, desktop + Steam Deck explicit, iPad potentialdone
  • TASK-011taskDecide online scope: ranked, async turns, activation clockdone
  • TASK-012taskDecide monetization model (recommendation: cosmetics only, full catalog for all)done
  • TASK-013taskDecide art production approach (2D modular sprites vs modular 3D); camera decideddone
  • TASK-015taskSim performance: cache sight per activation, prune candidate hexes; positional AI runs 80-130 games/s vs 10k beforedone

Phase 2 · Tune and expand

10/15 done · 0 active
  • TASK-002taskTuning pass from 2026-09-05 baseline: heavy armor vs light weapons, crit threshold, Courier survivability, Pulse armplanned
  • TASK-005taskWeb: component tests with jsdom for Bench/Battle/Batchplanned
  • TASK-017taskEvaluate part power through legal-build outcome profilesplanned
  • FEAT-010featurePart and weapon tuner: edit data/*.json from the bench with validation, derived weapon metrics and a quick-check batchidea
  • TASK-019taskGrapple conversion: allow Throw in the same activation as a successful Grapple, or raise the class bonus (43 grapples, 3 throws)idea
  • FEAT-003featureSim: reactions - Overwatch, Backup Fire, Marrow riposte (E6, D4)done
  • FEAT-005featureSim: Guard, smoke launcher, indirect fire (E5, C6)done
  • FEAT-009featureMelee attack system: improvised strikes for every mech, knockdown/grapple, charge bonus, Guard/Brace interaction (rulebook F11)done
  • TASK-004taskRoster complexity review after part catalog is drafted (B8)done
  • TASK-008taskPart catalog expansion: 3-4 options per slot per runner, with runner philosophies (C, GDD 6)done
  • TASK-016taskPower model v0: per-part/pilot/mech power in engine/power.ts, surfaced in Tuner, Bench and CLIdone
  • TASK-018taskDecide Backup Fire limits: require partner within 2 hexes and/or heat cost; 9690 backup shots per 1000 gamesdone
  • TASK-029taskDecide the hit-rate levers: drop the long-range die and make the evasive die a Boost/5-hex reward (register T27)done
  • TASK-030taskDecide rooftops: H3 says roofs are hexes at the building's level, the engine keeps buildings impassable (Jump legs included)done
  • TASK-031taskDecide a melee exchange mechanic (Kill Team 2024 fight sequence adapted to our dice) so closing the gap means lethalitydone

Phase 3 · Play it

74/88 done · 5 active
  • TASK-097taskCompare common melee difficulty with Evasion-based opportunity poolsactive
  • TASK-099taskDefine component responsibilities and meaningful assembly sidegradesactive
  • TASK-104taskMeasure transforming weapons with paid bot form choicesactive
  • TASK-105taskSeparate pilot stats from faction ability effects in matched testsactive
  • TASK-106taskDiagnose starting-player and map-dependent balance swingsactive
  • TASK-072taskTest heavy engagement pace without relying on survivalplanned
  • TASK-073taskIsolate the Causeway identical-roster side biasplanned
  • TASK-074taskDiagnose Foundry bot approach and inactive Overwatchplanned
  • TASK-082taskHuman-test aimed Core lethality and focus-fire pressureplanned
  • TASK-084taskDiagnose early casualty agency and one-sided attritionplanned
  • TASK-086taskHuman-test Enraged retaliation and reciprocal escalationplanned
  • TASK-098taskEvaluate fixed base damage as a separate combat prototypeplanned
  • IDEA-001ideaPublish docs/rulebook.html via GitHub Pages (private repo needs Pro/Enterprise) or an internal hostidea
  • IDEA-002ideaAdditional objective types beyond hold zones: capture and carry, escort, timed relays (H7)idea
  • FEAT-004featureSim: best-of-three match flow with sideboard swap (I1, I2)done
  • FEAT-008featureHotseat prototype: click-to-act on the hex map using the engine (two humans, one screen)done
  • FEAT-012featureVisual core-box kit builder and independent held equipmentdone
  • FEAT-013featureUnify the packet and playable bench as one sitedone
  • FEAT-014featureComplete local roster, deployment, and best-of-three match flowdone
  • FEAT-015featureMake the board the center of Play with a persistent inspectordone
  • FEAT-016featurePresent visible dice and readable combat playbackdone
  • FEAT-017featurePreview action consequences and explain legal choicesdone
  • FEAT-018featureSave, resume, export, and replay human sessionsdone
  • FEAT-019featureInterview and implement remaining interactive rule mechanicsdone
  • FEAT-020featureExpand Workshop into a reusable build and roster librarydone
  • FEAT-021featureCreate repeatable tactical scenarios and controlled trialsdone
  • FEAT-022featureAdd playtest reports, guided learning, and accessible controlsdone
  • TASK-033taskDefine shared session, command, decision, and roster contractsdone
  • TASK-034taskCheck in a repeatable browser interaction test harnessdone
  • TASK-035taskDeployment interview: placement, roll-off, and reveal orderdone
  • TASK-036taskActivation-order interview: continuous alternation and game startdone
  • TASK-037taskOvercharge interview: extra action, cost, and timingdone
  • TASK-038taskEndgame interview: sudden death and match drawsdone
  • TASK-039taskClimbing heat interview: trigger and action boundariesdone
  • TASK-040taskReaction interview: optional responses and trigger orderingdone
  • TASK-041taskMatch setup interview: roster lock and local hidden sideboardingdone
  • TASK-042taskRoute human play through deterministic serializable commandsdone
  • TASK-043taskPersist and restore complete local sessionsdone
  • TASK-044taskSeparate four-mech rosters from legal deployed teamsdone
  • TASK-045taskBuild a named local library with edit, duplicate, and transferdone
  • TASK-046taskShow build comparisons, melee pools, and pilot synergiesdone
  • TASK-047taskBuild a board-centered Play layout and camera controlsdone
  • TASK-048taskAdd mech silhouettes and a persistent tactical inspectordone
  • TASK-049taskPresent combat dice and outcomes as readable sequencesdone
  • TASK-050taskExpose engine-backed action and movement previewsdone
  • TASK-051taskConnect previews to action controls and rule explanationsdone
  • TASK-052taskImplement manual deployment as a resumable phasedone
  • TASK-053taskCarry alternating activations across round boundariesdone
  • TASK-054taskPause for optional human reactions and resume safelydone
  • TASK-055taskRemove Overcharge from active rules and prototype statedone
  • TASK-056taskImplement approved sudden-death and terminal result rulesdone
  • TASK-057taskImplement approved climbing heat and movement interruptiondone
  • TASK-058taskAdd a human best-of-three match controllerdone
  • TASK-059taskAdd local hidden sideboard selection and revealdone
  • TASK-060taskReplay human sessions with exact decision and event positionsdone
  • TASK-061taskBuild an isolated scenario editor and resettable trialsdone
  • TASK-062taskAdd repeatable tactical trial fixtures and side swappingdone
  • TASK-063taskExport playtest reports and annotated decision bookmarksdone
  • TASK-064taskAdd guided assembly and first-game learning scenariosdone
  • TASK-065taskVerify keyboard, touch, text, and motion controls across Playdone
  • TASK-066taskIntegrate the complete local prototype and update packet evidencedone
  • TASK-067taskRefine the battlefield into a reviewed strategy-game interfacedone
  • TASK-068taskMake safe elevation descent and deliberate fall planning accessibledone
  • TASK-069taskMake turn handoffs prominent and reorganize battlefield ordersdone
  • TASK-070taskAudit shot reliability, armor and heavy engagementdone
  • TASK-071taskTest ranged reliability and useful anti-armor choicesdone
  • TASK-075taskRecord isolated weapon and configuration auditdone
  • TASK-076taskGive independent arm bodies meaningful tradeoffsdone
  • TASK-077taskResolve unavailable pilot ability synergiesdone
  • TASK-078taskRepair weak armor-piercing ammunition rolesdone
  • TASK-079taskImplement reliable demo burst fire and aimed volleysdone
  • TASK-080taskMeasure sustained lethality and record real kill impactdone
  • TASK-081taskEstablish measured part and weapon power comparisonsdone
  • TASK-083taskMeasure first-death distributions and full-game attritiondone
  • TASK-085taskPrototype Enraged casualty response and measure paired attritiondone
  • TASK-087taskCompare permanent Enraged with the accepted temporary bonusdone
  • TASK-088taskCompare permanent offensive and defensive Enrageddone
  • TASK-089taskAdopt permanent offensive Enraged for new gamesdone
  • TASK-090taskRun a staged multivariant strategic balance study including command reservesdone
  • TASK-091taskEnforce rotational symmetry and paired objective zones on every mapdone
  • TASK-092taskAdopt ranged Accuracy plus two and paid vertical movementdone
  • TASK-093taskMeasure adopted rules and derive practical part and weapon pricing checksdone
  • TASK-096taskDocument assembly-centered balance experimentsdone
  • TASK-100taskAlign pilot factions and manufacturers with packet corporationsdone
  • TASK-101taskPrototype the thirteen non-musical Monster Hunter weapon familiesdone
  • TASK-102taskDesign and test a flying launch platform support unitdone
  • TASK-103taskReassess new weapon families and whole-game balance after content expansiondone
  • TASK-107taskRun isolated and combined balance experiments from the content reassessmentdone

By epic

Simulator v2: terrain, LOS, zones, reactions, match flow

EPIC-001 · 7/7 done
  • FEAT-001featureSim: terrain, elevation and geometric LOS on the board (H3-H6)done
  • FEAT-002featureSim: zones and zone scoring (H7, I4)done
  • FEAT-007featureBattle tab: hex map panel - positions, moves per activation, LOS lines on fire eventsdone
  • FEAT-003featureSim: reactions - Overwatch, Backup Fire, Marrow riposte (E6, D4)done
  • FEAT-004featureSim: best-of-three match flow with sideboard swap (I1, I2)done
  • FEAT-005featureSim: Guard, smoke launcher, indirect fire (E5, C6)done
  • TASK-007taskSecond AI policy (cautious: kiting, cover-seeking) for differential tuning vs greedydone

Game Design Document

EPIC-002 · 5/6 done
  • TASK-009taskGDD v0 draft (docs/gdd.md)done
  • TASK-010taskChoose production engine (Godot / Unity / Unreal); platform decided: PC full-engined game, desktop + Steam Deck explicit, iPad potentialdone
  • TASK-011taskDecide online scope: ranked, async turns, activation clockdone
  • TASK-012taskDecide monetization model (recommendation: cosmetics only, full catalog for all)done
  • TASK-013taskDecide art production approach (2D modular sprites vs modular 3D); camera decideddone
  • TASK-014taskDecide v1 content targets: pilots per faction, maps in ranked poolplanned

Complete the local test bench prototype

EPIC-003 · 12/12 done
  • FEAT-014featureComplete local roster, deployment, and best-of-three match flowdone
  • FEAT-015featureMake the board the center of Play with a persistent inspectordone
  • FEAT-016featurePresent visible dice and readable combat playbackdone
  • FEAT-017featurePreview action consequences and explain legal choicesdone
  • FEAT-018featureSave, resume, export, and replay human sessionsdone
  • FEAT-019featureInterview and implement remaining interactive rule mechanicsdone
  • FEAT-020featureExpand Workshop into a reusable build and roster librarydone
  • FEAT-021featureCreate repeatable tactical scenarios and controlled trialsdone
  • FEAT-022featureAdd playtest reports, guided learning, and accessible controlsdone
  • TASK-033taskDefine shared session, command, decision, and roster contractsdone
  • TASK-034taskCheck in a repeatable browser interaction test harnessdone
  • TASK-066taskIntegrate the complete local prototype and update packet evidencedone

Unity production client: the game rebuilt in Unity with its own deterministic C# rules, checked against the prototype's rulebook and replay corpus; PC and Steam Deck first, iPad later (owner decision 2026-09-22, TASK-010)

EPIC-004 · 6/7 done
  • TASK-114taskExport a seeded replay corpus from the prototype: a few hundred games across the three maps and the study rosters as JSON event logs with seeds and rule versions, plus a checker script; this is the acceptance reference for the C# rules (TASK-010 follow-up)done
  • TASK-115taskUnity project skeleton: Unity 6.3 LTS, URP, text serialization forced, Steamworks.NET, Linux and Windows build profiles, Unity CLI build and test from the command line, CI job (TASK-010 follow-up)done
  • TASK-116taskC# rules core in Unity: hex board, rulebook A to I as deterministic C# with integer math and a seeded rng, the typed event log, and a test that replays the exported prototype corpus and reports every divergence (TASK-010 follow-up)done
  • TASK-117taskUnity vertical slice on Steam Deck: one mech assembled from parts, one die that lands on the board, one activation driven by the C# rules' event log, running on a Steam Deck with the default controller config (GDD M4, TASK-010 follow-up)done
  • TASK-119taskDecide the camera under HD-2D: the locked 2.5D camera rotates in 90-degree steps, but HD-2D sprites face the camera, so a full rotation shows one facing from every angle. Options: fixed camera; limited swing (about 30 degrees each way); sprites with 2 or 4 facings and 90-degree stops. Raised 2026-09-22 with the HD-2D decisiondone
  • TASK-120taskSecond corpus variant to cover the rules paths the default corpus never exercises: activationOrder alternate and alternate-opener (RollInitiative, ChooseNext), builds with F12 ammunition loads, grapples, the melee location reroll, defensive E9 rerolls, a durabilityScale other than 1, meleeOpportunityTarget null, verticalMovement legacy; pnpm sim corpus --variant coverage; the C# corpus test runs both (review of TASK-116, 2026-09-22)planned
  • TASK-118taskDecide the art production approach for Unity: 2D sprite parts with Sprite Swap versus modular 3D with shared skeletons, or the render-3D-as-2D hedge; the spike informs it (TASK-013 in the Unity context)done