Open-World Narrative · Architecture

Product Promise & Subsystem Glossary

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

6sections11 minread1diagram1table

On this page
classDiagram class SharedSpine { +identity +worldState +online +creator } class NarrativeTruth { +caseLedger +mindPalace +relationships +consequences } class RulesetCell { +movementGrammar +combatGrammar +simulationPolicy } class EvidencePlane { +telemetry +qualityGates +releaseDecision } SharedSpine *-- NarrativeTruth SharedSpine o-- RulesetCell SharedSpine --> EvidencePlane RulesetCell --> NarrativeTruth : emits consequences

The shared spine owns identity and durable world state; a ruleset cell owns only the mechanics that make its genre distinct. Narrative truth composes with both, while the evidence plane decides whether their integration is safe to release.

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 ("Cross-Continuum Bureau"), one cross-cell Mind Palace deduction layer, one creator suite, and one online backbone. The pitch is not a launcher bolted over unrelated titles but 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. The architecture exists to make that shippable — each ruleset is a swappable gameplay layer over common engine modules, so cells can be enabled, stripped per platform, or DLC-gated without forking the foundation.

That ambition is wired through the repository, and at a scale that dwarfs its siblings. The UE project at V5/ue/V5.uproject pins "EngineAssociation": "5.5" and declares 74 C++ modules — verified one-to-one against 74 directories under V5/ue/Source/ — alongside a curated engine-plugin set (GameplayAbilities, EnhancedInput, CommonUI + ModelViewViewModel, the Mover/PoseSearch/Chooser motion-matching stack, Niagara, MetaSounds, the Chaos cloth/flesh/vehicle set, MetaHumanRuntime, PCG, MassEntity, Iris + NetworkPrediction + ReplicationGraph, GameFeatures + ModularGameplay). The tree carries 328 .cpp and 341 .h files of domain-specific gameplay code, five build targets, 29 content plugins under V5/ue/Plugins/, and a sixteen-service TypeScript backend under apps/v5/. Like V2 and V4, V5 holds itself to a target-artifact discipline: "Where a section names a module or path, it names a target artifact unless the path already exists in the repo" (V5/V5_ARCHITECTURE.md, Purpose). This page is the orientation door to that architecture — it states what V5 commits to and separates what is real on disk from what is spec. The runtime topology and module split are its sibling ./topology-layout-module-split.md, the gameplay-framework layer is ./gas-animation-input.md, and the full section hub is ../V5_ARCHITECTURE.md.

What ships, honestly#

The module skeleton is real and exactly consistent. Parsing V5.uproject yields 74 Modules entries; ls V5/ue/Source/ yields 74 module directories (plus five .Target.cs files); the two sets are identical — there are no spec-only modules and no orphan directories. Every module ships a *.Build.cs, a Public//Private/ split, and a module class, and the depth is concentrated where the genre needs it: the deepest module is V5MindPalace (36 files) — the cross-cell deduction engine, with public surfaces for AddEvidenceNode, AttemptDeduction, BuildHypothesisChain, MakeAccusation, CrossEraGate, and CloudSyncHttp — followed by V5Melee and V5Investigation (22 each), V5Spaceship and V5Interrogation (20 each), and V5StarMap, V5Squad, V5Combat (18 each). V5Spaceship carries a real AV5_Ship_NewtonianPawn with ConfigureShip, SetNewtonianState, and RCSTorqueDegPerSecond thruster math — not a renamed CRUD shell. Even the leanest non-bootstrap modules ship a real subsystem plus a *Types.h, not a three-file stub.

The single biggest honest correction this page makes concerns where the cell gameplay lives. The architecture prose frames each mode as a hot-swappable GameFeatures plugin. On disk, the cell code is instead a statically compiled Source module: V5UrbanHeistCity, V5HunterWitchersPath, V5FrontierOutlawTrail, V5SciFiGalacticSquad, V5SciFiHardVacuum, V5PeriodMadeMan, V5DetectiveMindPalace, and twelve more are real Runtime modules (each with *Systems.cpp, *Types.h, and a Private/Tests/ spec) named in the .uproject Modules array. The matching Plugins/V5Mode_* directory is a content/manifest shell: all 29 V5Mode_* plugins carry zero .cpp, hold only JSON manifests under Content/Data/, declare "EnabledByDefault": false, and there are zero GameFeatureData.uasset binaries in the entire Plugins/ tree. None of the 29 are listed in the .uproject Plugins array. So the "hot-swap GameFeatures" story is half realized: the runtime code exists and compiles into the monolith; the binary GameFeature data assets that would let it activate as a toggleable plugin are not yet authored. The cells are modular by source module, not yet by runtime feature.

