Document corpse backpack MVP decision
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
Reference in New Issue
Block a user