Open-World Narrative · Features

Modes & Multiplayer

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

8sections13 minread1diagram

On this page

This is the answer to "what do I actually press play on, and who is in the room with me?" V5 is one UE5 open-world universe split across six ruleset cells — a 1947-noir Urban cell, a Prohibition-era Period cell, an 1899 Frontier, a Witcher-flavoured Hunter cell, a hard-SF Sci-Fi cell, and the cross-cell Mind Palace — and it advertises a catalogue as wide as that implies: eight primary campaigns, a per-cell skirmish surface, six co-op shapes, six PvP modes, a five-cell horde mode, training and trials, replay theatre, and a persistent Bureau-HQ social lobby that ties the whole thing together. The product only coheres if every one of those surfaces bottoms out in the same orchestration seam instead of forking the engine per genre. They do. A "mode" in V5 is a data record plus a GameFeature plugin plus a build-target gate, registered in one catalog, and the families this page covers — single-player campaigns, drop-in co-op, competitive PvP, horde, and the multiplayer experience that spans cells — are differentiated not by separate runtimes but by the per-cell module that runs after the registry hands off. This page tours those families on the player's side of the menu: what each is, what you do in it, what netcode posture it adopts, and which parts are shipped, compiled, tested C++ versus content that is named-but-uncooked. For the full mode taxonomy and the scope this slots into, start at the hub: ../V5_features.md.

What ships, honestly#

The mode machinery is real, compiled, and tested, and so is each family's per-cell domain logic — but it sits one rung below a running net stack, exactly like the netcode layer it composes. Seven Unreal C++ modules carry this page: V5Modes, V5OnlineServices, V5HordeDefense, V5SpecOpsCoop, V5UrbanOnline, V5FrontierOnline and V5SciFiPvP. Every one compiles on the on-box engine (each carries 13–16 .o objects under V5/ue/Intermediate/Build/Linux/x64/UnrealEditor/Development/), and every automation spec they declare reported Result={Success} in the on-box run logged at Saved/Logs/AutomationFull.log (2026-06-13) — the four V5.Modes.* specs, three V5.HordeDefense.*, four V5.SpecOpsCoop.*, four V5.UrbanOnline.*, four V5.FrontierOnline.*, five V5.SciFiPvP.* and the V5.OnlineServices.* suite including a live HTTP round-trip.

Four honest qualifications keep the rest of the page at face value.

  • V5Modes is a registry/gate/router, not a live transition state machine. Unlike V4's UV4ModeSubsystem::TransitionToMode, V5 ships no runtime mode switch. V5Modes is a set of UBlueprintFunctionLibrary statics — a launch catalog, a GameFeature-plugin discoverer, a per-build-target ruleset gate, a per-cell HUD router, a Bureau-HQ lobby-state builder, an arcade-cabinet profile, and a pro-stadium esports catalog. It decides which modes a build exposes and how their HUD/lobby is shaped; mounting the chosen plugin into a live world is the GameFeatures/World-Partition layer one rung down.
  • The per-cell multiplayer modules are catalog + rule + scoring + sync- validation libraries that compose the shared seams. V5UrbanOnline, V5FrontierOnline, V5SciFiPvP, V5SpecOpsCoop and V5HordeDefense all depend on V5Netcode (AOI profiles, Iris config, the rollback evaluator) and V5OnlineServices (matchmaking / leaderboard / balance-ledger request builders). They emit config structs, deterministic scoring, and FV5OnlineServiceRequest JSON payloads — request construction, not a live session. There is a real FHttpModule transport behind those requests (V5OnlineHttpClient.cpp:64/:182, proven by V5.OnlineServices.HttpTransport.LiveRoundTrip), but no shipping pawn or PlayerState opens one of these sessions yet.
  • The content is uncooked. Every map is a soft path — /Game/V5/SciFiPvP/CapitalRaid/Year1/Maps/CR_01.CR_01, /Game/V5/UrbanOnline/Maps/DM_07, /Game/V5/HordeDefense/Maps/L_Horde_Urban, … /SpecOps/Maps/L_SpecOps_18 — that resolves to nothing at runtime today. The wave director is real code; the wave's enemy meshes are described, not baked.
  • The numbers are computed, not transcribed. Each family carries real arithmetic — horde player/wave scaling curves, Capital-Raid ranked-point formulas, speedrun time scoring, demand/supply economy repricing, best-of-N resolution — that a test would fail on if it were hardcoded.

These are altitude statements, not disparagement: every line cited compiles, is UHT-processed, and is exercised by a passing spec. V5's modes-and-multiplayer stack is the policy, catalog, scoring and session-shape layer, with the wire binding deferred to the same boundary the architecture companion draws for V5Netcode itself: ../architecture/netcode-authority-and-determinism.md.

How a mode is selected#