The build targets do real work — and the determinism posture lives in code, not flags. Five *.Target.cs files exist: V5 (Game), V5Editor (Editor), V5DedicatedServer (Server), V5ListenServer (Game), and V5ArcadeCabinet (Game) — a richer target matrix than V4's three. The headless V5DedicatedServer target is the standout: beyond a V5_DEDICATED_SERVER=1 define it carries a real DisablePlugins list of 29 plugins (Niagara, MetaSounds, the Chaos set, MetaHumanRuntime, CommonUI, EnhancedInput, the geometry-processing stack, PCG…), so the server build genuinely strips client-only rendering/audio/physics — concrete per-target stripping V4's targets only aspired to. Honestly labelled the other way: V5_DEDICATED_SERVER and V5_LISTEN_SERVER are defined but not referenced anywhere under Source/ — they are reserved compile seams, exactly the caveat V2/V4 carry for their own build defines. None of the five targets sets /fp:strict or a DETERMINISM=* define; the "deterministic offline" and "rollback-emulated" netcode strategies the promise names live inside V5Netcode, not stamped by the target.

The honest gaps, named rather than implied:

  • No authored binary content. V5/ue/Content/ holds 0 .uasset and 1 .umap, against 393 JSON authoring/manifest sidecars. V5 is a logic-and-manifest skeleton: real C++ systems and structured data, but no hand-authored meshes, MetaHumans, mocap, VO, or cinematics in-tree. Every "AAA open-world" claim depends on art/audio production that is not in the repository.
  • A cross-product plugin reference. The .uproject Plugins array enables V8_Ariadne_CaseClient — a plugin owned by the V8 (Ariadne) detective product, not present under V5/ue/Plugins/. It appears only as compiled artifacts under Binaries//Intermediate/, so it builds into V5 but its source is shared from elsewhere; treat it as a deliberate cross-cell case-client reuse, labelled here because the source is not local.
  • The backend is TypeScript, not Rust. apps/v5/ is a NestJS-style TypeScript workspace — 234 .ts across 16 services (auth, friends, parties, matchmaking, leaderboards, replays, telemetry, anti-cheat, mindpalace-cloud-sync, workshop, compliance-dsar, …), each with a contract.json + contract.test.ts + Dockerfile — plus a web/ Next.js marketing site (@v5/web). This is a real, contract-tested backend, and a deliberate contrast with V4's three-crate Rust workspace.
  • Provider- and ops-gated surfaces. Cross-play, anti-cheat, store/cert, and the live-service cadence depend on platform credentials and real operations; the 2026-05-31 audit and V5/REMEDIATION_2026-06-12.md mark these [~] and the latter removed a fabricated launch-readiness manifest rather than letting the prose imply ship-state.

The product promise#

V5's promise, authored in V5_features.md and mirrored in the architecture's V5 Product Promise section, is a small set of non-negotiable commitments. The unifying idea is per-genre feel, one shared spine, and each commitment has a code anchor or an honest status.

