# Subsystem Glossary

```mermaid
mindmap
  root((V5 subsystem map))
    Shared runtime
      Core and world
      Gameplay and AI
      Online services
    Narrative truth
      Cases and evidence
      Mind Palace
      Dialogue and relationships
    Ruleset cells
      Crime and period
      Frontier and hunting
      Squad RPG and spaceflight
    Production surfaces
      Creator tools
      Accessibility and localization
      Telemetry and release gates
```

Use this map to decide whether a term names shared infrastructure, durable
narrative truth, a cell-local mechanic, or a production surface. That ownership
distinction is what prevents a six-cell game from developing six incompatible
versions of the same player record.

This is the orientation door to the V5 feature set — the page to read before any
deep feature page, so that when a later page says "the slow-mo painted shot
lives in `V5DeadEye`'s `UV5_Ability_DeadEye`," or "the Witcher contract evidence
is pushed into the deduction graph by `UV5_Investigation_MindPalacePush`," or
"the leaderboard upload rides `UV5_Online_AuthService`," the name already lands
on something real you can open. V5 is the largest of the V-products: **one**
Unreal Engine 5.5 open-world narrative-action game built as a universe of
distinct **ruleset cells** — urban crime, period drama, frontier, monster
hunter, and two sci-fi flavours — sharing one roster (the Cross-Continuum
Bureau), one cross-cell Mind Palace deduction layer, one creator suite, and one
online backbone. The pitch is **per-genre feel on a single spine**: a Hong Kong
triad brawl, a 1947 noir interrogation, a frontier outlaw chase, a Witcher
contract hunt, and a Newtonian ship duel must each feel like its own genre while
reading stimuli from the same perception model and depositing evidence into the
same deduction graph.

That promise is a code-organization decision before it is a design one, and this
page maps it: the named subsystem that delivers each advertised player
capability, and where the glossary's name and the disk's reality diverge. It is
the **product-side companion** to the architecture glossary
[../architecture/promise-and-glossary.md](../architecture/promise-and-glossary.md),
which reconciles the engine module graph against the compiler (the acyclic
`Build.cs` edges, the load phases, the five build targets); here we read the
same disk from the player-feature angle. The single source of truth for
completion state remains the backlog (`V5_TODOS.md`); this page is the index,
not the checklist. It is the foundations companion to the full feature catalogue
at [../V5_features.md](../V5_features.md).

## What ships, honestly

**The module skeleton is real, large, and exactly consistent.**
`ls V5/ue/Source/` yields **74 module directories** (plus five `.Target.cs`
files); the `.uproject` `Modules` array names the same 74 — no spec-only
modules, no orphan directories. Every module ships a `*.Build.cs`, a
`Public/`/`Private/` split, and a module class, and the tree carries **328
`.cpp` and 341 `.h`** files of domain-specific gameplay code. Depth concentrates
where the genre needs it: the deepest module is **`V5MindPalace` (36 files)**,
followed by `V5Melee` and `V5Investigation` (22 each), `V5Spaceship` and
`V5Interrogation` (20 each), and `V5StarMap`/`V5Squad`/`V5Combat` (18 each).
These are real systems, not renamed CRUD: `V5Spaceship` carries an
`AV5_Ship_NewtonianPawn` with `ConfigureShip`, `SetNewtonianState`, and a
`SimulateSubstep(DeltaSeconds, MainThrottle, RCSInput)` integrator; `V5Gameplay`
ships a real GAS attribute set,
`UV5_AttributeSet_Combat final : public UAttributeSet`, exposing replicated
`Health`/`MaxHealth`/`Stamina` via `OnRep_*` and an accessor macro.

Three honest corrections a reader should carry, each found by reading both the
prose and the disk:

- **The cell code is Source modules, not GameFeature plugins.** The glossary
  bills each cell's mode set as a hot-swap `GameFeatures` plugin. On disk the
  cell _logic_ is a statically compiled **Source module** — `V5UrbanHeistCity`,
  `V5HunterWitchersPath`, `V5FrontierOutlawTrail`, `V5SciFiGalacticSquad`,
  `V5PeriodMadeMan`, `V5DetectiveMindPalace`, and a dozen more, each with a
  `*Systems.cpp`, a `*.cpp` module class, and a colocated `Private/Tests/` spec.
  The matching **29 `Plugins/V5Mode_*`** directories are content/manifest
  shells: they carry **zero `.cpp`**, hold only the 62 JSON manifests under
  `Content/Data/`, declare `"EnabledByDefault": false`, and there are **zero
  `GameFeatureData.uasset`** binaries in the entire `Plugins/` tree. The cells
  are modular _by source module_, not yet by _runtime feature_.
