← Multiplayer Game System handbook

Multiplayer Game System: project study and implementation contract

Study started 16 October 2026. This document records the project identity and architecture. All nine gameplay plugins now have runtime implementations and matching menu pages. Current authoring instructions and implementation limits are in GameplaySystems.md, CombatAndMaps.md, QuestsAndStory.md, VehiclesAndNPCs.md and CompanionAI.md.

The initial Unreal Python asset audit completed with zero commandlet errors and no asset lookup errors. ProjectAssetAudit.json records the original Data Asset values and Blueprint subobject templates: selectable entries and fallback used Mover, the controller was PC_Sandbox, the single-player map was DefaultLevel, and the menu was WBP_NLS_ServerBrowser. The UI asset matches the source palette. Mover's templates include CharacterMover, NavMover, traversal, motion warping, Foley, visual overrides and Smart Object animation. The later BlueprintGraphAudit.json records original controller/editor-tool graphs. Integration now uses new child pawns for both movement families and adds a separate Gameplay Systems map; see GameplaySetupReport.json.

Existing project

Visual and interaction identity

Source defaults in NLSUIData.cpp use cool graphite panels (10151C), raised surfaces (1A212B), amber accent (F2A93B), near-white text (EEF2F6), muted slate text (8E9AAB), and rounded corners. These are defaults; the current UI Data Asset can override them.

Reuse UNLSWidgetBase, FNLSUIStyle, the current font assets, focus highlights, navigation sounds, and localization conventions. Existing labels use spaced uppercase text; panels and cards have restrained outlines. Do not introduce a second theme system.

WBP_NLS_ServerBrowser is the existing in-game menu. Its native base originally clamped page selection to indices 0–5. It now retains those indices and appends registered feature pages, with a scrolling header and shoulder-button cycling across the combined list. Existing Widget Blueprint layouts receive the native extension pages. Inventory contains Armor and Backpack as subpages.

Gamepad requirements include shoulder cycling, directional focus, confirm/cancel, right-stick scrolling, restored focus after updates, gamepad-friendly marker naming, and visible input prompts. Fifteen menu tabs cannot simply be squeezed into the current header.

Character integration

Avoid reparenting the existing Blueprint characters to a new native ACharacter without an asset-graph audit. Mover and CMC have different movement assumptions. Introduce a new game-specific Blueprint base as a child of the selected existing character, attach gameplay components, and let selectable descendants inherit it. Keep movement, traversal, camera, animation, and visual overrides in their existing owners. A native gameplay component/interface supplies common behavior across both pawn families where needed.

Use an ANLSPlayerState subclass for durable character progression and inventory ownership, with replicated components. Pawn components hold transient health/combat/interaction state and resolve their persistent owner after possession. A game mode subclass extends existing hooks while retaining PC_Sandbox and selection-based spawning.

Plugin boundaries

Plugin Responsibilities Dependencies
NiceGameCore Attributes, stable IDs, attribution/damage contracts, persistence, gameplay events, shared themed pages NiceLobby
NiceInventory Backpack stacks, item instances, armor slots, equip validation, rarity, attribute modifiers Core
NiceSkillTree Prerequisite graph, skill points, survivor/profession/combat branches, unlock tags Core
NiceQuests Main/side definitions, objectives, progress policies, completion and reward transactions Core, Inventory, SkillTree
NiceCombat Weapon definitions, melee/unarmed styles, firing, reload, ammunition, attachments, cosmetics Core, Inventory, SkillTree
NiceStoryline Episodes, scenes, events, branching choices, party progression, access unlocks Core, Quests
NiceVehicles Seat ownership, enter/exit, possession, riding interfaces, vehicle and animal adapters Core, Interactables, SkillTree, Combat
NiceInteractables Focus discovery, server validation, harvest/door/container implementations Core, Inventory, SkillTree, EnhancedInput
NiceMaps World map, top-right minimap, discoverable icons, named custom markers, active tracking, walking navigation Core, Quests
NiceNPC Factions, reputation, companion ownership, commands, AI controllers, optional guide provider Core, Inventory, SkillTree, Interactables, Combat, Vehicles, Maps, Storyline, CompanionAI