# Commitment Code-grounding / status
1 One coherent game delivering per-genre feel across all launch cells 74 Source/ modules incl. per-mode cell modules; identity routed by V5Modes + EV5Cell (V5Core)
2 Per-cell netcode envelope (dedicated-server, rollback-emulated, offline-deterministic) V5Netcode (one module hosts all three paths); V5DedicatedServer.Target.cs is a real TargetType.Server
3 One shared AI perception model across every NPC in every cell V5Perception (10 files) — unified sight/hearing/suspicion, consumed by every cell
4 One shared roster across cells, cell-specific overrides hung off a character record EV5Cell-keyed character data in V5Core/V5Gameplay; per-cell mesh/morphology overrides
5 One cross-cell Mind Palace deduction layer V5MindPalace (36 files) — evidence graph, hypothesis chains, cross-era gate; cells push evidence in
6 One creator suite (Mission/Heist/Case/Contract/Loadout/Bestiary authoring) V5MissionEditor, V5HeistAuthor, V5CaseAuthor, V5WorkshopEditor (Editor-type modules) + tools/
7 Cells enable/disable per platform, per build target, per DLC Plugins/V5Mode_* manifests + per-cell Content/ roots; gap: no GameFeatureData.uasset to hot-activate
8 One online backbone (auth, parties, matchmaking, leaderboards, replays, anti-cheat) apps/v5/ — 16 contract-tested NestJS services; V5OnlineServices engine module is the client
9 Run across nine platforms, including a dedicated and a listen-server SKU Five .Target.cs; Platforms/ overrides for Windows/PS5/PS5Pro/XSX/XSS/Switch2/Mac/Linux/iOS

Commitment 2 is one decision expressed as a per-cell envelope, because no single strategy fits a 32-player open-world session, a co-op heist, and a 60 Hz ship duel. Unlike V2 (which stamps rollback determinism through strict-FP build flags) and like V4, V5 keeps that logic inside V5Netcode rather than on the targets — read the determinism prose as module-level intent, not a build-target guarantee.

The six-cell vision, and three honest cell counts#

The cells are the product. The prompt frames V5 as six ruleset cells — urban crime, period drama, frontier, monster hunter, and two sci-fi flavours — and the disk bears that out, but the count needs care because three different numbers are all correct in their own frame:

  • Five launch cells is the marketing/promise framing: Urban, Period, Frontier, Hunter, Sci-Fi (V5_ARCHITECTURE.md, V5 Product Promise).
  • Six is what you get counting the two distinct sci-fi gameplay modules as separate experiences: V5SciFiGalacticSquad (Mass-Effect-style squad RPG) and V5SciFiHardVacuum (hard-sim Newtonian flight via V5Spaceship), plus V5SciFiPvP for ship-duel deathmatch.
  • Seven is the canonical engine count: EV5Cell (V5/ue/Source/V5Core/Public/V5Types.h) enumerates Urban, Period, Frontier, Hunter, SciFi, Steampunk, MindPalace — the five launch cells plus the Brave New World Steampunk Detective DLC cell and the cross-cell Mind Palace meta-layer. Per-cell datasets and tests must size against GetAllV5Cells() (returning all seven, defined in V5Types.cpp), not a literal 5 or 6 — the 2026-05-31 audit traced four automation failures to exactly that mismatch.

Each cell is realized as a family of compiled Source modules: Urban (V5UrbanHeistCity, V5UrbanStreetTriad, V5UrbanOnline, over V5Heist, V5Wanted, V5Parkour, V5Karaoke); Period (V5PeriodMadeMan, V5PeriodViceSquad, over V5Interrogation, V5FaceCapture, V5PeriodAuth); Frontier (V5FrontierOutlawTrail, V5FrontierOnline, over V5Honor, V5Hunting, V5HorseAI, V5DeadEye); Hunter (V5HunterWitchersPath, V5HunterContractBoard, V5HunterCardGame, over V5Alchemy, V5Signs, V5MonsterHunt); and Sci-Fi (V5SciFiGalacticSquad, V5SciFiHardVacuum, V5SciFiPvP, over V5Spaceship, V5StarMap, V5Squad). The cells are held together — not blended — by shared infrastructure: a triad goon, a noir witness, an outlaw, a drowner, and a station guard all read the same V5Perception state machine; V5MindPalace links V5Investigation so evidence picked up in any cell can pair across eras; and V5Modes gates which cell's ruleset and HUD are live.

The subsystem glossary, mapped to code#