- **The perception and deduction layers are function-library suites, not
  component trees.** Where V4 shipped a `V4PerceptionComponent`, V5's
  `V5Perception` is a suite of `UBlueprintFunctionLibrary` classes
  (`UV5_Perception_StateMachine`, `UV5_Perception_SightCone`,
  `UV5_Perception_SoundAbsorption`, `UV5_Perception_HearingRadius`,
  `UV5_Perception_WitnessReport`, `UV5_Perception_CellTuning`) over a shared
  `V5PerceptionTypes.h`. `V5MindPalace` is the same shape — statics over a
  `UV5_MindPalace_Graph` object, not methods on an actor.
- **No authored binary content; a TypeScript backend; one cross-product
  reference.** `V5/ue/Content/` holds **0 `.uasset` and 1 `.umap`** against
  **393 JSON** sidecars — V5 is a logic-and-manifest skeleton, every "AAA
  open-world" claim depends on art/audio production not in-tree. The online
  backbone is a **16-service TypeScript** workspace under `apps/v5/` (234 `.ts`,
  16 `contract.json`), not a Rust crate set. And the `.uproject` `Plugins` array
  enables **`V8_Ariadne_CaseClient`** — a plugin owned by the V8 detective
  product, reused here as a cross-cell case client; its source is not local.

Everything below is grounded in those files; where a claim is the glossary's
intent rather than shipped code, it is labelled.

## The foundation and the gameplay-framework spine

`V5Core` (15 files) is the graph sink — the tags registry, the save scaffold
(`FV5CellSaveSlot`, `EV5SaveGeneration`), and the canonical cell enum. That enum
is load-bearing: `EV5Cell` (`V5Core/Public/V5Types.h`) carries **seven** values
— `Urban, Period, Frontier, Hunter, SciFi, Steampunk, MindPalace` — the five
launch cells plus the Steampunk Detective DLC cell and the Mind Palace
meta-layer. Per-cell datasets and tests must size against `GetAllV5Cells()`
(defined in `V5Types.cpp`, returning all seven), not a literal 5 or 6; the
2026-05-31 audit traced four automation failures to exactly that mismatch.

`V5Gameplay` (11 files) is the GAS spine the cell abilities extend —
`UV5_AttributeSet_Combat` plus the narrative-state machine — and it is real
`GameplayAbilities`/`GameplayTags` code, not a wrapper. Around it sit the rest
of the framework: `V5Animation` (`UV5_Anim_AnimBPCombat`,
`UV5_Anim_ChooserTable`, `UV5_Anim_IK_FootGround`, `UV5_Anim_IK_FullBodyMount` —
the motion-matching Chooser/PoseSearch/Mover stack plus IK), `V5Input`
(`UV5_Input_DialogueWheelCursor`, `UV5_Input_AdaptiveController`,
`UV5_Input_HOTASBinding` for the flight stick, `UV5_Input_ArcadePanelBinding`
for the arcade-cabinet target), and `V5Modes` (`UV5_Mode_Registry`,
`UV5_Mode_RulesetGate`, `UV5_Mode_PerCellHUDRouter`) which gates which cell's
ruleset and HUD are live. `V5Netcode` is where the per-cell net-envelope promise
is real, named code rather than prose: `UV5_Net_DedicatedServer`,
`UV5_Net_IrisReplication`, `UV5_Net_AOIStreaming`, `UV5_Net_BandwidthBudget`,
`UV5_Net_HostMigration`, and `UV5_Net_LAN`. The determinism logic lives _inside_
this module, not stamped onto a build target — read the determinism posture as
module-level intent (the
[../architecture/promise-and-glossary.md](../architecture/promise-and-glossary.md)
caveat applies in full). Per-target stripping, however, _is_ real where it
counts: `V5DedicatedServer.Target.cs` (a genuine `TargetType.Server`) ships a
`DisablePlugins.AddRange` list of **29** client-only plugins — `Niagara`,
`Metasound`, the `ChaosCloth`/`ChaosFlesh` set, `CommonUI`, `EnhancedInput`,
`GameplayCameras`, the geometry-processing stack — so the headless server build
genuinely drops rendering, audio, and cloth physics.

## The shared AI layer

