b2c115322991277a56907c855ea14af8051190b5
Cliente fazia OpenLevel 2x: 1. CharSelect resolve mapId via DT_Maps -> TravelToMapById -> OpenLevel 2. Server confirma com S_TRAVEL_TO_MAP -> HandleServerTravelRequested -> OpenLevel **de novo** O segundo OpenLevel destruia o World, PlayerState, AttributeComponent e HUD que ja tinham sido criados/bindados. AttributeComponent novo iniciava com snapshot vazio (entity=0, level=1, hp=0/0) — HUD ficava nesse default. S_ATTRIBUTE_SNAPSHOT_FULL com dados reais chegava DEPOIS do reload, mas HUD nao tinha sido recriado/reativado no novo mundo, entao HandleAttributesChanged nunca rodava. A deduplicacao em ZeusNetworkSubsystem (`S_TRAVEL_TO_MAP duplicate ignored`) so pegava do 3o TRAVEL em diante — o 2o ja fazia o estrago. Fix: compara nome curto do World atual (strip prefixo UEDPIE_N_ do PIE) com o target. Se ja' estao no mesmo mapa, skipa OpenLevel e so seta state pra InWorld — preservando HUD/PlayerState/AttributeComponent.
ZMMO — Cliente Unreal Zeus MMO
Cliente Unreal Engine 5.7 do projecto Zeus. Implementa o pipeline "cliente solto + servidor valida input/velocidade" definido em ADR 0038 (landscape autoritativo no cliente; servidor reservado para colisao de objectos).
Arquitectura
Source/ZMMO/Game/Entity/—IZMMOEntityInterface,AZMMOEntity,AZMMOPlayerCharacter(local, CMC livre),AZMMOPlayerProxy(remoto, snapshot-only).Source/ZMMO/Game/Controller/—AZMMOPlayerControllercom Enhanced Input + virtual joystick opcional.Source/ZMMO/Game/Modes/—AZMMOGameModeeUZMMOGameInstance(auto-connect ao servidor Zeus emInit).Source/ZMMO/Game/Network/—UZMMOWorldSubsystem(registryEntityId -> AActor*, dispatch dos delegates doUZeusNetworkSubsystem).
Dependencias
- Unreal Engine 5.7
- Plugin
ZeusNetwork(do projecto servidor, emServer/Plugins/Unreal/) - Plugin
ZeusMapTools(editor-only, opcional)
Smoke test
- Servidor Zeus a correr em
127.0.0.1:27777. - Abrir
ZMMO.uproject, aguardar build do moduloZMMO. - PIE: confirmar
[Zeus] Connected to server 127.0.0.1:27777no Output Log e o spawn do pawn local comEntityIdautoritativo.
Configuracao
bAutoConnectOnStart(defaulttrue) emUZMMOGameInstance. Desligar quando existir UI de login.Config/DefaultEngine.iniapontaGlobalDefaultGameMode=/Script/ZMMO.ZMMOGameMode.
Description
Languages
C++
93.1%
C
5.2%
C#
1%
Python
0.5%
PowerShell
0.2%