The architecture monolith's "Engine Modules" glossary lists 48 names, and the good news is that all 48 exist on disk, one-to-one — no spec-only entries, the V4-style happy case. The reconciliation worth knowing is the other direction: the disk carries 26 modules the glossary table omits, in three groups.

  • Four infrastructure modules the table skips: V5 (the thin composition root — three files, depending only on Core/CoreUObject/Engine/InputCore, named by every target via ExtraModuleNames.Add("V5"), fusing nothing itself), V5Accessibility, V5Localization, and V5Compliance.
  • Eighteen per-mode cell modules — the V5UrbanHeistCityV5SpecOpsCoop set described above. These are the modules the prose expected to be GameFeatures plugins; they are compiled Runtime modules instead, each with a colocated Private/Tests/ spec.
  • Four creator-suite modules: V5MissionEditor, V5HeistAuthor, V5CaseAuthor, V5WorkshopEditor (all Editor-type), realizing promise #6.

Grouped by concern, the 48 catalogue modules read as: a foundation (V5Core — tags registry, save scaffolding, the EV5Cell enum); a gameplay-framework spine (V5Gameplay with real GAS — UV5_AttributeSet_Combat : UAttributeSet exposing Health/MaxHealth/Stamina; plus V5Animation, V5Input, V5Netcode, V5Modes — detailed in ./gas-animation-input.md); a shared-AI layer (V5Perception, V5Crowd, V5Schedules); the per-cell gameplay systems (V5Combat, V5Melee, V5Vehicles, V5Spaceship, V5Alchemy, V5Signs, V5MonsterHunt, V5Heist, V5Investigation, V5Interrogation, V5DeadEye, V5Honor, V5Hunting, V5HorseAI, V5Parkour, V5LockpickHack, V5Karaoke, V5CardGame, V5RadioTV, V5StarMap, V5Squad); the cross-cell layer (V5MindPalace, V5Dialogue, V5PeriodAuth, V5FaceCapture); the presentation/services modules (V5UI, V5Audio, V5VFX, V5Cinematics, V5Persistence, V5OnlineServices, V5Telemetry, V5Hub, V5Open, V5Procgen); and the DLC/test pair (V5SteampunkDetective, V5Tests). Inter-module dependencies are declared explicitly in each *.Build.cs and run one-way — V5Combat → V5Core, V5Gameplay; V5MindPalace → V5Core, V5Investigation; V5UrbanHeistCity → V5Core, V5Wanted — with the cross-cell-shared modules forbidden from depending on any per-cell module (the acyclic-graph property ./topology-layout-module-split.md audits in full).

One more glossary-to-code note on testing: where V4 centralizes 92 specs in a single V4Tests module, V5 distributes its automation — 73 of 74 modules ship their own Private/Tests/ directory (74 test .cpp total), so the cell that owns a system also owns its UE automation spec, and V5Tests itself is a lean six-file harness rather than the bulk of the test code.

How the promise is kept honest#

Two conventions keep V5's prose from drifting ahead of its tree. First, the target-artifact convention above: a section that names a module or path either points at a file that exists or declares a target the owning TODO must build with tests. Second, the cross-reference convention: a bare §N/§N.M resolves to a numbered task in V5_TODOS.md, while deps§NV5_DEPENDENCIES.md, features§"anchor"V5_features.md, and arch§"anchor" → the architecture hub. The most concrete honesty mechanism is V5/REMEDIATION_2026-06-12.md, which deleted a fabricated launch-readiness manifest that had asserted shippability the repo could not back. The precise claim a reader can make today: V5's systems — 74 modules, 669 source files, distributed UE automation — are real and compile; the content that dresses them (meshes, MetaHumans, VO, cinematics, the binary GameFeatureData.uasset that would hot-activate the mode plugins) is production-gated and not yet in-tree; and the operations claims are marked [~] until they can occur.

  • Hub: ../V5_ARCHITECTURE.md; feature map V5/V5_features.md; backlog V5/V5_TODOS.md; dependencies V5/V5_DEPENDENCIES.md; remediation log V5/REMEDIATION_2026-06-12.md.
  • ./topology-layout-module-split.md — the runtime tiers, project layout, the acyclic module graph, and the five build targets in full.
  • ./gas-animation-input.md — the Gameplay Ability System spine, the motion-matching animation stack, and the Enhanced Input layer that every cell rides.
  • ../../platform/overview.html — the shared Oshun platform foundations the V5 services and identity surfaces build on.