Three modules deliver the senses every NPC in every cell shares. `V5Perception`
is the **one** sight/hearing/suspicion model: `UV5_Perception_SightCone` and
`UV5_Perception_HearingRadius` feed `UV5_Perception_StateMachine`, with
`UV5_Perception_WitnessReport` for crime reporting and — crucially —
`UV5_Perception_CellTuning`, so a triad goon, a noir witness, an outlaw, a
drowner, and a station guard all run the _same_ state machine with per-cell
parameters. `V5Crowd` is the Mass-ECS civilian layer (`UV5_Crowd_MassEntity`,
`UV5_Crowd_PanicPropagation`, `UV5_Crowd_BodyLanguageLibrary`,
`UV5_Crowd_VocabBarks`) — panic propagates and body language shifts per era.
`V5Schedules` runs NPC daily routines (`UV5_Schedule_Data`,
`UV5_Schedule_EraProfiles`, `UV5_Schedule_Ticker`,
`UV5_Schedule_DistanceOfDetail` for LOD). The deep treatment of this shared
layer is [./shared-cross-cell-systems.md](./shared-cross-cell-systems.md).

## The per-cell gameplay systems

The product's whole "per-genre feel" thesis rests on the cell modules, and the
disk backs it concretely — each cell's glossary line is a list of components
that actually exist, and the shared-spine reskinning is visible in the names.

- **Urban** rides `V5Combat` (third-person gunplay: `UV5_Combat_AimDownSight`,
  `UV5_Combat_Cover`, `UV5_Combat_Reload`, `UV5_Combat_StanceSubsystem`,
  `UV5_Combat_BulletPenetration`), `V5Melee` (`UV5_Melee_BladeParry`,
  `UV5_Melee_ComboMeter`, `UV5_Melee_HitStop`, `UV5_Melee_EnvFinisher` for the
  Sleeping-Dogs environmental finishers, `UV5_Melee_SteelSilverSwap` shared with
  the Hunter cell), `V5Heist` (`UV5_Heist_Planner`, `UV5_Heist_CrewSelection`,
  `UV5_Heist_ConflictDetection`, `UV5_Heist_EndingResolver`), and `V5Wanted`
  (`UV5_Wanted_Manager`, `UV5_Wanted_AttackHeloSpawn`, plus
  `UV5_Wanted_FrontierVariant` and `UV5_Wanted_HunterVariant` — one star system,
  era-scaled). The Urban-flavour texture modules round it out: `V5Parkour`
  (`UV5_Parkour_Climb`, `UV5_Parkour_ContextSolver`,
  `UV5_Parkour_AwningBounce`), `V5Karaoke` (`UV5_Karaoke_RhythmEngine`,
  `UV5_Karaoke_ReputationReward`), `V5LockpickHack`
  (`UV5_LockpickHack_LockpickUI`, `UV5_LockpickHack_DigitalCameraPlant`), and
  `V5RadioTV` (`UV5_RadioTV_DJTrack`, `UV5_RadioTV_InGamePhone`).
- **Period** rides `V5Investigation` (`AV5_Investigation_ClueActor`,
  `UV5_Investigation_ExamineCamera`, `UV5_Investigation_FalseClue`, and the
  cross-cell bridge `UV5_Investigation_MindPalacePush`) and `V5Interrogation`
  (`AV5_Interrogation_Session`, `UV5_Interrogation_FacialTellPlayer`,
  `UV5_Interrogation_EvidenceBackedLie`, `UV5_Interrogation_RatingSystem` — the
  LA-Noire truth/doubt/lie loop), with `V5FaceCapture`
  (`UV5_FaceCapture_MetaHumanBind`, `UV5_FaceCapture_TellTakeAuthoring`) feeding
  the facial tells and `V5PeriodAuth` (`UV5_PeriodAuth_Bundle`,
  `UV5_PeriodAuth_DataLayerFlip`, `UV5_PeriodAuth_NPCSwap`) swapping the era
  dressing.
- **Frontier** rides `V5DeadEye`, `V5Honor`, `V5Hunting`, and `V5HorseAI`.
  `V5DeadEye` is the sharpest shared-spine evidence in the tree: one slow-mo
  system, `UV5_Ability_DeadEye` (a GAS ability) plus `UV5_DeadEye_Gauge` and
  `UV5_DeadEye_SlowMoEffect`, reskinned as `UV5_DeadEye_ReflexMode_Urban` and
  `UV5_DeadEye_TacticalTime_SciFi`. `V5Honor` carries the persistent reputation
  meter with `UV5_Honor_KarmaParagonBridge` (honor/karma/paragon unified across
  cells) and `UV5_Honor_BureauXPMod` (feeding the shared Bureau XP ledger).
  `V5Hunting` is the RDR-style perfect-pelt economy
  (`UV5_Hunting_PerfectPeltScoring`, `UV5_Hunting_FieldDressing`,
  `UV5_Hunting_CarcassTransport`); `V5HorseAI` is the bonding loop
  (`UV5_Horse_Bonding`, `UV5_Horse_GaitLibrary`, `UV5_Horse_FeedBrushTalk`,
  `UV5_Horse_Permadeath`).
