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. Switching view while aiming preserves the aim toggle and reselects the weapon-specific mode. RMB is occupancy-dependent as of 2026-09-20; see
FEAT-COMBAT. - 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-23: Pressing Sprint immediately clears ADS or ShoulderAim to HipRelaxed, including melee/unarmed guard, before evaluating gait or stance restrictions. The owning client applies this immediately; the server also clears aim through the sprint request. Releasing Sprint does not restore the old aim toggle. The selected camera view is preserved. Fracture and existing stance limits still govern whether running is possible. Aim remains transient; no save schema change is required. Owner acceptance: in Dedicated Server + two clients, enter TPP ShoulderAim and FPP ADS, press Shift, verify immediate exit locally and lowered aim on the other client, then release Shift and confirm aim stays off.
Owner confirmed — 2026-09-17: when RMB is the aim toggle (two-handed firearm, or a firearm in the right hand only), it 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.
Owner confirmed — 2026-09-20: RMB is not always aim. Dual one-handed firearms use RMB to fire the right gun. Melee occupancy uses RMB for ready/guard. A firearm fire press from HipRelaxed promotes into the current-view aimed mode and fires on the same press without forcing first-person. Canonical table below still maps TPP aimed firearm to ShoulderAim and FPP aimed firearm to ADS.
| 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. - Current rotation: HipRelaxed faces movement; ShoulderAim/ADS faces look/aim, then uses look-relative strafe or backpedal. A later-phase upgrade to fire a different heading from movement (example: travel south, then raise the weapon and fire north) is recorded in
TBD-COMBAT-AIM-001. It is not current P09 or P10 work.
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, melee-attack, and throw states. Exact occupancy and montages follow
FEAT-COMBAT. - The project ships with the
StateTreeandGameplayStateTreeplugins enabled — these are primarily used for AI, but the player animation graph remains a standard Anim BP.
P10 occupancy inputs — 2026-09-20: RMB is occupancy-dependent. Dual one-handed firearms fire left on LMB and right on RMB. Firearm fire from HipRelaxed promotes to the current-view aimed mode and shoots without forcing first-person. Canonical table: FEAT-COMBAT.