Open-World Narrative · Features

Subsystem Glossary

A focused page within the Open-World Narrative Features documentation. The full map and every sibling page live in the Features hub.

9sections10 minread1diagram

On this page
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, 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.

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 moduleV5UrbanHeistCity, 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 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.

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.

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_AuthServiceauth, UV5_Online_AntiCheatClientanti-cheat, UV5_Online_BalanceLedgerClientbalance-ledger, UV5_Online_ComplianceDSARClientcompliance-dsar, UV5_Online_CompanionAppBridgecompanion-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#