Production schedule — 2026-09-13: PIPE-ROADMAP now defines 32 focused phases (P00–P31). Phase 0/1/2/3 references retained in this document are legacy scope bands, not the new phase numbers. The owner confirmed limited-area core-loop proof before full-map expansion; see the roadmap for dependencies, audited status and remaining work.
Production context
GDD/01-Gameplay/02-Player-Character.mdVerified implementation evidence
Source/Lambeer/Character/LambeerCharacter.*Source/Lambeer/Character/LambeerCameraComponent.*Source/Lambeer/Character/LambeerLocomotionComponent.*Source/Lambeer/Character/LambeerAimComponent.*
Relationships
Document contract coverage
Use these required Feature Specification areas during review. The HTML content below is authoritative; 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
Authoritative project content
Overview
The player is a MetaHuman-based survivor with a third-person default camera and an optional first-person view. The character class is implemented in C++ (ALambeerCharacter or a renamed survival character) using a component-driven design so that survival, inventory, combat, and building are decoupled, reusable, and individually testable.
Camera & perspective — [CONFIRMED]
- Third-person over-the-shoulder is the default camera.
- Aim states do not force a first-person swap. RMB keeps the current camera view; switching view while aiming preserves the aim toggle and reselects the weapon-specific mode.
- Optional first-person toggles with Enhanced Input
IA_ToggleCameraView(/Game/Lambeer/Core/Input/Actions/IA_ToggleCameraView). Authored mapping is V onIMC_Default; the runtime locomotion context also binds V. - First-person is local presentation only: once the spring arm is inside the capsule, the owning face and grooms use
OwnerNoSeeand the body mesh hides the verified MetaHumanneck_01bone so the local camera does not look through the skull. The third-person body, arms, hands, and held-item visuals stay visible to the owner. Other players still see the full third-person body. Camera presentation stays local; the requested first-person flag is sent with aim input so the server resolves the replicated aim mode. Neither view nor aim is durable save state. - Dedicated first-person arms or weapon meshes remain out of scope; first-person currently reuses the third-person body and held-item visuals.
- Camera shoulder-swap (left/right) for corner peeking is [RECOMMENDATION].
- Use
USpringArmComponent+UCameraComponent. Aim state changes spring-arm length, socket offset, and FOV via timeline/interp (driven byULambeerCameraComponent+ replicatedULambeerAimComponent). First-person collapses arm length to 0 and uses the pawnBaseEyeHeightplus a tunable local XY offset on the camera component.
Aim modes — [CONFIRMED]
Owner confirmed — 2026-09-17: RMB toggles aim on press; the next press exits. Holding or releasing RMB has no separate behavior. This supersedes the old tap-ADS / hold-ShoulderAim contract.
| Equipment / view | Aim off | Aim on |
|---|---|---|
| Firearm / third person | HipRelaxed | ShoulderAim |
| Firearm / first person | HipRelaxed | ADS: raise the weapon toward the sight/scope line; camera stays at eye height. |
| Melee or empty hands / either view | HipRelaxed | ShoulderAim state for melee/unarmed guard; retain the selected view. |
| Item-family primary hand | HipRelaxed | Refused. |
- Use the right-held family; when the right hand is empty, use the left. Switching to an ineligible item cancels aim.
- IA_ToggleCameraView preserves aim. An aimed firearm converts ShoulderAim ↔ ADS. Melee and unarmed guard stay active.
- First-person bodycam intent: the weapon follows camera direction, with visual motion relative to the screen center. No independent free look and no camera attached or locked to the scope.
- The server resolves aim mode from the requested toggle/view and authoritative held items; remote animation consumes that mode.
- Aim is transient and adds no durable persistence fields.
Content pending: owner confirms no ADS pose or sight/scope reference is authored yet. Toggle/view state does not establish usable sight alignment or tuned sway. Implementation, content dependencies and owner validation.
Locomotion
- Walk / jog / sprint, crouch, jump, vault/mantle [RECOMMENDATION].
- Sprint and most actions consume stamina (see 04-Survival-System.md).
- Encumbrance from inventory weight affects move speed and stamina (full-sim survival). See 06-Inventory-and-Items.md.
- Movement is networked via the replicated
UCharacterMovementComponent; custom movement (climbing/vaulting) must be implemented network-safely.
Component architecture
The character is a thin actor that owns gameplay components. Recommended components (names indicative):
| Component | Responsibility | C++/BP |
|---|---|---|
USurvivalStatsComponent |
health, stamina, hunger, thirst, temperature | C++ |
| Wetness (name [TBD]) | rain exposure, WetAmount on pawn / worn-held items — 11-Wetness-and-Rain.md |
C++ |
UInventoryComponent |
item stacks in worn containers, weight | C++ |
UEquipmentComponent |
worn clothing/backpack, back weapons 1–2, use-quick assignments | C++ |
UCombatComponent |
firing, melee, hit detection, recoil, chamber/mag | C++ |
UBuildComponent |
enters build mode, previews & places pieces | C++ |
UInteractionComponent |
look-at / use prompts (doors, loot, vehicles) | C++ |
UCraftingComponent |
recipe access, craft requests | C++ |
USkillProgressionComponent |
Phase 2 learn-by-doing skill state and activity progress | C++ |
| Ability/Buff layer | permanent buffs, status effects | [RECOMMENDATION] GAS — see ../05-Technical/01-Tech-Stack-and-Engine.md |
Rationale: components keep
ALambeerCharactersmall and let the same systems be reused by NPCs/bots later. All gameplay-relevant state on these components must be properly replicated (server-authoritative).
Phase 2 skills are learn-by-doing and live outside Phase 1 character creation. Attribute-facing skills such as Endurance and Strength should modify shared GAS/inventory/combat systems rather than custom one-off character fields.
Player states & stances
- Stances: standing, crouched, and prone — [CONFIRMED].
- Combat stances: unarmed, single-weapon ready, dual-wield ready (independent left/right-hand items), improvised-object held, firearm-hip-relaxed (
HipRelaxed), firearm-shoulder (ShoulderAim), firearm-ADS (ADS), building mode. - Downed/incapacitated state for squad revive is [RECOMMENDATION] (good co-op tension; adds netcode/anim cost).
Identity & customization
- Character appearance authored via the MetaHuman pipeline. See ../06-Art-Audio/01-Art-Direction-and-MetaHuman.md.
- Character creation lets the player pick a curated preset (male/female base) and customize hairstyle, skin color, and eye color — editable later at an in-game barber. Cosmetic-only; no stat advantage. Body size is not adjustable (fixed hitbox for PvP fairness). Full spec: 08-Character-Creation.md.
- Cosmetic customization (outfits) also fits the buy-to-play model. Cosmetic-only; no stat advantage.
Animation
- Animation Blueprint(s) per the MetaHuman skeleton, driven by movement and combat state. Heavy logic stays in C++; the ABP consumes replicated/animation state.
- Animation coverage must support independent left/right-hand weapon presentation plus held, swing, and throw states for combat-usable world props. Exact combinations and montages follow the canonical Combat System rules.
- The project ships with the
StateTreeandGameplayStateTreeplugins enabled — these are primarily used for AI, but the player animation graph remains a standard Anim BP.