ecology slice: pine (Lumberjacking) + rock (Mining) node lifecycle + minimal spawner #251

Open
opened 2026-08-02 01:49:41 +02:00 by panda · 0 comments
Collaborator

Vertical slice of the ecology engine (epic #250), per docs/superpowers/specs/2026-08-02-ecology-slice-design.md. Two exemplars on one generic engine to prove extend-by-type + variable per-species lifecycles.

Missing parts (checklist)

  • NaturalNode runtime entity + data-driven species/lifecycle table content/ecology.txt (pine 4-stage, rock 2-stage)
  • HarvestSystem (server-paced, clone of SpellSystem.Step) + HarvestRequest(NodeId) intent + trust-boundary validation (stage/range/LoS/tool/cooldown/skill)
  • SkillName += Lumberjacking, Mining (appended) + SkillCatalog rows + new SkillFormulas.HarvestChance(skill, difficulty)
  • baseline-deterministic + delta persistence (world-owned blobs, self-GC on regrow) + lazy time-derived growth (wallclock, no scheduler, offline recovery)
  • EcologySpawner deterministic per-chunk baseline + placement validation (road/water/off-map/occupied/slope) + Chebyshev spacing incl. cross-chunk boundary
  • AoI reconcile via InterestDiff + NaturalNode{Spawned,Changed,Removed} DTOs + bump ProtocolVersion.Current + new SystemMessageId cues
  • client node entity in ClientWorld + dispatcher cases + occlusion-fade coverage for tall nodes + anchor stability across stages + harvest swing VFX
  • assets (owner-generated, prompts on demand): temperate_pine_stump, item_wood_logs, item_axe, ore_outcrop, ore_outcrop_depleted, item_ore, item_pickaxe (+ verify young_pine_tree as pine sapling)
  • docs/game-design/systems/ecology.md + docs/uo-asset-map.md rows

Definition of Done

Spawner-placed pine+rock (no hand-painting); chop pine -> wood_logs + stump, server-paced (client can't rush/fake), regrows over time incl. offline; mine rock -> ore + depleted, regrows; both survive save/restart; AoI spawn/change/remove only to nearby observers; a second species/bush is a data row + assets. Base DoD: dotnet test green, whole build, 0 warnings. Invariants Check persisted in the spec.

Deferred (future issues under the epic)

multi-cell footprint + redwood · Foraging/Fishing · density/suppression zones · baked-static->node migration · tool durability/rare drops · editor density-preview.

Vertical slice of the ecology engine (epic #250), per `docs/superpowers/specs/2026-08-02-ecology-slice-design.md`. Two exemplars on **one generic engine** to prove *extend-by-type* + **variable per-species lifecycles**. ### Missing parts (checklist) - [ ] `NaturalNode` runtime entity + **data-driven** species/lifecycle table `content/ecology.txt` (pine 4-stage, rock 2-stage) - [ ] `HarvestSystem` (server-paced, clone of `SpellSystem.Step`) + `HarvestRequest(NodeId)` intent + trust-boundary validation (stage/range/LoS/tool/cooldown/skill) - [ ] `SkillName` += `Lumberjacking`, `Mining` (appended) + `SkillCatalog` rows + **new** `SkillFormulas.HarvestChance(skill, difficulty)` - [ ] **baseline-deterministic + delta** persistence (world-owned blobs, self-GC on regrow) + **lazy** time-derived growth (wallclock, no scheduler, offline recovery) - [ ] `EcologySpawner` deterministic per-chunk baseline + placement validation (road/water/off-map/occupied/slope) + **Chebyshev** spacing incl. cross-chunk boundary - [ ] AoI reconcile via `InterestDiff` + `NaturalNode{Spawned,Changed,Removed}` DTOs + **bump `ProtocolVersion.Current`** + new `SystemMessageId` cues - [ ] client node entity in `ClientWorld` + dispatcher cases + **occlusion-fade coverage** for tall nodes + **anchor stability** across stages + harvest swing VFX - [ ] **assets (owner-generated, prompts on demand):** `temperate_pine_stump`, `item_wood_logs`, `item_axe`, `ore_outcrop`, `ore_outcrop_depleted`, `item_ore`, `item_pickaxe` (+ verify `young_pine_tree` as pine sapling) - [ ] `docs/game-design/systems/ecology.md` + `docs/uo-asset-map.md` rows ### Definition of Done Spawner-placed pine+rock (no hand-painting); chop pine -> `wood_logs` + stump, server-paced (client can't rush/fake), regrows over time incl. **offline**; mine rock -> `ore` + depleted, regrows; both survive save/restart; AoI spawn/change/remove only to nearby observers; a **second species/bush is a data row + assets**. Base DoD: `dotnet test` green, whole build, 0 warnings. Invariants Check persisted in the spec. ### Deferred (future issues under the epic) multi-cell footprint + redwood · Foraging/Fishing · density/suppression zones · baked-static->node migration · tool durability/rare drops · editor density-preview.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo#251
No description provided.