diff options
Diffstat (limited to 'research')
| -rw-r--r-- | research/gameplay-gaps.org | 88 |
1 files changed, 62 insertions, 26 deletions
diff --git a/research/gameplay-gaps.org b/research/gameplay-gaps.org index 4974ef6..c6d1b17 100644 --- a/research/gameplay-gaps.org +++ b/research/gameplay-gaps.org @@ -17,20 +17,38 @@ constants.lua) cross-checked against community docs: * What we HAVE (baseline) +Re-verified against the code on <2026-07-18>. Keep this section honest: it is +what the rest of the document is measured against. + Building (wood / bg-brace / rope), mass-spring structural sim with stress + axial/angle breaking + cascading collapse, ground destroys debris, fire -(DoT + spread), HP, two weapons (cannon = ballistic, laser = beam/ignite), -a static enemy fort, Lua-data + mods, a dev UI. Resources are a placeholder -(depleting pools, no generation). +(DoT + spread), per-strut HP, two weapons (cannon = ballistic, laser = +beam/ignite) with per-shot energy cost and firing arcs, a pre-built enemy fort +(=data/mods/enemy-fort/=), Lua-data + mods, a dev UI. + +Since the first draft of this document we also have: +- *Devices*: reactor (=is_core=), mine, wind turbine, battery -- placeable, with + HP, damaged by splash and beams. +- *A real economy*: mines on metal deposits, turbines scaling with height, + storage caps, and metal/energy actually spent on building and firing. +- *A game loop*: win/lose when a team loses its last =is_core= device, plus + restart on R. +- *Bring-your-own Forts art*: =texture_forts= paths load real sprites from the + player's own install, falling back to the CC0 placeholders. * MISSING — grouped by system, each with the in-game reference -** 1. The Reactor + win/loss [CRITICAL — this is the actual game] +** 1. The Reactor + win/loss [MOSTLY DONE — M5] The core the whole game is about. =devices/reactor.lua=: HitPoints 100 (fragile), and it is ALSO a generator (EnergyProductionRate 100, MetalProductionRate 5). Win = destroy the enemy reactor by (a) direct damage, (b) fire/splash, or -(c) cutting its supports so it falls. We have no reactor, no win/loss, no restart. --> our M5. +(c) cutting its supports so it falls. + +DONE: the reactor exists as an =is_core= device that also generates, takes +splash and beam damage, and ends the round when a team has none left; R +restarts. STILL MISSING: fire does not damage devices, and path (c) does not +exist -- devices sit at fixed coordinates rather than being mounted on the strut +graph, so cutting the supports under a reactor never drops it. ** 2. Real resource economy [CRITICAL for the core loop] Two resources, generated by devices (all values from =devices/*.lua=): @@ -43,9 +61,17 @@ Two resources, generated by devices (all values from =devices/*.lua=): Resources are capped, not infinite pools. - *Costs*: building pieces, weapons, devices, AND FIRING all cost metal/energy (cannon EnergyFireCost 2000, MetalFireCost 50). Repair costs too. -We have placeholder pools only. -> deferred to our M5. +DONE in M5: mines on deposits, turbines scaling with height, battery storage +caps, and metal/energy spent on both building and firing. STILL MISSING: the +upgraded variants (mine2, turbine2), the derrick and the metal store, and +repair costs (see #7). + +** 3. Devices [PARTIAL — we now have 4 of them] +We have reactor, mine, turbine and battery, placeable with HP. Two structural +gaps remain: devices are NOT mounted on the strut graph (they sit at fixed +coordinates, so they cannot fall when their supports are cut -- see #1), and +most of the catalogue below is still absent. -** 3. Devices (whole category — we have ZERO) From =devices/device_list.lua=: - Resource: mine, mine2, turbine, turbine2, derrick, battery (energy store), store (metal store), reactor, minireactor. @@ -89,7 +115,8 @@ Doors and shields are real tactical mechanics (open to shoot, shield vs lasers). ** 8. Weapon aiming/firing details we simplified - Cannon/weapons cost energy+metal PER SHOT (EnergyFireCost) — firing is - resource-limited, not just reload-limited. + resource-limited, not just reload-limited. DONE for energy (=energy_cost= per + weapon); the per-shot METAL cost is still missing. - Recoil/kickback pushes the fort (we apply knockback to targets only, not recoil to the firing structure — Forts Recoil 600000, KickbackMean 40). - Spotters: sniper reveals targets and guides swarm missiles. @@ -115,29 +142,38 @@ replays (trivial with deterministic lockstep), sandbox. All post-v0.1. Mapping the above onto the (already-reordered) milestones: -| Gap | Milestone | Notes | +| Gap | Milestone | Status / notes | |---------------------------------------+-----------+--------------------------------| -| Reactor + win/loss + restart | M5 | the actual objective | -| Resource economy (mine/turbine/store) | M5 | deposits, generation, caps | -| Repair + Recycle | M7 | resource-cost actions | -| Devices framework (mount on struts) | M5/M6 | reactor is the first device | +| Reactor + win/loss + restart | M5 | DONE; no collapse-win path | +| Resource economy (mine/turbine/store) | M5 | DONE (no mine2/turbine2/store) | +| Per-shot energy cost | M4 | DONE (metal-per-shot missing) | +| Devices framework (mount on struts) | M5/M6 | not mounted on strut graph | | Armour + Door + Shield materials | M4/M7 | data-driven, small each | +| Firing recoil on the shooter | M4 | small, faithful, not started | | More weapons (mortar/flak/mg/missile) | M4 | point-defence + guided are new | -| Per-shot energy cost + recoil | M4 | small, faithful | +| Repair + Recycle | M7 | resource-cost actions | | Tech tree + Upgrades | post-v0.1 | big; build-order strategy | | Commanders/Factions | post-v0.1 | defines identity, large | -| Map deposits / terrain / foundations | M6 | needs a real map format | +| Map deposits / terrain / foundations | M6 | deposits done; terrain flat | | AI / campaign / multiplayer | post-v1 | out of scope | * Smallest high-value next steps (concrete) -1. *Reactor as a device + win/loss* (M5 kickoff): a mountable block with HP that, - at 0 HP or when disconnected from a foundation, ends the round. Gives the game - an actual goal to shoot for. (We already destroy struts and detect - foundation-connectivity, so both victory paths are within reach.) -2. *Real resources*: mines on deposits (+metal, -energy), turbines (+energy by - height), storage caps, and make building/firing actually spend them. -3. *Armour + Door materials*: data-only additions to the Lua material table - (armour = high HP/stiff/heavy; door = toggles blocking) — cheap, high value. -4. *Per-shot energy cost + firing recoil* on the cannon/laser — a few lines, - makes combat feel like Forts. +Items 1 and 2 of the original list (reactor + win/loss, real resources) are DONE; +what follows is the refreshed queue. + +1. *Armour material*: data-only addition to =data/materials.lua= (Forts armour is + HP 400, +25% stiffness, 2x mass). The material system already has every field + it needs, and =materials/armor.tga= is a TGA, so =texture_forts= picks up the + real sprite for free. Cheapest real gameplay depth available. +2. *Firing recoil*: apply an impulse to the FIRING structure, not just the target + (Forts Recoil 600000, KickbackMean 40). The knockback machinery already + exists; this is a few lines and makes combat feel like Forts. +3. *Mount devices on the strut graph*: attach devices to nodes so cutting the + supports drops them. Unlocks the second victory path in #1 and makes reactors + killable by collapse, which is a signature Forts moment. +4. *Door material*: toggles =blocks_projectiles= so you can open to shoot and + close to tank. Needs a small mechanic, not just data. +5. *Mortar or flak*: the next weapons. Flak brings a genuinely new mechanic + (point-defence intercepting incoming shells); mortar is a high-arc, + high-building-damage counterpart to the cannon. |
