1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
#+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)
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), 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.
- *Armour* (build mode 4): HP 400, 25% stiffer, 2x mass, never burns.
- *Per-material build costs*, enforced: you cannot place what you cannot afford.
- *Firing recoil*: a shot shoves the firing structure back, not just the target.
- *Three selectable maps* with their own forts, deposits and ground height,
switchable live from the Dev panel.
* MISSING — grouped by system, each with the in-game reference
** 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.
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=):
- *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.
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.
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 [PARTIAL — armour landed]
DONE: *armour* (HP 400, +25% stiffness, 2x mass, does not burn, 18x wood's metal
cost) is build mode 4. The rest of this list still stands.
=materials/building_materials.lua=: *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. DONE for energy (=energy_cost= per
weapon); the per-shot METAL cost is still missing.
- Recoil/kickback pushes the fort — DONE: each shot applies a velocity kick to
the firing structure along -aim (=BuildGraph::apply_recoil=), separate from the
knockback dealt to targets. Per-weapon =recoil= in data, tunable in the Dev
panel; the beam laser has none.
- 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 [PARTIAL]
DONE: three selectable maps (=data/maps.lua=), switchable at runtime from the
Dev panel, each carrying its own ground height, deposits, devices, weapon spawns
and prebuilt forts. STILL MISSING: the terrain SHAPE. =ground_level= only slides
a flat half-plane up and down, so everything below is still open.
- Metal *deposits* embedded in terrain (mine targets) — DONE, per map.
- 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 | Status / notes |
|---------------------------------------+-----------+--------------------------------|
| 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 material | M4/M7 | DONE (build mode 4) |
| Firing recoil on the shooter | M4 | DONE (per-weapon, in data) |
| Door + Shield materials | M7 | need mechanics, not just data |
| More weapons (mortar/flak/mg/missile) | M4 | point-defence + guided are new |
| 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 | deposits done; terrain flat |
| AI / campaign / multiplayer | post-v1 | out of scope |
* Smallest high-value next steps (concrete)
Reactor + win/loss, real resources, armour and firing recoil are all DONE; what
follows is the refreshed queue.
1. *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, a signature Forts moment. This one root cause blocks
three separate gaps, so it buys the most per unit of work.
2. *Fire damages devices*: Forts burns devices at 2.5 hp/s, 5x the 0.5 hp/s it
does to struts. We do not damage devices with fire at all.
3. *Door material*: toggles =blocks_projectiles= so you can open to shoot and
close to tank. Needs a small mechanic, not just data.
4. *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.
5. *Per-shot metal cost*: firing charges energy but not metal (Forts charges
both). A one-line data + deduction change.
|