- **Hunter** rides `V5Alchemy` (`UV5_Alchemy_Recipe`,
  `UV5_Alchemy_ToxicitySystem`, `UV5_Alchemy_IngredientGather`,
  `AV5_Alchemy_BrewingStation`), `V5Signs` (five elemental GAS abilities —
  `UV5_Ability_Sign_FireCone`, `_ForceWave`, `_MindSuggest`, `_Shield`,
  `_TrapGlyph` over a `UV5_Ability_Sign_Base`), `V5MonsterHunt`
  (`AV5_MonsterHunt_ContractBoard`, `AV5_MonsterHunt_ClueMarker`,
  `UV5_MonsterHunt_Bestiary` — the bestiary gates which monster you can
  effectively hunt), and `V5CardGame` (`UV5_CardGame_DeckBuilder`,
  `UV5_CardGame_CardDropFromKills`, `UV5_CardGame_MerchantInventory` — the
  gwent-style minigame, rules re-derived).
- **Sci-Fi** rides `V5Spaceship` (the Newtonian `AV5_Ship_NewtonianPawn` plus
  `UV5_Ship_FlipAndBurn::StepFlipAndBurn` and `EV5ShipFlightMode`), `V5StarMap`
  (`AV5_StarMap_System`, `UV5_StarMap_FTLPlot`, `UV5_StarMap_FuelConsumption`,
  `UV5_StarMap_GalaxyView`), `V5Squad` (`AV5_Squad_Member`,
  `UV5_Squad_LoyaltyArc`, `UV5_Squad_RomanceGate`, `UV5_Squad_PowerCombo`), and
  `V5Dialogue` (`UV5_Dialogue_Wheel`, `UV5_Dialogue_CharmIntimidate`,
  `UV5_Dialogue_Interrupt`, `UV5_Dialogue_RuntimeStateMachine`).

The cells are held together — not blended — by these shared seams: every cell
queries the same `V5Perception` state machine, `V5Investigation` pushes evidence
into `V5MindPalace`, and `V5Honor`'s `KarmaParagonBridge` lets one cell's
reputation modify another's NPC greetings.

## The cross-cell deduction layer: V5MindPalace

`V5MindPalace` (36 files, the deepest module) is the meta-game that makes the
universe one game instead of a launcher. Its public surface is a suite of
function libraries over a `UV5_MindPalace_Graph`:
`UV5_MindPalace_AddEvidenceNode` deposits a `FV5MindPalaceEvidenceNode`,
`UV5_MindPalace_AttemptDeduction` links two nodes — and notably takes a
`FV5BureauXPLedger`, so deduction is XP-gated by the shared Bureau progression —
`UV5_MindPalace_BuildHypothesisChain` walks the graph to a bounded depth,
`UV5_MindPalace_CrossEraGate` enforces that evidence from a 1947 case can
legitimately pair with a frontier or sci-fi case, and
`UV5_MindPalace_MakeAccusation` resolves a `CaseId`/`AccusedId`/`EvidenceChain`
into an `FV5MindPalaceAccusationOutcome`. `V5MindPalaceCloudSyncHttp` carries
the state to the `mindpalace-cloud-sync` backend service, and
`AV5_UI_MindPalaceVolumetricRoom` (in `V5UI`) is the in-world volumetric room
the player walks through. The cross-cell deduction feature pages build on this;
the accusation/false-lead rules are catalogued in
[../V5_features.md](../V5_features.md).

## Presentation, persistence, online, and telemetry

`V5UI` (9 files) is the CommonUI/MVVM front-end — `UV5_UI_DialogueWheel`,
`UV5_UI_CellSelectWidget`, the `AV5_UI_MindPalaceVolumetricRoom` actor, and
`UV5_UI_CompanionAppBridge`. `V5Audio` and `V5VFX` are gameplay-facing seams
over the force-enabled engine plugins, but they are _named_ seams, not stubs:
`V5Audio` ships `UV5_Audio_DynamicMusic`, `UV5_Audio_DialogueDirector`,
`UV5_Audio_DolbyAtmosBinaural`, and `UV5_Audio_DualSenseHaptic` over
`Metasound`; `V5VFX` ships per-cell emitters (`UV5_VFX_HunterSigns`,
`UV5_VFX_SciFiPowers`, `UV5_VFX_MindPalace`) over `Niagara`. `V5Cinematics`
drives Sequencer beats (`UV5_Cine_CampaignBeats`,
`UV5_Cine_CrossCellReplayEditor`, `UV5_Cine_DirectorCommentary`), and
`V5Persistence` carries the save layer (`UV5_Persist_CurrencyLedger`,
`UV5_Persist_MindPalaceState`, `UV5_Persist_NewGamePlus`,
`UV5_Persist_CrashRecovery`, `UV5_Persist_ReplaySerialization`).

