aboutsummaryrefslogtreecommitdiffstats
path: root/research/gameplay-gaps.org
diff options
context:
space:
mode:
authorVaino Kauppila <vaino@vke.fi>2026-07-02 22:58:25 +0300
committerVaino Kauppila <vaino@vke.fi>2026-07-02 23:47:07 +0300
commitcd0c08dc7ce754473178ad3f32f7740a1dddc1eb (patch)
tree589c676b41d6f3d322ea5ce339ddb0811f29ec31 /research/gameplay-gaps.org
downloadforts_clone-cd0c08dc7ce754473178ad3f32f7740a1dddc1eb.tar.gz
forts_clone-cd0c08dc7ce754473178ad3f32f7740a1dddc1eb.zip
Initial import: LibreForts (M0-M5 in progress)
Open-source Forts clone: custom C++20 engine + data-driven (Lua) 2D physics artillery RTS. - Building: node/strut graph on a stiff mass-spring solver (canon Forts model), triangulation rigidity, axial + 30-degree angle-stress breaking, cascading collapse, fire (DoT + spread), ground destroys debris. - Weapons (M4): cannon (ballistic) + laser (beam/ignite) with select-and-aim-in- arc UX; splash / beam damage; bg-brace passthrough. - Devices + economy (M5): reactors + win/loss + restart, mines/turbines/battery, metal deposits, storage caps, per-shot energy cost. - Data-driven via Lua/sol2 with a layered mod loader; enemy-fort scenario mod. - Renderer: SDL3 + textures + ImGui dev UI. stb_image + ImGui vendored. - Assets: CC0 placeholders only; real game art loaded at runtime from the user's own install via forts: paths (bring-your-own; nothing copyrighted committed). See README.md / CLAUDE.md and research/ + requirements/ for detail.
Diffstat (limited to 'research/gameplay-gaps.org')
-rw-r--r--research/gameplay-gaps.org143
1 files changed, 143 insertions, 0 deletions
diff --git a/research/gameplay-gaps.org b/research/gameplay-gaps.org
new file mode 100644
index 0000000..4974ef6
--- /dev/null
+++ b/research/gameplay-gaps.org
@@ -0,0 +1,143 @@
+#+TITLE: Forts Gameplay — What Our Clone Is Missing (sourced)
+#+AUTHOR: Forts Clone Project
+#+DATE: 2026-07-01
+#+OPTIONS: toc:3 num:t
+
+* Purpose
+
+An ENUMERATED, sourced list of gameplay systems Forts has that our clone does
+not — so scope is driven by facts, not vibes. Ground truth is the shipped game
+data (=SteamLibrary/.../Forts/data/=, device_list.lua / weapon_list.lua /
+constants.lua) cross-checked against community docs:
+
+- Steam guide "How to be a PRO at Vanilla Forts" (id 2035024654)
+- Steam guide "Forts Glossary" (id 1380793614) and "Base Building" (1308699887)
+- Forts RTS Wiki: Technology page
+- Wikipedia: Forts (video game)
+
+* What we HAVE (baseline)
+
+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).
+
+* MISSING — grouped by system, each with the in-game reference
+
+** 1. The Reactor + win/loss [CRITICAL — this is the actual game]
+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.
+
+** 2. Real resource economy [CRITICAL for the core loop]
+Two resources, generated by devices (all values from =devices/*.lua=):
+- *Metal*: Mines on metal *deposits* (=mine.lua= MetalProductionRate 4,
+ EnergyProductionRate -5 — mining COSTS energy). Upgrade =mine2= (5 metal, -7 e).
+- *Energy*: Wind *Turbines* — output scales with HEIGHT and clearance
+ (v0.1-core.org; MinWindEfficiency / MaxWindHeight fields). Reactor also makes
+ 100 energy + 5 metal baseline.
+- *Storage caps*: Battery (=battery.lua= EnergyStorageCapacity 2000), Metal Store.
+ 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.
+
+** 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.
+- Tech buildings: workshop, armoury, munitions plant, factory, upgrade centre
+ (see #4).
+- Utility/defence: sandbags (HP 300, cheap absorber), explosive barrel (barrel),
+ target (mission objective, HP 30).
+Devices mount on structure, have HP, can be shot, and some need clearance/ground.
+
+** 4. Tech tree + Upgrades [large system, OUT of v0.1 scope but core to Forts]
+5 tech buildings gate weapons (wiki Technology; weapon_list Prerequisite fields):
+- Workshop -> Mortar, Swarm Missiles
+- Armoury -> Flak, EMP Rocket
+- Munitions Plant -> 20mm Cannon, Cannon (needs Armoury)
+- Factory -> Firebeam, Plasma Laser (needs Workshop)
+- Upgrade Centre -> unlocks UPGRADING existing weapons/devices (mine2, turbine2,
+ mortar2, sniper2, minigun … =Prerequisite = "upgrade"=).
+Research/prereqs create build-order strategy. We have neither tech nor upgrades.
+
+** 5. More weapons [M4 continues]
+We have cannon + laser. Full vanilla roster (=weapons/weapon_list.lua=):
+machinegun, minigun (point-defence / anti-projectile), sniper (+spotter
+mechanic, guides swarm missiles), mortar (high-arc, high building damage),
+swarm missiles (guided), missile launcher, 20mm cannon, cannon, flak
+(anti-projectile), EMP rocket (disables devices), firebeam / plasma laser
+(beam). Notable *mechanics* we lack: point-defence (shoot down incoming shells),
+guided/tracking projectiles, hitscan (machinegun/sniper), EMP disable.
+
+** 6. Building materials we lack
+=materials/building_materials.lua=: *armour* (HP 400, +25% stiffness, 2x mass —
+kinetic tank), *door* (openable/closable, blocks then opens for your own fire),
+*energy shield* (reflects beams/plasma, warmup), *metal beam*, *camo*, *solar*
+(energy on the strut), *fuse* (relays fire slowly). We have wood/bg/rope only.
+Doors and shields are real tactical mechanics (open to shoot, shield vs lasers).
+
+** 7. Fort actions: Repair + Recycle [our M7]
+- *Repair*: restore a damaged piece/device for resources proportional to damage
+ (Forts Repair.EnergyCostMultiplier; materials MetalRepairCost/EnergyRepairCost).
+- *Recycle/Scrap*: remove a piece, recover partial resources (MetalReclaim,
+ ScrapTime). We have neither.
+
+** 8. Weapon aiming/firing details we simplified
+- Cannon/weapons cost energy+metal PER SHOT (EnergyFireCost) — firing is
+ resource-limited, not just reload-limited.
+- 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.
+- Fire-clearance: a weapon won't fire if its own structure blocks the muzzle
+ (MinFireClearance) — prevents shooting through your own fort.
+
+** 9. Commanders + Factions [OUT of v0.1 scope]
+15 commanders across 5 factions, each with a passive trait + active ability
+(e.g. Firebird halves fire spread & double-extinguishes on her forts). Huge
+matchup variety. Purely a post-v1 concern but defines Forts' identity.
+
+** 10. Map / world systems
+- Metal *deposits* embedded in terrain (mine targets) — we have none.
+- Terrain shape + foundation material chosen by ground *slope angle*
+ (StandardNode.Foundations brackets by angle). Ours is a flat half-plane.
+- No-build zones, destructible terrain, water/buoyancy (High Seas DLC).
+
+** 11. Meta / not-gameplay-but-expected
+Skirmish AI opponent, campaign/missions, multiplayer lockstep netcode,
+replays (trivial with deterministic lockstep), sandbox. All post-v0.1.
+
+* Priority for OUR roadmap
+
+Mapping the above onto the (already-reordered) milestones:
+
+| Gap | Milestone | 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 |
+| Armour + Door + Shield materials | M4/M7 | data-driven, small each |
+| More weapons (mortar/flak/mg/missile) | M4 | point-defence + guided are new |
+| Per-shot energy cost + recoil | M4 | small, faithful |
+| 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 |
+| 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.