Everything below routes through one catalog. UV5_Mode_Registry::BuildLaunchCatalog (V5Modes/Private/V5ModeSystems.cpp:291) returns 29 FV5ModeDefinition records (pinned at V5ModesTests.cpp:15), each carrying a PluginName, a Cell, an EV5ModeNetworkModel (one of OfflineSinglePlayer, OnlineOpenWorld, Cooperative, CompetitivePvP, SocialLobby, EditorTool, Utility), a HUD-surface tag, a player cap, and the dedicated/listen/online flags. The registry genuinely touches the engine: DiscoverEnabledGameFeaturePlugins (:301) walks IPluginManager::Get().GetEnabledPlugins() and keeps only plugins whose name starts with V5Mode_ and that reference an enabled GameFeatures plugin (IsV5GameFeaturePlugin, :86).

EnumerateEnabledGameFeaturePlugins(Enabled, Target) (:306) then filters that roster through GateKnownMode (:129) for one of six EV5ModeBuildTarget values. The gate is real policy, not a passthrough: a DedicatedServer build keeps only bSupportsDedicatedServer modes; a ListenServer build also admits offline/utility rulesets; a LANOffline build refuses any bRequiresOnlineServices, CompetitivePvP or SocialLobby mode; an ArcadeCabinet build cooks only the five curated local-co-op slots and forces bRequiresOnlineServices=false so a cabinet Spec-Ops run uses a local service shim instead of the live backend (:134, :164). The spec drives this exactly — a dedicated snapshot keeps 2 of 4 enabled modes and gates the client/editor pair; the cabinet snapshot enables 5 and gates the one non-cabinet online mode.

flowchart TD HQ[Bureau HQ persistent lobby · 32 occupants] --> Pick[Player opens a cell portal or a queue group] Pick --> Gate{UV5_Mode_RulesetGate::EvaluateModeForTarget} Gate -->|editor-only / wrong build target| Hidden[mode hidden from this build] Gate -->|enabled| HUD[UV5_Mode_PerCellHUDRouter routes the per-cell HUD] HUD --> Net{EV5ModeNetworkModel} Net -->|OfflineSinglePlayer| LO[Campaign / Period: no socket · seeded PRNG] Net -->|OnlineOpenWorld| DED[Dedicated server + AOI streaming] Net -->|Cooperative| LSN[Listen server · 2 s host migration · AI backfill] Net -->|CompetitivePvP| RB[Dedicated 60 Hz · 8-frame rollback duels] DED --> MM["UV5_Online_MatchmakingService::BuildQueueRequest(...)"] LSN --> MM RB --> MM MM --> SVC[Leaderboards · balance-ledger · replays request builders] SVC --> HTTP[Real FHttpModule transport · LiveRoundTrip-tested]

Once a mode is admitted, UV5_Mode_PerCellHUDRouter::BuildHUDRoute (:333) picks the cell's HUD widget and status labels — Urban shows wanted stars and ammo and, for V5Mode_Urban_Online, a network panel; Vice Squad and Steampunk Detective expose an investigation notebook; the Sci-Fi ship HUD exposes hull and crew status. The shell that hosts all of this is Bureau HQ, a persistent SocialLobby mode (cap 32). UV5_Mode_OnlineLobby_BureauHQ::BuildLobbyState (:451) mints seven cell portals and four queue groups (open-world, co-op, PvP, training), clamps the connected-player count, fences the Sci-Fi portal behind healthy online services, and flips its primary action to "Retry online services" when the backend is down — a fail-loud lobby, not a fake-connected one.

Campaign, skirmish and signature modes#

Campaigns are V5's single-player spine — eight primary arcs (Heist City, Street Triad, Made Man, Vice Squad, Outlaw Trail, Witcher's Path, Galactic Squad, Hard Vacuum) plus a cross-cell Mind Palace arc, each registered as an OfflineSinglePlayer mode that, per the netcode model, never opens a socket and runs on the seeded xoshiro256+ PRNG. Three carry a co-op surface (Heist City 1–4P, Outlaw Trail's 1–2P shared epilogue, Hard Vacuum's 1–6P crew); those switch to a listen server. The per-cell campaign content lives on the cell pages — the Sci-Fi arcs at ./scifi-galactic-squad.md, the open-world cells at ./urban-crime-cell.md and ./frontier-cell.md.

