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