Document corpse backpack MVP decision

This commit is contained in:
2026-05-18 13:32:30 -07:00
parent 11f051c830
commit e8f4acb98d
4 changed files with 49 additions and 2 deletions
+5 -1
View File
@@ -665,7 +665,11 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe
the Ground Zero MVP spawn/home location, revives with partial health, the Ground Zero MVP spawn/home location, revives with partial health,
stabilizes hunger/thirst/body temperature, clears acute injury conditions, stabilizes hunger/thirst/body temperature, clears acute injury conditions,
and leaves family/inheritance respawn for later generational milestones. and leaves family/inheritance respawn for later generational milestones.
- [ ] Add corpse/backpack placeholder if needed. - [x] Add corpse/backpack placeholder if needed. Decision: no physical
corpse/backpack actor is needed for the 0.1.J MVP respawn loop because death
inventory loss is not active yet. Future corpse/backpack recovery is reserved
as a persistent, server-owned, interaction-gated death-recovery record once
inventory loss and decay rules exist.
- [ ] Add replicated death feedback. - [ ] Add replicated death feedback.
## 0.1.K Wildlife Prototype ## 0.1.K Wildlife Prototype
+5 -1
View File
@@ -150,7 +150,11 @@ Initial MVP spawn:
Respawn MVP behavior: Respawn MVP behavior:
- may use a simple fixed spawn point or small spawn zone; - may use a simple fixed spawn point or small spawn zone;
- should clear or penalize some carried inventory if death is implemented; - does not spawn a corpse/backpack container in 0.1.J;
- should clear or penalize some carried inventory when death inventory loss is
implemented;
- should make any future corpse/backpack actor server-owned, interaction-gated,
persistent, and decay-aware;
- should not require full generational inheritance yet; - should not require full generational inheritance yet;
- should record enough information for debugging death/respawn bugs. - should record enough information for debugging death/respawn bugs.
+8
View File
@@ -111,11 +111,19 @@ Persist the survival state needed to resume a player:
- sickness severity; - sickness severity;
- exhaustion; - exhaustion;
- alive/dead state if death persistence is active. - alive/dead state if death persistence is active.
- future corpse/backpack recovery records once death inventory loss is enabled.
Survival rates and tuning values should not be duplicated into the save unless Survival rates and tuning values should not be duplicated into the save unless
there is a specific compatibility reason. They belong in code/config/data there is a specific compatibility reason. They belong in code/config/data
assets. assets.
0.1.J decision: the MVP death/respawn loop does not spawn a physical corpse or
backpack actor yet. Respawn currently stabilizes the character at the Ground
Zero MVP spawn/home location without inventory-drop recovery. When inventory
loss is introduced, corpse/backpack records should be persistent, server-owned,
time-limited or decay-aware, tied to the death event id/location, and recoverable
through normal interaction rules.
MVP implementation note: `UAgrarianPersistenceSubsystem::SaveCurrentWorld` MVP implementation note: `UAgrarianPersistenceSubsystem::SaveCurrentWorld`
captures live Agrarian player characters into `FAgrarianSavedPlayer`, including captures live Agrarian player characters into `FAgrarianSavedPlayer`, including
transform, survival snapshot, care history snapshot, and inventory stacks. transform, survival snapshot, care history snapshot, and inventory stacks.
@@ -0,0 +1,31 @@
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
def require(path: Path, snippet: str) -> None:
text = path.read_text(encoding="utf-8")
if snippet not in text:
raise SystemExit(f"{path.relative_to(ROOT)} missing {snippet!r}")
def main() -> None:
roadmap = ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md"
persistence = ROOT / "Docs" / "PersistenceDesignDocument.md"
networking = ROOT / "Docs" / "MultiplayerNetworkingDesign.md"
require(roadmap, "[x] Add corpse/backpack placeholder if needed.")
require(roadmap, "no physical")
require(roadmap, "corpse/backpack actor is needed for the 0.1.J MVP respawn loop")
require(roadmap, "persistent, server-owned, interaction-gated death-recovery record")
require(persistence, "the MVP death/respawn loop does not spawn a physical corpse or")
require(persistence, "death event id/location")
require(networking, "does not spawn a corpse/backpack container in 0.1.J")
require(networking, "server-owned, interaction-gated")
print("PASS: corpse/backpack MVP decision is documented.")
if __name__ == "__main__":
main()