Keep dependency direction explicit. Features publish tagged events through Core rather than importing one another in cycles. Each feature registers its menu page on startup and unregisters on shutdown. Definitions use Primary Data Assets and soft references with explicit cook/Asset Manager rules.

Required content and rules

Multiplayer contract

The same authority path runs in standalone, listen server, and dedicated server. Client requests travel through player-owned replicated actors/components. Clients request an action by stable ID; they never supply final damage, rewards, XP, faction reputation, or item definitions for the server to trust.

Replicate private inventory, quest journal, and learned skills only to the owner where possible. Replicate equipped appearance, riding state, health visibility, and world interactions to relevant observers. Shared story and world state belong to a replicated world owner/GameState integration. Split-screen/local players must resolve the correct owning player rather than global player zero.

Define persistence identity separately from selectable character skin. Cover respawn, seamless and classic travel, disconnect/reconnect, and host hand-over explicitly. NiceLobby's hand-over reconnects to a new host; it does not automatically transfer all new world state. Host hand-over needs a world snapshot and restoration protocol before claiming support for persistent co-op worlds.

EOS

Reuse the existing Online Subsystem/EOS transport and identity integration. Gameplay replication does not need a separate EOS API for each feature. Existing source contains session, cloud profile, voice, friends, stats, and moderation integrations; live portal configuration and cross-machine success have not been verified.

Before changing the developer portal, first verify the current login/session/voice/cloud flows and decide persistence hosting. Potential work includes client-policy access for the services actually used, deployment/test account access, and a trusted dedicated-server policy if dedicated servers are selected. Do not expose client secrets in reports or put conversational AI credentials in client builds. Exact portal steps require checking current official documentation and the chosen deployment, not assumptions from old setup notes.

Implementation sequence and acceptance

  1. Asset/Blueprint audit and visual baseline; confirm character family and progression ownership.
  2. Core contracts, derived game framework, registered menu pages, persistence versioning.
  3. Inventory + attributes + skill tree vertical slice: pickup, equip, unlock, save, travel, restore.
  4. Interactions + quests + shared reward transactions, then combat and weapon customization.
  5. Story + maps + world persistence and multiplayer choice resolution.
  6. Vehicle/animal adapters + factions/companions; optional AI provider last.

Every slice needs a usable themed page and gamepad path. Acceptance matrix: standalone offline; listen host plus two clients; dedicated server plus two clients; join in progress; respawn; seamless/classic travel; disconnect/rejoin; simultaneous pickup/equip/quest claims; invalid and repeated RPCs; save migration and interrupted writes; controller-only navigation; low resolution and ultrawide UI. EOS tests need real authorized accounts on separate processes/machines. Passing a C++ build alone does not establish these behaviors.

Suggested additions for consideration: item durability/repair; crafting recipes shared with profession requirements; configurable accessibility and remapping; data validation for missing IDs/cyclic skill graphs; a small functional test map with representative assets for every feature. These are suggestions, not added requirements.

Accepted decisions (16 October 2026)

Open decisions

Final game title/setting and cross-host campaign-transfer policy remain open. Character records and a separate campaign slot currently persist on the authoritative host. Provider credentials and exact models are operator configuration; no provider has been selected or called live.

Verification scope

The UE 5.8.3 NiceLobbySystemEditor Win64 Development build passes with all feature modules. The current native suite passes 23 tests with zero warnings or failures, including authority, invalid requests, reward idempotency, saves, factions and companion inventory. Seventeen Python adapter/gateway tests passed previously, including loopback HTTP; cloud calls were mocked. Runtime reports under Saved/Automation/RuntimeValidation distinguish standalone, rendered, dedicated-server and listen-server runs. These editor-process tests do not establish live EOS, cross-machine, packaged platform, physical-controller or host-migration support. Consult the latest report for each mode rather than treating a native build as full acceptance.