Feature Specification

Player Character

Overview

Status: draftOwner: UnassignedUpdated: 2026-09-17

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

Deprecated source referenceGDD/01-Gameplay/02-Player-Character.md
Decision markers4 confirmed · 4 recommendations · 1 TBD
Browser document roleThis standalone HTML file is authoritative; edit this file directly through the project workflow.

Verified 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 on IMC_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 OwnerNoSee and the body mesh hides the verified MetaHuman neck_01 bone 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 by ULambeerCameraComponent + replicated ULambeerAimComponent). First-person collapses arm length to 0 and uses the pawn BaseEyeHeight plus 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 / viewAim offAim on
Firearm / third personHipRelaxedShoulderAim
Firearm / first personHipRelaxedADS: raise the weapon toward the sight/scope line; camera stays at eye height.
Melee or empty hands / either viewHipRelaxedShoulderAim state for melee/unarmed guard; retain the selected view.
Item-family primary handHipRelaxedRefused.
  • 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 ALambeerCharacter small 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 StateTree and GameplayStateTree plugins enabled — these are primarily used for AI, but the player animation graph remains a standard Anim BP.

See: 03-Combat-System.md, 04-Survival-System.md.