Skirmish / quick-play is the short-session entry point: a 5–15-minute drop that writes to a rotating skirmish save (never the campaign slot) and grants reduced Bureau XP so it cannot be farmed. Signature modes are the curated ~20–30-minute showcase loop each cell ships (Heist Planner → Execution, MotionScan Interrogation, Dead Eye + Cinematic Encounter, Witcher Sense → Contract, Flip-and-Burn + Dialogue Wheel) — the slice press runs to feel a cell's identity in one sitting, reachable from the cell-select shell with a pre-built profile. Training, trials and replay theatre round out the solo surface: fixed-seed trials are comparable across the leaderboard, and every PvP match and trial run is captured as an input-stream replay re-simulated from inputs (not video), so a replay survives a patch only within the same binary version. The registry exposes V5Mode_Replay, V5Mode_Spectator, V5Mode_Training_Range and V5Mode_PhotoMode as first-class entries in the same catalog.

Co-op across cells#

Co-op is where the universe's "one engine, many genres" thesis becomes a multiplayer room. Two cross-cell modes anchor it.

Spec Ops (V5SpecOpsCoop) is the curated cross-cell co-op ladder. UV5_SpecOpsCoop_Catalog::BuildMissions (V5SpecOpsCoopSystems.cpp:115) builds exactly 18 1–4-player missions, each one spanning a primary, secondary and tertiary cell plus the Mind Palace in its AllowedLoadoutCells, each drop-in/drop-out and enemy-density-scaling, with a computed length of 16 + (index % 4) × 3 minutes. The loadout selector offers 10 cross-cell roles across all five gameplay cells (driver, breacher, negotiator, shadow, marksman, tracker, sign-caster, alchemist, tech, vanguard); BuildSelectorState (:341) enforces that roles are unique within a squad and that every chosen loadout's source cell is allowed for the mission. A Year-1 stretch catalog adds 12 more missions totalling exactly 300 minutes, gated to Bureau Tier ≥5 and locked behind year-1-expansion. Matchmaking is dedicated-authoritative but also solo-and-listen-capable (BuildMatchmakingProfile, :229), and its payload declares "crossCellLoadouts":true so the queue knows to assemble a mixed-cell squad.

Horde Defense (V5HordeDefense) is one shared wave director with a per-cell verb set. BuildPlaylistForCell (V5HordeDefenseSystems.cpp:147) builds a 20-wave playlist for each of the five gameplay cells — four acts of five, a 60-second vendor prep between acts, a mini-boss closing each act and a cell boss at wave 20 (BuildWave, :41). The per-wave math is real: BaseEnemyCount = 6 + wave × 2, HealthScale = 1 + (wave−1) × 0.08, and the flavour is cell-specific — Urban gang waves add SWAT support and civilian-rescue bonuses, Period mob waves trigger scripted police reinforcement at act boundaries, Frontier predators flank, Hunter waves demand oil prep for the boss, Sci-Fi boarding marines vent a room on a hull breach. Live-player scaling is the headline curve, computed in EvaluateWaveScaling (:195): EnemyCountMultiplier = 1 + (players−1) × 0.45 + (wave−1) × 0.025 and HealthMultiplier = 1 + (players−1) × 0.20 + (wave−1) × 0.015, with bRetuneAtNextWaveBoundary set so a 4-player session does not trivialize when one player drops mid-act. Every cell carries its own 1–4P matchmaking queue (/v5/matchmaking/horde/<cell>/queue), and ValidateCatalog (:206) fails loudly if any of the five playlists, twenty waves, or per-cell flavour tags is missing.

The open-world cells add their own co-op shapes. Urban Freeroam is a 2–30 player dedicated-server shard streaming relevancy through the shared 300 m Urban AOI profile; Heist Co-op is a 2–4 player listen-server run with role locks and AI backfill (V5UrbanOnlineSystems.cpp:135). Its cross-player integrity is a real guard: UV5_UrbanOnline_HeistSync::ValidateCrossPlayerHeistSync (:540) refuses to commit a checkpoint unless every player is ready, every player's checkpoint frame equals the authoritative server frame, roles are unique per crew, and a four-player crew covers all of driver/hacker/gunner/lookout. Frontier Posse is a 2–7 player dedicated session on the 500 m Frontier AOI profile with join-in-progress; ValidatePosseSynchronization (V5FrontierOnlineSystems.cpp:381) additionally aligns the shared objective version, the economy ledger version, and per-player horse replication state across the posse.

PvP across cells#

Competitive PvP ships as per-cell catalogs that select a netcode posture and emit a matchmaking contract. They split cleanly along the line the netcode companion draws: twitch PvP rolls back, objective PvP stays server-authoritative.

