Production context
GDD/01-Gameplay/05-Building-System.mdVerified implementation evidence
- Not verified for this documentation pass.
Relationships
Document contract coverage
Use these required Feature Specification areas during review. The imported GDD below is canonical; items not stated explicitly remain unresolved.
- ReviewPurpose & Player Value
- ReviewScope
- ReviewOut of Scope
- ReviewTerminology
- ReviewFunctional Behavior
- ReviewStates & Flows
- ReviewRules & Edge Cases
- ReviewDependencies
- ReviewAcceptance Criteria
- ReviewOpen Questions
Canonical GDD content
Free-form (Rust-like) construction — [CONFIRMED]. Players place modular structural pieces that snap together to form custom bases. Bases are persistent on the server and raidable by other players.
Build modes
- Structure mode: place structural pieces (foundation, wall, floor, ceiling, doorway, stairs, ramp, window). Pieces snap to sockets on adjacent pieces; foundations snap to valid terrain.
- Deployable mode: place functional objects (door, storage box, crafting station, campfire/stove, sleeping bag/bed, workbench, turret [TBD], traps). The workbench is both a crafting station and the firearm customization station (09-Weapon-Customization.md); anyone nearby can use firearm work on it.
A build component (UBuildComponent) shows a ghost/preview, validates placement (collision, snap, support, ownership rules), and sends a server request to commit.
Piece set (v1 — minimal)
| Piece | Purpose |
|---|---|
| Foundation | Base anchor; must be placed first |
| Wall | Vertical barrier; snaps to foundation/floor edges |
| Floor / Ceiling | Horizontal surface; enables vertical building |
| Doorway + Door | Controlled access (door is a deployable with lock) |
| Window wall | Defensive opening |
| Stairs / Ramp | Vertical traversal |
Expand the set in later phases (high walls, gates, foundation steps, triangle pieces). Keep v1 small to control art + netcode + raiding-balance cost.
Snapping & placement rules
- Socket-based snapping (each piece exposes snap sockets); free rotation when not snapped.
- Placement validation (server-authoritative): no overlap with disallowed geometry, must be supported, must be within a build-allowed area, and the placer must have build permission for that location.
- Build privilege: a Tool Cupboard / Territory Anchor concept [RECOMMENDATION] — placing an anchor claims a radius where only authorized players (squad/clan) can build/modify. This is the standard solution to grief-proofing free-form building and ties into territory progression. See ../04-Multiplayer/03-Clans-and-Squads.md.
Materials & upgrade tiers
Pieces are crafted from gathered resources and can be upgraded in tiers (e.g., Twig → Wood → Stone → Metal → Armored). Higher tiers have more HP and resist more raid damage. Tier list and HP values are [TBD].
Health, damage & raiding
- Every placed piece has HP and a material tier; raid tools (explosives, melee against soft sides, cutting tools) deal type-specific damage. See ../04-Multiplayer/04-PvP-Raiding-and-Trading.md.
- [CONFIRMED] full raiding is allowed — bases can be breached and looted.
- [RECOMMENDATION] weak-side/strong-side mechanics (walls cheaper to break from the inside) for raid depth.
- Decay: unmaintained structures decay over time [RECOMMENDATION] to clean up abandoned bases on persistent servers (critical for server health).
Networking & persistence — [RISK]
This is one of the most expensive systems to do well:
- A base may contain hundreds of pieces. Naïvely each-piece-as-an-actor does not scale to ~40–60 players × many bases. Mitigations to evaluate: Instanced Static Meshes / Hierarchical ISM for visuals, lightweight per-piece state, dormancy, and net relevancy by distance. The project has ISM tooling available.
- All placed structures must be persisted and restored on server restart (positions, tiers, HP, ownership, container contents). See ../04-Multiplayer/01-Network-Architecture.md.
- Decide early: piece representation (actor vs ISM + data record), save schema, and relevancy strategy. [TBD] but must be solved in Phase 1 since everything else builds on it.
Implementation guidance
UBuildComponent(C++) handles mode, preview, validation request.- Building pieces defined data-driven (mesh, sockets, tier, HP, cost) so adding pieces is content work, not code.
- Preview/ghost and input handling are reasonable to drive partly in Blueprint; placement validation and commit must be C++ server logic.