aboutsummaryrefslogtreecommitdiffstats
path: root/requirements/milestones.org
diff options
context:
space:
mode:
Diffstat (limited to 'requirements/milestones.org')
-rw-r--r--requirements/milestones.org79
1 files changed, 52 insertions, 27 deletions
diff --git a/requirements/milestones.org b/requirements/milestones.org
index 9aa5a5a..3aeb4a9 100644
--- a/requirements/milestones.org
+++ b/requirements/milestones.org
@@ -25,6 +25,11 @@ Notes:
- Pivoted from bgfx to SDL3 renderer for M0. bgfx init fails silently on this
system (EGL-only Linux backend, GLX removed upstream). SDL3 OpenGL renderer
works perfectly. Revisit bgfx later in the project.
+- Follow-up: no source file =#include=s bgfx, SoLoud, ENet or EnTT, so
+ =meson.build= now treats them as OPTIONAL (linked only if a source build has
+ put them in /usr/local) and falls back to system packages otherwise. That is
+ what makes a native (non-container) build possible -- see README. Promote each
+ back to a required dependency when it is actually wired up.
- Header collision: -I/usr/local/include/bx caused sys/types.h to find
bx/endian.h instead of glibc endian.h. Fixed by using single
-I/usr/local/include with qualified <bx/...> includes.
@@ -104,9 +109,9 @@ graph, and form structures.
- [X] Build-grace radial timer on un-triangulated struts (temporary rigid hold)
- [X] Building costs: placing a piece deducts metal + energy
- [X] Simple HUD: resource bars + current-material indicator
-- [ ] Resource system: Metal (mines on deposits) + Energy (wind turbines)
- -- DEFERRED to M5 (needs the reactor / game-loop context). For now metal
- and energy are fixed starting pools that only deplete.
+- [X] Resource system: Metal (mines on deposits) + Energy (wind turbines)
+ -- was deferred to M5 and DELIVERED there (generation, storage caps,
+ build + firing costs).
* M3: Structural Destruction [MOSTLY DONE]
(swapped with weapons -- destruction goes hand-in-hand with M2 building)
@@ -126,47 +131,64 @@ This is the purely-structural half of Forts destruction (no weapons yet).
- [X] Disconnection -> fall -> destroy: a chunk that loses its path to a
foundation simply falls under gravity and dies on the ground
- [X] Materials: wood, background bracing, ropes (tension-only)
-- [ ] Per-strut HP pool (separate from stress) -- belongs with M4 weapon damage
-- [ ] Fire (damage-over-time, strut-to-strut spread) -- M4
+- [X] Per-strut HP pool (separate from stress) -- delivered in M4
+- [X] Fire (damage-over-time, strut-to-strut spread) -- delivered in M4
-* M4: Weapons & Damage
+* M4: Weapons & Damage [MOSTLY DONE]
(swapped with destruction)
Goal: Place and fire all three weapons. They feed the M3 graph via two damage
models (per-strut HP and radius splash) plus fire.
-- [ ] Per-strut HP pool, depleted by weapon hits (independent of stress)
-- [ ] Cannon: click-drag angle/power, Box2D ballistic projectile, splash
- damage with linear radius falloff, knockback impulse, ~25% fire chance
-- [ ] Laser: click-drag beam; stops at wood, passes bg-brace/ropes; 100% ignite
+- [X] Per-strut HP pool, depleted by weapon hits (independent of stress)
+- [X] Cannon: ballistic projectile, splash damage with linear radius falloff,
+ knockback impulse, ~25% fire chance, per-shot energy cost.
+ NOTE: the UX is Forts' select-a-weapon-and-aim-within-its-arc, not the
+ click-drag angle/power originally sketched here. The projectile uses our
+ own integrator; Box2D is still idle.
+- [X] Laser: beam; stops at wood, passes bg-brace/ropes; 100% ignite
- [ ] Flak: auto-target incoming shells within an arc; hitscan/fast projectile
-- [ ] Direct vs splash delivery: foreground struts block direct fire;
+- [X] Direct vs splash delivery: foreground struts block direct fire;
background bracing is passed through by direct hits but takes splash + fire
-- [ ] Fire system: ignition flag, damage-over-time, spread along the graph,
+- [X] Fire system: ignition flag, damage-over-time, spread along the graph,
burns background bracing faster (the counter to the bg-brace trick)
-* M5: Reactor, Resources & Game Loop
+Still missing from the vanilla roster / mechanics (see gameplay-gaps.org #5, #8):
+mortar, flak + point-defence, machinegun/sniper (hitscan), guided swarm
+missiles, EMP, and per-shot RECOIL on the firing structure (we apply knockback
+to targets only).
+
+* M5: Reactor, Resources & Game Loop [MOSTLY DONE]
Goal: There's a reactor to destroy, and a real economy to build it with.
-- [ ] Reactor entity -- large block, HP bar
-- [ ] Player reactor on left, dummy reactor on right
-- [ ] Reactor takes damage from direct hits, fire, falling/collision
-- [ ] Win condition: destroy reactor HP OR disconnect it from its foundation
- (collapse) -- two distinct victory paths
-- [ ] Resource system (deferred from M2): mines on metal deposits, wind
- turbines for energy, generation rates, "can't build when broke"
-- [ ] Win/lose condition + restart (R key)
+- [X] Reactor entity -- large block, HP bar (a device with =is_core=)
+- [X] Player reactor on left, enemy reactor on right (via the enemy-fort mod)
+- [~] Reactor takes damage from direct hits, fire, falling/collision
+ -- splash and beam damage hit devices; FIRE does not damage devices, and
+ devices are not attached to the strut graph, so they never fall.
+- [~] Win condition: destroy reactor HP OR disconnect it from its foundation
+ (collapse) -- only the HP path exists. The round ends when a team has no
+ surviving =is_core= device. The collapse path needs devices mounted on
+ the graph (see M6 / gameplay-gaps.org #3).
+- [X] Resource system (deferred from M2): mines on metal deposits, wind
+ turbines for energy, generation rates, storage caps, build/fire costs
+- [X] Win/lose condition + restart (R key)
-* M6: Dummy Fort & Map
+* M6: Dummy Fort & Map [PARTIAL]
Goal: The dummy fort on the right is a hand-crafted target. The map has metal
deposits and a complete layout.
-- [ ] Dummy fort pre-built structure (reactor, wood walls, bg-brace, ropes)
-- [ ] Map layout: terrain with metal deposits on both sides
-- [ ] Player starting area: reactor + small starter shell + nearby deposits
-- [ ] Visual polish: distinct colors for materials, simple sky backdrop
+- [X] Dummy fort pre-built structure -- =data/mods/enemy-fort/= builds a
+ triangulated fort at x=25..29 with the enemy reactor inside. Wood only;
+ no bg-brace or ropes in it yet.
+- [~] Map layout: metal deposits on both sides exist (=data/map.lua=), but the
+ terrain is still a flat half-plane, not a real heightmap.
+- [~] Player starting area: player reactor + nearby deposits on the left; there
+ is no pre-built starter shell.
+- [~] Visual polish: materials are visually distinct and can load real Forts art
+ (see CLAUDE.md section 5); no sky backdrop is drawn yet.
* M7: Polish & Controls
@@ -175,7 +197,10 @@ Goal: Everything feels good. Controls are responsive. Visuals are clear.
- [ ] Repair tool: right-click damaged piece, pay resources to restore HP
- [ ] Recycle: shift+click to remove piece, recover partial resources
- [X] Camera feel: pan (arrows / middle-drag), scroll zoom (basic; edge-scroll TBD)
-- [ ] Visual feedback: damage states, fire glow
+- [~] Visual feedback: fire glow done (burning struts flicker orange); no
+ per-damage-state art yet. Forts ships damage-state textures
+ (=materials/wood_panel_damaged_1..3.tga=, =bracing-d1/d2=, =armor-d1/d2=)
+ that a =texture_forts=-style field could pick up.
- [X] Build UX: ghost/extrusion previews, hover highlights, build-grace timers
- [ ] Edge cases: zero resources enforcement, etc.