The Sci-Fi PvP module (V5SciFiPvP) is the densest. BuildModes (V5SciFiPvPSystems.cpp:224) defines two modes — a 1v1 corvette Ship Duel and a 5v5 frigate Capital Raid — both flagged bRollbackPrediction with an 8-frame window at a 60 Hz tick, both dedicated-server. The rollback decision is not re-implemented here: UV5_SciFiPvP_Rollback::EvaluateShipPvPRollback (:683) delegates straight to UV5_Net_RollbackEmulated::EvaluateRollback, the same span-and-window evaluator the architecture page documents (a correct prediction costs zero rewinds; a mismatch rolls back to max(LastConfirmed, Mismatch) and checks the 8-frame budget). Capital Raid is the ranked centrepiece: a 90-day season, anti-cheat-clean gate, leaver penalty, crossplay-opt-in requirement and six expansion maps, all validated in ValidateCapitalRaidExpansionCatalog (:541). Its score is genuine arithmetic, in EvaluateMatchResult (:732) — it rejects a dirty anti-cheat record, a leaver forfeit, a binding mismatch or a loss, then computes RankedPoints = max(1, 1200 + scoreDifferential × 100 + (cores × 200 + breaches × 75) + clamp(duration, 0, 180) × 2). A Year-1 Pro Circuit Season 2 layers a 16-seed double-elimination bracket of exactly 30 match slots (15 upper, 14 lower, 1 grand final, :671) over eight esports-only maps, with workshop content disabled and an observer delay required — the integrity posture an esports broadcast needs.

The other cells follow the same shape. Urban ships a 4v4 Deathmatch and a 4v4 Heist-vs-Heist; MakeMode (V5UrbanOnlineSystems.cpp:25) pins the deathmatch modes to a 60 Hz tick and the open-world modes to 30 Hz, the 16 deathmatch arenas each carry bSupportsEightFrameRollback, and the standard six-phase lifecycle (Lobby → Loading → Warmup → Live → Scoreboard → PostMatch) is asserted in ValidateOnlineCatalog. Frontier ships an 8-player free-for-all Showdown (Dead-Eye disabled, lasso and horse-chase enabled) and a 4v4 Posse War; the Posse War Year-1 tournament runs a ranked-ladder-into-weekly-finals bracket cutting to 32 teams, best-of-five, and scores each match as max(1, 1000 + roundDifferential × 125 + (captures × 30 + eliminations × 20) + clamp(time, 0, 180) × 2) (V5FrontierOnlineSystems.cpp:467). Across all of these, every score and queue flows through the shared V5OnlineServices request builders, and every ranked profile carries bCrossplayOptInRequired — matching the one documented crossplay opt-out in crossplay-progression-policy.json, where the high-precision Sci-Fi spaceship PvP is allowed to fence console players off for input-parity fairness.

The multiplayer experience, end to end#

Pulled together, a cross-cell multiplayer session is a chain of pure functions over plain data, each one tested. From Bureau HQ a player opens a queue; the cell module builds an FV5OnlineServiceRequest via UV5_Online_MatchmakingService::BuildQueueRequest (skill rating, ping, region, cell, mode), the netcode module hands it the right AOI profile and Iris/tick config, the session adopts one of four postures (offline-seeded, dedicated + AOI, listen + 2-second host migration + AI backfill, or dedicated 60 Hz with 8-frame rollback duels), and on completion the result is graded and written back through UV5_Online_LeaderboardsService::BuildScoreWriteRequest — or, for the open-world economies, through the balance-ledger client that reprices each district/region's goods by a clamped demand/supply ratio. Speedrun and trial surfaces close the same loop: EvaluateRouteScore (V5UrbanOnlineSystems.cpp:581) rejects an anti-cheat-dirty run, a >30-second penalty on a clean-run route, or a time outside the 1.5× target window, then scores the survivor as round((targetTime / adjustedTime) × 100000).

What makes this a universe and not five bolted-together games is that the seam is shared all the way down: the same registry gates every mode, the same AOI and rollback library serves every cell, the same online-services contract carries every queue and score, and the same Bureau HQ lobby is the front door. The honest boundary holds throughout — these are the catalogs, rules, scoring and session shapes; the live wire that binds them into a running shard is the deferred layer the netcode companion describes. The backend that those request builders speak to — auth (real HS256 JWT verification and RFC 7636 PKCE), friends, parties, matchmaking, leaderboards, replays, anti-cheat — and its real FHttpModule transport are detailed in the online-services page.

Where this connects#

The mode registry is the orchestration layer almost everything here hangs off, and it is also the seam to the rest of V5. The dedicated-server backbone, matchmaking service, leaderboards, anti-cheat, crossplay/cross-progression policy and the live HTTP transport that ranked PvP, co-op matchmaking and replay storage read from are covered in ./online-services-and-infrastructure.md. The Mission Editor, Heist Author, Case Author and Workshop — the editor-only modes the ruleset gate hides outside editor builds, and the player-made content the co-op and signature surfaces consume — are in ./content-creator-tools-and-workshop.md. The per-cell netcode postures, server authority, lag compensation, 8-frame rollback evaluator and the seeded determinism backbone every mode above selects are the architecture companion, ../architecture/netcode-authority-and-determinism.md. The orientation hub for the whole feature set is ../V5_features.md.