1fe5109c0dcf53911ee5f416f0ac1bc227f28c73
Etapa 7 do refactor de networking server-side bumpou o protocolo para v3 e passou a enviar yaw no S_PLAYER_STATE (campo novo no payload). Cliente agora consome esse yaw via TryGetLastPlayerStateExtended do plugin ZeusNetwork (cache local com YawDeg + Flags). Antes (v2): - S_PLAYER_STATE nao tinha yaw. Comentario do codigo dizia exatamente "Yaw nao chega no opcode S_PLAYER_STATE actual; derivamos do XY da velocidade quando significativo, caso contrario mantemos rotacao do ator." Resultado: proxy parado nao girava, e proxy em movimento ficava com yaw inferido (impreciso quando vel pequena). Depois (v3): - HandlePlayerStateUpdate consulta TryGetLastPlayerStateExtended para pegar YawDeg + Flags do cache do plugin (populado pelo parser v3). - Se PSF_HasYaw esta set, usa o YawDeg autoritativo do servidor. - Caso contrario, fallback antigo (atan2 da vel ou rotacao do ator), preservando comportamento se algum dia o flag vier desligado. Validacao runtime (~5 min, 2 clients UE conectados ao server v3): - Connected sessionId=1 e =2 (handshake v3 OK). - parseRej=0 no servidor (cliente fala v3). - Proxies giram conforme yaw autoritativo (visual; nao tem metrica numerica para isso). Depende de: - ZeusNetwork plugin v3 (commit 3b97500 no repo ZeusServerEngine). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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%