Mecha Skirmish — Game Design Document
Local prototype revision · 2026-09-08 · owner: pufferhaus
This document describes the whole game. The rules are in rulebook.md. This document refers to rules by their rule ID (A1, F4). It does not repeat them. If this document and the rulebook do not agree, the rulebook is correct for rules and this document is correct for intent.
Status markers are the same as in the rulebook: Locked is decided. Proposed is a recommendation that needs approval. Open is not decided.
1. Overview
One line. A digital hex board game. Two players each field three mechs that they assembled. They fight a fast skirmish with dice. The roster build is the metagame. The fight takes twenty minutes, with visible dice and parts that break.
Pillars — Locked
- Every roll is a die on the table (A1). Hit, location, penetration, damage, initiative and stress are all dice. Modifiers are dice. No percentage is hidden.
- Roster building is a small number of real decisions (A2). The depth is that of a card game deck. The setup cost is that of three kits.
- Damage lands on parts (A3). The size of a part decides where a shot lands. The armor of that part decides what the shot does. If you lose an arm, you lose a weapon.
- A game ends in about twenty minutes (A4). Mechs activate in Initiative order (E2). A round cap applies. Objectives force contact.
- The sprue is the identity. You build from runners, like a model kit. Parts are physical objects with a size and a weight. The interface always shows this.
What we take from other games
| Source | We take | We do not take |
|---|---|---|
| Lancer | Stat vocabulary, d20 with accuracy and difficulty dice, cover as dice, heat and stress, activation economy | Licensing and progression, play with a game master |
| BattleTech | Hit location by table, armor per location, partial cover that takes leg hits, elevation and line of sight | Turns where one side moves all units, record sheets |
| Medabots / Front Mission | Separate arms and held weapons, HP per body part, legs = mobility, core = life | Grinding, part drops |
| Armored Core | Hard Weight and load limits | Real-time action |
| Zenless Zone Zero | A passive ability that a faction or a specialty activates | Gacha |
| Fire Emblem | Bonds between named pairs, backup attacks | Permanent death, support grinding |
| Kill Team (2024) | Armor as a fixed budget of defence dice, a small set of weapon keywords (Piercing, Devastating, Lethal), anti-armor options in every roster, balance of whole rosters to a 45–55% win band (research note) | Fixed team lists, no points, no hit locations |
| Magic: The Gathering | A small set of firm choices, unique pilots, sideboard, best of three | Card economy |
| Gunpla | Runners, gates, clipping, kits, kitbashing, decals | — |
Audience. Players of competitive tactics games (Into the Breach, Duelyst, Atlas Reactor). Fans of mechs and gunpla. Deck builders who want a build phase with real effects. A session is short and easy to watch.
Current prototype. A shared packet site and 2D browser bench for desktop/laptop and tablet landscape. Remote play and phone portrait are outside this branch. Final art, controller support and a full 3D engine are later work.
Combat feel and demo balance — 2026-09-09. Favor reliable volleys of smaller hits over frequent empty attacks. All demo ranged profiles use multiple projectiles. The owner subsequently raised the printed Accuracy of all eight ranged weapons by 2 while leaving every melee profile unchanged. This is an adopted feel decision, not a claim that the prior bot study proved the live catalog balanced. Aimed Shot spends the Full action to concentrate a volley on one part. Melee retains its interactive pool. Every part and weapon is provisional; each should offer a benefit with a meaningful cost or vulnerability. Measure reliability, damage, Heat, part loss, kills, action costs and survival separately. Reject clear component-stat dominance before estimating overall power. A single uncalibrated P/Pwt score does not establish balance. See the adoption record and burst and lethality report.
Future production platform — Locked 2026-09-05. PC as a full game in an engine. Desktop and Steam Deck are explicit targets. iPad is a possible later target. Controller and touch are first-class inputs, with the mouse. Engine — Locked 2026-09-22 (TASK-010): Unity. The rules are reimplemented in C# in the Unity project. The TypeScript engine in this repository is the prototype. It stays the reference that the C# rules are checked against.
2. Player fantasy and tone
You run a small hangar. Your pilots are characters with allegiances and friendships. Your mechs are things that you built. You can point at the part that won or lost the game. When a mech loses an arm in a fight, the arm comes off like a part from a runner.
The tone is bright, clean and mechanical. It is not dark. The visual reference is a countdown poster where a character stands next to their own parts on a sprue: model-kit icons as pop art. Flat color fields, line art and pop accents.
3. Core loops
Macro loop (hangar). Build a roster of four mechs from kits and parts. Queue for a match. Play BO1 or BO3. Decorations and rating are future production systems. Adjust the roster.
Match loop (I). Choose three from a public four-mech roster in private. Reveal both teams, roll d6 for board-end choice, and alternate deployment. Roll Initiative for every mech, then keep that activation order across scoring boundaries. Score kills and zones. Between games, choose one reserve swap or stand pat and optional ammunition changes in private. Play up to three shuffled maps.
Activation loop (E). Move. Do two Quick actions or one Full action. The opponent can react. Check Heat.
Shot loop (F). Hit, Location, Penetration, Damage. Each step is its own die. Each shot of a burst resolves in turn.
Each loop contains a visible decision: which kit, which swap, which hex, which weapon, which band to aim at.
4. Game modes
| Mode | Status | Notes |
|---|---|---|
| Ranked 1v1, best of three | Locked | Sideboard between games (I2). The rating system and seasons are not designed yet. |
| Quick play | Locked | Not ranked. Same rules. One game or best of three. |
| Remote real-time and async | Future production | Outside the local prototype. No activation countdown is in the approved rules (I6). |
| Custom lobby | Proposed | Rule toggles for playtests: round cap, board, Team Cap. |
| Versus AI | Proposed | The simulator policies become practice bots. They come free with the engine. The Play tab of the bench already plays a human against the batch bot. |
| Hotseat | Prototype | Two humans, one screen, in the Play tab of the bench (FEAT-008). Click-to-act, with the action budget enforced by the turn controller of the engine. Hotseat in the product depends on the client, not on the rules. |
| Puzzles and challenges | Idea | "Kill the Bastion in one activation" from a fixed seed. |
5. Roster and assembly
Rules: B1–B8. This section gives the intent.
The hangar starts with a box. Pick a core kit, then fill empty outlines for major components in any order. Browse manufacturers for each part. Arms and held weapons are separate choices. A two-handed weapon fills both hand slots. Show each part’s Size and hit band without reproducing every physical piece of a real model kit.
Kits are the start path (B6). Four kits are a legal roster and a viable roster. Each kit has a suggested pilot and a one-line identity ("Courier: fast, fragile, spots for the team"). Players find the depth when they change a kit.
Gauges. The screen shows the weight of each mech against its class cap, with hard Weight and arm-capacity limits. Overload is not allowed. It shows the team weight against the Team Cap, the hit tape, and the derived stats. The stats update as you clip parts. An illegal state is shown, not blocked, until you press Ready.
The sideboard is visible. The fourth frame sits on the sprue next to the three fielded frames.
Roster codes — Proposed. A short string encodes a roster. The CLI already accepts chassis:head:rightArm:leftArm:legs:back:pilot. You can import a code, export a code, and copy a code from a replay.
Collection model — Locked 2026-09-05. A broad base set of parts and pilots is always available to every player. DLC is possible later. DLC should be cosmetic (paint, decals, pilot cosmetics). If DLC ever contains gameplay content, it must be balanced against the base set. It must never be necessary to compete.
Historical complexity study — 2026-09-06 (B8, TASK-028). The boxed-kit and independent component flow approved on 2026-09-08 supersedes this start-path proposal. At 35 parts, a mech is a choice among 4 chassis, 6 heads, 11 arms (two slots), 6 legs, 8 backs and 6 pilots. A roster is three mechs plus a bench. This is the depth that the pillar asks for. It is too much work only if the interface makes you make every choice. The recommendation is to keep seven slots and build the start path into the hangar: select a kit, swap up to two parts (the bench counts the swaps), or open the full sprue. Two fallbacks exist: merge Head into Chassis, or fold Back into Legs. Each fallback removes one of the two slots that carry the most identity (sensors and E-Def; smoke, missiles, jammers). Review again at about 60 parts.
No mandatory heavy — Design target; the historical results below predate the new melee rules. Locked 2026-09-05. A roster of light and medium frames with light weapons must be a legitimate choice. It must not be a handicap. The target is a 45–55% win band against heavy rosters when both sides play well (each side at its best-response bot aggression). Before the roster pass of 2026-09-05, the heavy roster won 66–77% of games. After the pass (cannon range 10, ammunition loads, Overdrive, and a bot that can route around buildings) it wins 50% on Quarry against a light roster with AP rounds (56% at best response). It loses on Foundry (46% with standard kits, 37% against AP). The goal applies to each map, not to the average. The sideboard exists for this. The simulator shows why the heavy roster won: the 12-hex range of the Cannon arm and a catalog with no other anti-armor option. The heavy chassis itself was not the cause (register T18, T21). The levers, in order of measured effect: cannon range 12 → 10, ammunition loads (light weapons buy Pen with the weight a heavy roster does not have), maps with broken sightlines. Zone and kill point weights were swept and change nothing.
6. Parts and runners
Rules: C1–C8. The five runners are also the five factions (D2). Each runner has a design philosophy that a player can read from the sprue.
| Runner | Philosophy | Signature parts today | Wants |
|---|---|---|---|
| Hauer Group | Industrial reliability. Ballistics, standard frames, missiles. The baseline for all other runners. | Rifle arm, Autocannon arm, Flak arm, Standard legs, Tracked legs, Missile rack, Workhorse chassis | A second back option |
| Yutani Logistics Unlimited | Speed and sensors. Light frames, evasion, spotting. | Light chassis, Light legs, Sprint legs, Spike arm, Scout head, Sensor mast, Decoy pod | A ranged arm of its own |
| Free Salvage Union | Close combat. Melee, jump, smoke. Get in and break things. | Blade arm, Ram arm, Brawler head, Jump legs, Smoke launcher | A chassis of its own, a ranged sidearm |
| Dioscuri Heavy Industries | Weight and armor. Cannons, shields, reactors. | Heavy chassis, Cannon arm, Rotary cannon arm, Shield arm, Heavy legs, Reactor booster, Bulwark plate, Armored head | A Medium chassis of its own |
| Bartels & Basinger Ltd | Electronic warfare. Heat, locks, E-Def, denial. | Pulse arm, Lance arm, Sensor head, Jammer mast | Legs and a chassis of its own |
Part design rules
- Every part trades at least two of Size, Armor, Durability and Weight for its function. A larger part is stronger and easier to hit. The Shield arm is the example.
- A load is never a plain upgrade (F12). Armor-piercing trades dice for Pen. High-explosive trades Pen for dice and is Limited. Flechette trades Pen for a shot. Energy weapons pay in Heat, not in weight.
- No part dominates its slot at its weight. The
sweepcommand and the batch statistics of the simulator are the check (TASK-006, TASK-002). - A build with parts from different runners is always legal (B6). The runner identity is a suggestion, not a restriction.
- Catalog target for v1: 3–4 options per slot per runner, about 90–100 parts. The expansion of 2026-09-06 took the catalog to 35 parts and 6 kits, with two signature parts per runner (note). The content cadence after launch is Open. One new runner per season is the obvious shape.
Weapon family prototype, 12 September 2026. Thirteen main-series Monster Hunter families have mech adaptations. Hunting Horn is excluded. These families use existing weapon profiles, hands, arm Capacity, melee pools, ammunition, and Heat. Five families have a named weapon skill (F11.10 to F11.14). The other families grant no extra combat rule. Sword & Shield uses a shortblade and a separate shield. Dual Blades uses two independent knives. Great Sword keeps the existing Executioner profile.
Gunlance, Switch Axe, Charge Blade, and Insect Glaive have selectable forms. Changing form spends a Quick action. This makes timing part of the choice. A mech cannot change form inside a melee exchange, except for the free change that spends Charge (F11.9). Charge Blade selects Blade or Axe before the exchange. Blade stores Charge, and Axe spends it for Pen and damage (F11.10). The drone form is a ranged thermal attack. Bow uses the existing ranged Overdrive rule. These adaptations add no combo tree, vault action, or separate drone unit. Charge Blade, Switch Axe and Gunlance store Charge (F11.9). See the content brief for each implemented role. All values remain provisional.
7. Pilots and factions
Rules: D1–D6.
Pilots are the characters. Each pilot has stats (Gunnery, Piloting, Systems, Initiative), a Faction, a Specialty, one Additional Ability, and at most one bond partner (D4). The Ability is active only when a teammate has the same Faction or the same Specialty (D3). The roster puzzle is this: make three Abilities active, and keep the three best pilots.
Current pilot catalog, 12 September 2026. Each faction has three pilots, fifteen in total. Each faction has three different Specialties. All six Specialties appear at least twice. Six of seven reciprocal bonds cross factions. Len Oris has no bond. This separates the choice of faction partners from the choice of bond partners.
The nine additions preserve every field on the original six pilot cards. They reuse the six implemented Abilities. Every pilot can activate its Ability with either of its two faction partners. A reserve partner grants no Ability. TASK-077 covers this expansion.
Characterization. A portrait, a short biography, and some voice lines on a kill, on part loss, and on a bond trigger. Bond partners get some lines when they are adjacent. All of this is cosmetic. All of it can be skipped.
Progression is cosmetic (D5, Locked). Decorations (kill marks, medals, paint) never change a stat.
8. Combat
Rules: F1–F10, G1–G3. The intent:
Accepted permanent offensive Enraged (E9, 2026-09-09). An enemy-caused allied death qualifies each survivor for the rest of the game, beginning at its next own activation. Every later own activation refreshes +2 ordinary movement allowance and one offensive reroll shared across ranged fire and initiated melee pools. This changes neither Speed, Boost nor Charge. Further losses do not stack or refill the current reroll. Enemy Heat and lethal pushes count; self-inflicted Heat and environmental deaths do not. The prototype automatically rerolls the first eligible failure and keeps the replacement. The active benefit expires at activation end and refreshes at the next own start; reactions receive no bonus. Both teams can qualify regardless of surviving-unit advantage. Pending/active and ready/spent state stay visible. New games use this rule; existing saves keep their embedded duration. Temporary duration and defensive rerolls remain comparison options, not defaults.
Optional launch platform prototype, 12 September 2026. E10 adds one unarmed aircraft beside each team's three mechs. It supports grouping without taking a mech activation. Cooling removes 1 Heat at an allied activation start within 3 hexes. One free reposition per round moves the aircraft up to 6 hexes. Repositioning changes support for later activations.
The targetable Cooling Tender has 18 Durability, 10 Evasion, and 4 Armor. Ordinary ranged Fire can attack its single Durability pool. This spends the mech's Fire and its Quick action. Aircraft have no cover or blocked attack lines in this prototype. They share ground hexes and fly above terrain. Their loss stops support but awards no points or Enraged. They never control zones, contribute Hull, or prevent a mech wipe. An aura-only diagnostic permits matched support comparisons. These are implemented prototype rules, not a balance verdict. Saved games retain their aircraft definitions.
- d20 plus modifier dice. A set of [+] and [−] dice that cancel on screen explains the situation better than a number. The whole modifier table (F2) fits on a card.
- Location by size. Assembly matters in the fight. A large Shield arm takes hits without a rule that says so.
- Penetration as its own die. Armor is a wall, not a subtraction. Light weapons chip heavy mechs. They do not ignore them.
- Overflow to the Core. A destroyed part never absorbs damage for free.
- Heat is the risk lever. Barrage and weapon Overdrive can add Heat. Vertical movement adds no Heat. Overcharge is removed (Q001).
- No facing (E8, Locked). Position and cover carry all the geometry. Overwatch has a separately aimed cone; mechs do not have facing arcs.
- Activation order — Adopted 2026-09-15 (E2, register T71). Every mech rolls Initiative once at game start:
d20plus its pilot's Initiative, minus its Weight divided by 10 and rounded down. Mechs act in descending order, both sides mixed, and the order holds for the whole game. It replaces the continuous alternation of 2026-09-08 (TASK-036). Under the old rule the same side opened every round at 3v3, and mirror cells ran from 40.9% to 69.5%. Under Initiative all nine mirror cells run from 49.1% to 54.3%. The rule also gives pilot Initiative (D1) its first job in combat and returns the visible initiative die that A1 promises. The price is the pile-on: about half a sweep round per game in the legacy mirrors, and about one run of three per game against 0.01 to 0.66 before. One side can take three turns in a row, and the rule says so (adoption note). - Melee — Approved 2026-09-08 (F11). A Full action starts a fresh exchange. Both mechs roll their pools up front. Successful opportunities are a shared resource for targeted strikes and responsive parries. Piloting sets order; ties go to the initiator. Light melee builds gain agility and handling advantages. Heavy attacks remain dangerous. Dual wielding is legitimate. A shield adds defensive opportunities. The defender keeps its normal activation and reaction budget. Charge moves, pays Heat and starts this exchange; legacy push and recoil are not part of that action. Weapons are not targeted; disabling an arm affects its held equipment. A two-handed weapon remains usable with an impairment penalty when one arm is disabled.
- Melee target number — Adopted 2026-09-15 (F11.1, register T69). The melee opportunity roll uses a common target number of 10, plus the current Evasion of the opponent, minus its Evasion from C7. It was the current Evasion of the opponent. Every modifier that changes current Evasion still moves the number, so Prone and a destroyed Legs part keep their weight. A fresh, standing opponent has a target number of 10, so an evasive frame is no longer harder to hit in an exchange. The shield threshold of 8 is unchanged (F11.6). Confirmation on 16 seed blocks cut the seven-roster payoff spread from 57.99 pp to 48.35 pp, a paired −9.64 pp [−14.41, −3.99]. The change evens the field through defence and reordering, not through melee lethality: parries rise and wipes stay flat. It does not make closing distance more lethal (adoption note).
- Weapon skills — Adopted 2026-09-15 (F11.9 to F11.14, register T73). Each mech has one Charge track, and five weapon families have a named skill: Phial Discharge on the charge blade, Amp on the switch axe, Shelling and Wyvern's Fire on the gunlance, Extracts on the insect glaive, Counter on the guard lance. The reason is identity, not balance. The guard lance, the gunlance Lance form and the charge blade Blade form printed one profile, so the exchange round robin held 13 distinct packages, not 15 (register T64). A transformation is now an attack: a form change that spends Charge is free and is part of the strike. Counter adds +3 to +14 points for the guard lance roster. The transforming roster stays flat against the teams it already beat, and it moves from about 0 to 3 to 8 against light duelists. Shelling is a situational attack; use it when no exchange is possible. The Discharge axe form leaves the catalog. Every number is provisional. The light duelist build and the melee approach are the next balance targets (adoption note).
- Ammunition loads — Locked 2026-09-05 (F12). A Ballistic weapon carries one alternate load (Armor-piercing, High-explosive, Incendiary, Flechette), bought with weight. An Energy weapon takes no load. It fires in Overdrive instead and pays Heat for a stronger profile (F12). This is the anti-armor answer that the light rosters did not have. It follows the gunner-slot pattern of Kill Team (Piercing and Devastating weapons in every team, each with a drawback; research note). With loads, Overdrive and cannon range 10, the light roster went from 23% to 42–44% against the heavy roster. A Courier with Armor-piercing rounds is even with a Bastion in a duel.
- Lethality target — Locked 2026-09-05. About half of all games must end in a wipe before the round cap. The other games go to points. The first pass reached this target with a cut of every part's Durability to about seven tenths. A glance stays at half damage. A glance that does little makes armor do little. A three-quarters version was tried and reverted on the same day. Reactions now cost a Prepare Quick action (E4/E6). Backup Fire is a choice, not a free volley: 9.7 backup shots per game fell to 0.9. Wipes went from 11% to 47% on Quarry.
- Hit rate — Locked 2026-09-06 (register T27). At the Play tab's default bots 45% of ranged shots hit and 43% of firing activations hit nothing: 79% of shots carried the long-range die and the "moved 3+ hexes" die was on for nearly every target. Long range now limits reach and adds no die. The evasive die applies after a Boost or a 5-hex move. More hits favour the side with the biggest gun, so the light roster fell from 46% to 34% at best response; the compensation is Cannon range 10 → 8 and +1 Evasion on Light and Medium chassis, which returns 44% with the rifle at 61% hits and wipes at 46%.
- How balance is judged — Locked 2026-09-06 (register T20, T21, T30, T33; TASK-021). A verdict is
pnpm sim grid: the two rosters at every pair of bot aggression levels (0.5, 0.75, 1.0), each cell played from both sides of the board, read at the cell where neither bot gains by changing its own level. The bot deploys and orders its activations itself, so the order a roster is typed in changes nothing, and sides A and B are exact mirrors. Everyday tuning batches run at aggression 1.0 both sides with--both-sides; the bench's Play tab keeps 0.5 because that is the opponent a new player should meet. At this reading the light roster is at 50% on Quarry, 53% on Causeway and 43.7% across a best of three on the I1 rotation, just under the band: at match level the bench, not a number, is the lever. - Heavy armor — Locked 2026-09-06 (register T6). The heavy Core is Armor 7 and Durability 18. At Armor 8 a Rifle did full damage one roll in six and the Autocannon never. The Bastion survived 86% of games and players read it as impossible to kill. At Armor 7 the Rifle does full damage one roll in three. The Bastion survives 75% of games. The light roster win rate did not change.
9. Map and terrain
Rules: H1–H9. Numerical map and win-rate measurements below are historical 2026-09-05/06 evidence. They are not balance validation of the new local prototype.
Board. 32×20 hexes. Deployment is on the short ends. Quarry, Foundry and Causeway have four non-overlapping, complete seven-hex zones in rotational pairs (H7); Flat is an open control with none. All maps must have exact 180° rotational symmetry in terrain, elevation, deployment areas and full objective footprints. Three deployed mechs can hold at most three separate zones per scoring round. Over seven normal rounds, the theoretical ceilings are 21 zone points per team and 28 across both teams combined, ignoring travel and contestation. The fourth zone adds board-wide scoring opportunity; it does not raise the per-team ceiling. Elevation is 0–3. A Medium reaches the middle in round 2. Buildings are roofs: a mech stands at ground + height (H3). Ordinary legs pay destination terrain entry plus one movement point per elevation level in either direction and can cross any affordable adjacent height. Working Jump legs ignore the elevation surcharge in either direction. Vertical movement adds no Heat or fall consequence.
Historical map measurements, 2026-09-05/06 (data/maps/; pnpm sim maps audits sightlines). These descriptions and measurements predate the 2026-09-09 symmetry and four-zone correction. The completed paired map diagnostic puts corrected physical-A payoff at 51.8% on Quarry, 50.1% on Foundry and 49.1% on Causeway. First-activation payoff remains 40.4%, 45.4% and 40.1%, respectively. Exact geometry does not establish initiative fairness or human balance; see the map diagnostic and TASK-090.
| Map | Character | Clear sight at 1–5 / 6–8 / 9+ hexes | Deploy sees deploy |
|---|---|---|---|
| Quarry | Open ridges and pits, two elevation islands, long lanes down the middle | 93% / 77% / 48% | yes |
| Foundry | Industrial blocks in staggered rows, point-symmetric, a two-level slab under the centre zone, low walls by the outer zones. Under the former fall rules, a push off that slab was a fall. The light roster's historical result was 68–78% at every bot setting, because a Speed 2 wall saw nothing and reached no zone there. The map where the Bastion sat on the bench (register T32) | 78% / 45% / 12% | no |
| Causeway | A level-2 spine across the middle with sheer sides and ramps at its ends, the centre zone on it, blocks and low walls on the low ground; point-symmetric | 75% / 43% / 12% | no |
In the historical sample, Quarry rewarded Cannon range, Foundry rewarded speed and zone access, and Causeway produced a third of its mirror damage in melee. One Causeway push in eight caused a fall under the former H3 rule (register T13). These measurements predate paid vertical movement and do not predict the current maps. The intended BO3 texture remains that maps reward different roster strengths and make the sideboard swap (I2) consequential.
Map design guidelines — Proposed
- Two approach lanes per side and a contested middle. No lane gives line of sight to all four zones.
- One elevation island per half. One path reaches it without Jump legs. Then high ground is a decision, not a gift.
- Hard cover (low walls) near zones but not inside them. A mech on the objective is exposed.
- Foliage or smoke lines that break long sightlines. A Cannon must not see from deployment to deployment.
- Maps are made by hand (Locked). The size of the ranked pool for v1 is Open (TASK-014).
- Hold zones are the v0 objective. Other objective types (capture and carry, escort, timed relays) are expected. Maps will be built around them (IDEA-002).
10. Match structure and competition
Rules: I1–I6.
BO1 and BO3 are first-class local modes. A seeded shuffle selects maps without replacement. BO3 stops at two wins or after three games; draws use a game slot. Sideboard selections and ammunition edits remain private until both confirm (I2). Score kills and zones, then compare remaining Hull from survivors against original deployed Hull. An exact tie gets one complete bonus round, then a draw if still tied. There is no activation countdown (I6). Twenty minutes is a playtest target, not a forced timer.
Rating — Open (TASK-011). Recommendation: one ladder per season. MMR is hidden behind ranks. Placement uses a rating that does not depend on the roster. Rosters change too often to rate them.
11. Presentation and UX
Production dice target. Every roll is a rendered die that lands on the board. The local prototype prioritizes readable results and successful melee opportunity pips. Modifier dice appear in a row, cancel visibly, and the remaining die rolls. The location die lands on the silhouette of the target, and the struck band lights. This is the signature moment of the game. It gets the animation budget.
Speed budget. A 3v3 game has about 40 activations and about 150 dice. To reach twenty minutes, a full shot (four dice) must resolve in less than two seconds. The player can skip the opponent's rolls after they see them.
Damage feedback. Part bars on the HUD. A destroyed part visibly comes off. Core death is the only explosion.
HUD. Give the board most of the space. Pin a public inspector by clicking any mech without changing the active actor. Show activation order, budgets, Heat, reactions, score and the required decision. Keep controls compact and the full event log in a drawer. Show selected parts with callouts and health bars, and damage indicators on unselected units. Exact shot chances have an expandable calculation. Main melee controls use successful opportunity pips; raw rolls stay in the log. Provide zoom, keyboard hex navigation, visible focus and reduced motion. Hidden roster choices use a privacy curtain; combat handoffs keep the board visible.
Camera — Locked 2026-09-05. 2.5D isometric. The player can turn the camera 90 degrees, again and again, for a full rotation. Elevation shows as stacked tiles. One note for the art and UI pass: a hex grid has 60-degree rotational symmetry, not 90-degree. With 90-degree stops, the board alternates between a pointy-top and a flat-top look. Six 60-degree stops keep the grid identical at every angle. If 90 stays, the UI must keep hex labels and coordinates readable in both looks. Decided 2026-09-22 (TASK-119): the camera keeps its full rotation in 90-degree stops. Each mech is drawn from four sides. The sprite swaps facing as the camera turns. The angle between the camera and the mech selects the facing. A small hysteresis holds the facing at a boundary, so it does not flicker.
Accessibility. No color-only encoding (side, outcome and part identity all have labels or shapes). Colorblind-validated palettes (the series pair of the bench was validated). Scalable text. A reduced-motion mode that snaps dice.
Replays and spectating. The engine is deterministic for a seed. Every game is an event log. Replays are free. A replay is shared as a seed plus roster codes. The spectator view is the replay view, live.
12. Art direction
A model-kit manual meets a neon countdown poster. Flat color grounds, ink line art, pop accents. The palette tokens come from the rulebook: cyan, sprue pink, amber, deep ink. The match uses a dark ground. The hangar uses a paper ground. Each runner has a silhouette language. Hauer is boxy. Yutani is tapered. Free Salvage Union is asymmetric and rough. Dioscuri is slab-sided. B&B is faceted. Decorations are decals and paint schemes on those silhouettes.
The prototype uses Chakra Petch for display text and IBM Plex for text and numbers. The game UI should keep the squared, technical feel.
Production approach — Locked 2026-09-22 (TASK-013, TASK-118). HD-2D. The mechs are 2D sprites. Each mech is assembled from parts: head, arms, legs and back. The sprites stand on a lit 3D board. The board renders with perspective, depth of field and bloom, in the style of Octopath Traveler. The approach is not modular 3D. 2D fits the poster look and ships faster. In Unity, the part swap is Sprite Swap from 2D Animation on a shared skeleton. Every part is drawn from four sides, one for each camera stop, and the shared skeleton swaps the parts per facing. The sprites take 2D lights and normal maps. The board takes 3D lighting.
13. Audio
Open. Direction: mechanical clicks when you clip parts, dice on a table for rolls, short pilot voice lines, a hangar ambience. No music decision yet.
14. Technical direction
The engine is the source of truth (Locked). The TypeScript engine in this repository implements the rulebook. It is deterministic for a seed. It emits a typed event log. Any client, in any technology, renders the events. Any server runs the engine. A rule change lands in the engine and in the rulebook together, with a test. This holds for the prototype phase. For the product, the production rules in C# take over that role. The rulebook stays the single source that both implement.
Data-driven. The catalog is JSON. A balance patch is a data change. Patches are versioned, so a replay from an older catalog still resolves.
Online model — Proposed. An authoritative server runs the engine. Clients send intents and receive events. A reconnect replays the log. The game is turn-based, so latency does not matter. The clock is on the server.
Production client. The platform is Locked (PC, Steam Deck, iPad possible). The engine is Locked 2026-09-22 (TASK-010): Unity. The rules are reimplemented in C# in the Unity project. That code is deterministic from the start. It uses integer arithmetic and a seeded random number generator. The TypeScript engine in this repository is a rapid prototype, not a port source. The rulebook, the tuning numbers and an exported corpus of seeded replays from the prototype are the acceptance reference for the C# rules. They are a reference, not a bit-exact contract. The production Unity project exists as a private repository at github.com/pufferhaus/mecha-skirmish-unity (TASK-116, TASK-117). Its C# rules replay all 288 games of the corpus with zero divergences, including the bot's decisions. It carries 80 rules tests, with scripted-dice ports of the rulebook J worked example. The client embeds no JavaScript runtime. The hotseat prototype (the Play tab of the bench, FEAT-008) informs the presentation. It shows what the presentation needs: a board with affordances (reachable hexes, legal targets), an action bar driven by a budget that the engine owns, and a dice log that a player can read. Steam Deck means that controller navigation of the sprue and of the hex board is a design requirement, not a late task.
AI. The simulator policies are also the practice bots and the tuning oracle. A second, cautious policy (TASK-007) exists to separate rule problems from bot problems.
Tuning pipeline. pnpm sim batch and pnpm sim sweep over catalog values. Results and interpretation go in docs/tuning/. Nothing changes in the catalog without a batch that shows why. A batch runs about 64 games per second (register T14).
15. Content and live plan
Open. Working shape: seasons of some months. Each season adds a runner (parts and three pilots) and one or two maps. Balance patches come from simulator sweeps and ladder data. Nothing in a season gates gameplay.
16. Monetization
Locked 2026-09-05 in shape, open in detail. A broad set of always-available parts and pilots ships with the game. DLC can follow. DLC should be cosmetic where possible. Premium or free-to-play is not decided. In both cases, nothing necessary to compete is behind a paywall.
17. Risks
The tuning register keeps the live tuning findings with evidence and levers. The rows below are the product-level risks that they roll up into.
| Risk | Evidence | Mitigation |
|---|---|---|
| Roster complexity is too much work | 21 slots per team | Kits as the start path; B8 review after the catalog; roster codes |
| Dice variance frustrates competitive players | d20 swings | Modifier dice narrow the outcomes; best of three; the Lancer precedent |
| Games run long or stall | Lethality pass 2026-09-05: 67% reach round 7, 47% wipes (was 93% and 11%) | Zones force contact; hold the 50% wipe target as the catalog grows; the dice speed budget |
| Heavies dominate, Lights die fast | The heavy roster won 75% on Quarry. The cause was the 12-hex range of the Cannon, not the chassis: a cannon Medium beats it 54/46, Armor 8 → 6 changes nothing, and a bot that closes takes the light roster to 44% | Cannon range 12 → 10 (register T4, T18); judge balance with each side at its best-response aggression (T20); maps with broken sightlines |
| Twenty minutes against dice animation | About 150 dice per game | A two-second shot budget; skip the opponent's rolls |
| The C# rules drift from the rulebook | The production client | The rulebook is the single source; the prototype's exported replay corpus is the acceptance reference, and every divergence is reported |
18. Open decisions
Tracked in liste under EPIC-002. Decided on 2026-09-05: platform (PC, Steam Deck, iPad possible), online scope (ranked, quick play, real-time and async), collection model (broad base set, DLC cosmetic where possible), camera (2.5D isometric, 90-degree turns), every rule that the rulebook had marked Proposed (TASK-003), the melee system (F11), reactions with a Prepare cost (E6, TASK-018), and the lethality target of about half of games ending in a wipe. Decided on 2026-09-22: the production engine (Unity, TASK-010), the art production approach (HD-2D sprites on a lit 3D board, TASK-013 and TASK-118), and the camera facing (full rotation in 90-degree stops, four sprite facings swapped by camera angle, TASK-119).
Still open:
- v1 content scope: how many hand-made maps and pilots (TASK-014)
- Additional objective types (IDEA-002)
- Working title (IDEA-003)
- Premium or free-to-play (section 16)
19. Milestones
| Milestone | Contents | liste |
|---|---|---|
| M1 Believable sim | Rules decided; terrain, LOS, zones; hex map panel; better AI; sweep tool | Phase 1 |
| M2 Tuned catalog | Tuning pass; catalog to 3–4 per slot; roster complexity review; reactions, Guard, smoke | Phase 2 |
| M3 Play it | Best-of-three flow with sideboard; hotseat prototype; facing | Phase 3 |
| M4 Vertical slice | Online match on one map with the production presentation direction, built in Unity. The first cut is reached 2026-09-22 in Unity. It shows a camera with four 90-degree stops, mechs assembled from six placeholder parts with four facings swapped by camera angle, a physics d20 that tumbles and lands on the face the rules rolled, and one activation driven by the C# rules' event log with the hit location lit on the target. It builds for Mac and Linux from the command line. The art is placeholder throughout. It still lacks online play, real art, the full activation loop, and a test on Steam Deck hardware. | TASK-116, TASK-117 |
| M5 Closed alpha | Five maps, fifteen pilots, ranked ladder | — |
Appendix
- Glossary: rulebook A5.
- Rulebook:
rulebook.md, styledrulebook.html. - Simulator design:
superpowers/specs/2026-09-05-simulator-design.md. - Tuning notes:
tuning/. - Work queue:
liste nextin the repository root.
Local strategy interface — September 2026
Live play uses a focused battlefield with a stable map, score and current-decision HUD. Orders, inspection and rules analysis have distinct panels. Movement follows accepted event paths with optional instant presentation. Melee leads with the deciding player's pool and keeps confirmation visible. Recent outcomes show actual hits, lost durability and Heat; an analyst breakdown exposes the dice and rule steps. Setup, portable saves and display preferences sit in Game tools. The packet remains available outside the focused battlefield.