Decide MVP shelter building style
This commit is contained in:
@@ -604,7 +604,11 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe
|
||||
|
||||
## 0.1.I Shelter Building
|
||||
|
||||
- [ ] Decide MVP building style.
|
||||
- [x] Decide MVP building style. MVP shelter building uses a crafted-kit style:
|
||||
players gather natural materials, craft primitive frame/wall/roof panel
|
||||
parts, combine them into one placeable primitive shelter, and place that
|
||||
shelter through the server-authoritative placement component. Fully modular
|
||||
wall-by-wall building stays deferred to `0.2.E Permanent Structures`.
|
||||
- [x] Create build placement mode.
|
||||
- [~] Add ghost preview.
|
||||
- [x] Add placement validation.
|
||||
|
||||
@@ -80,8 +80,12 @@ Early runtime systems should remain small and explicit:
|
||||
- Interaction component/classes: player-facing use/gather/build entry points.
|
||||
- Resource actors: gatherable wood, stone, fiber, water, wildlife, and future
|
||||
natural resources.
|
||||
- Buildable actors: campfire, primitive shelter, frames, walls, roof panels,
|
||||
and later settlement infrastructure.
|
||||
- Buildable actors: campfire, one-piece primitive shelter kits, and later
|
||||
settlement infrastructure. For the version 0.1 MVP, shelter construction is
|
||||
intentionally kit-based: frame, wall panel, and roof panel items are crafted
|
||||
as inventory parts and then combined into a single placeable primitive
|
||||
shelter actor. Fully modular wall-by-wall construction is deferred to
|
||||
permanent structures so the first survival loop remains reliable.
|
||||
- Persistence layer: save/load contracts for player and world state.
|
||||
|
||||
Blueprints can compose and expose these systems, but core replicated behavior
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env python3
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
ROADMAP = ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md"
|
||||
TECHNICAL_DESIGN = ROOT / "Docs" / "TechnicalDesignDocument.md"
|
||||
|
||||
|
||||
def require(path: Path, text: str) -> None:
|
||||
data = " ".join(path.read_text(encoding="utf-8").split())
|
||||
if text not in data:
|
||||
raise SystemExit(f"FAIL: {path.relative_to(ROOT)} missing required text: {text}")
|
||||
|
||||
|
||||
def main() -> None:
|
||||
require(ROADMAP, "[x] Decide MVP building style.")
|
||||
require(ROADMAP, "crafted-kit style")
|
||||
require(ROADMAP, "Fully modular wall-by-wall building stays deferred")
|
||||
require(TECHNICAL_DESIGN, "shelter construction is intentionally kit-based")
|
||||
require(TECHNICAL_DESIGN, "Fully modular wall-by-wall construction is deferred")
|
||||
print("PASS: MVP shelter building style decision is documented.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user