diff options
Diffstat (limited to 'requirements/milestones.org')
| -rw-r--r-- | requirements/milestones.org | 79 |
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. |