`V5OnlineServices` (10 files) is the **client** half of the online backbone, and
its subsystems map one-to-one onto the 16 TypeScript services:
`UV5_Online_AuthService` ↔ `auth`, `UV5_Online_AntiCheatClient` ↔ `anti-cheat`,
`UV5_Online_BalanceLedgerClient` ↔ `balance-ledger`,
`UV5_Online_ComplianceDSARClient` ↔ `compliance-dsar`,
`UV5_Online_CompanionAppBridge` ↔ `companion-app-bridge`, with `friends`,
`parties`, `matchmaking`, `leaderboards`, `replays`, `telemetry`, `workshop`,
`crash-reporting`, `faction-rep`, `live-service-calendar`, and
`mindpalace-cloud-sync` completing the set. `V5Telemetry` is the on-device
emitter (`UV5_Telemetry_EventBatcher`, `UV5_Telemetry_Schema_TypeBox`,
`UV5_Telemetry_DSAR_Export`, `UV5_Telemetry_OptOut` — privacy-aware by design)
feeding the `telemetry` service. The cross-play, anti-cheat, store/cert, and
live-service surfaces are provider- and ops-gated, marked `[~]` in the backlog
and `V5/REMEDIATION_2026-06-12.md`.

## The creator suite, the world layer, and the DLC cell

Promise #6 — one creator suite — is realized as four `Editor`-type modules, each
a `Catalog` + `Workflow` pair: `V5MissionEditor`, `V5HeistAuthor`,
`V5CaseAuthor`, and `V5WorkshopEditor` (workshop publishing, ratings,
moderation), with `V5Editor` holding the shared `UV5_Editor_AssetLinter`,
`UV5_Editor_ToolRegistry`, and `UV5_Editor_TutorialCatalog`. The world layer is
`V5Open` (World-Partition streaming with era data layers —
`UV5_Open_DataLayer_Era`, `UV5_Open_TrafficSpawner`, `UV5_Open_PedSpawner`,
`UV5_Open_TimeOfDay`), `V5Vehicles` (16 files, the cross-era car/bike/boat/horse
library), `V5Procgen` (`UV5_Procgen_MonsterContractGenerator`,
`UV5_Procgen_RandomEncounter`, `UV5_Procgen_GalaxyDetail`), and `V5Hub`
(per-cell hubs: `UV5_Hub_BureauHQ`, `UV5_Hub_FrontierCamp`,
`UV5_Hub_HunterKeep`). `V5SteampunkDetective` is the Brave New World DLC cell
([P3] `§139`), wired through the `Steampunk` `EV5Cell` value. Automation is
**distributed**: 73 of 74 modules ship their own `Private/Tests/`, so the cell
that owns a system owns its spec, and `V5Tests` is a lean harness rather than
the bulk of the test code.

## The plugin shells, named honestly

The **29 `V5Mode_*` plugins** live directly under `V5/ue/Plugins/` and are the
disk's expression of the modes table — `V5Mode_Urban_HeistCity`,
`V5Mode_Hunter_WitchersPath`, `V5Mode_SciFi_HardVacuum`, the two
`V5Mode_Editor_*` authoring shells, `V5Mode_Replay`, `V5Mode_Spectator`,
`V5Mode_PhotoMode`, and so on. Today they are content/manifest containers:
**zero `.cpp`**, **zero `GameFeatureData.uasset`**, 62 JSON manifests,
`"EnabledByDefault": false`, and none listed in the `.uproject` `Plugins` array.
The "hot-swap GameFeatures" story is therefore **half realized** — the runtime
code exists and compiles into the monolith via the cell Source modules; the
binary GameFeature data assets that would let a cell activate as a toggleable
runtime feature are not yet authored. This is the page's single biggest honest
correction, named rather than implied.

## Where to go next

- The promise these foundations serve and the player-facing conventions:
  [./product-promise.md](./product-promise.md).
- The shared spine — roster, perception, dialogue wheel, honor bridge, and the
  cross-cell seams — as player features:
  [./shared-cross-cell-systems.md](./shared-cross-cell-systems.md).
- The authoritative engine module map, dependency graph, and build targets:
  [../architecture/promise-and-glossary.md](../architecture/promise-and-glossary.md).
- The feature catalogue this page indexes:
  [../V5_features.md](../V5_features.md).
