f21d059b67473ca5b55f68b8ca00ec12702ecb2e
ZeusPlayerProxy.cpp -- H3 fix (2026-06-06): EMA com clamp para ServerClockOffsetMs ================================================================ Antes: offset congelado na 1a amostra de ApplyEntitySnapshot. Em cross-server handoff, a fonte do ServerTimeMs muda (publisher antigo emitia 12340000, novo emite 12351000) e o offset fica permanentemente skewed. Causa tremor pos-handoff + drift cumulativo de clock cliente vs server. Depois: cada amostra recalcula candidato (LocalNowMs - Snapshot.ServerTimeMs) e suaviza via EMA com alpha=0.02 (~50 amostras para convergir) + clamp max 2ms por amostra (a 30Hz isso converge a 60ms/s, suficiente para absorver drift normal sem causar tremor visual). 1a amostra continua bootstrap direto. Trecho: const double Alpha = 0.02; const int64 RawTarget = ServerClockOffsetMs*(1-Alpha) + OffsetCandidate*Alpha; const int64 Delta = RawTarget - ServerClockOffsetMs; const int64 ClampedDelta = clamp(Delta, -2, 2); ServerClockOffsetMs += ClampedDelta; Asset cleanup L_TestWorld ========================== DT_Maps.uasset modificado + 3 ExternalActors deletados (provavelmente limpeza no UE editor ao reorganizar mapa). Empacotado junto pra branch ficar limpa. * Content/ZMMO/Data/World/DT_Maps.uasset (M) * Content/__ExternalActors__/ZMMO/Maps/World/L_TestWorld/2/BR/38W34OMKW0W3L1PGS3Y98G.uasset (D) * Content/__ExternalActors__/ZMMO/Maps/World/L_TestWorld/4/8L/X3PMRJRGAACIU1WG1P1KJ0.uasset (D) * Content/__ExternalActors__/ZMMO/Maps/World/L_TestWorld/8/L1/C6M65Q91PG5E7ML91VQZX3.uasset (D) Co-Authored-By: Claude Opus 4.7 <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%