e3aab64c8cf306f218ffcc45f03a8afd0fb11da7
ZMMOWorldSubsystem mantinha proxies no mapa RemoteEntities apos DESPAWN apenas marcando SetActorHiddenInGame(true) via SetEntityRelevant(false). Entry ficava la apontando pra actor escondido — SPAWN subsequente do mesmo entityId caia no fast-path "reactivar" e tudo bem... ate' o TWeakObjectPtr ficar stale (GC, World Partition stream-out, etc): a branch Contains(EntityId) saia com return incondicional sem spawnar nada. Resultado: SPAWN silenciosamente ignorado, pawn permanente invisivel ate' algo limpar a key. Fixes: 1. HandlePlayerDespawned: Actor->Destroy() + RemoteEntities.Remove (destroi de verdade em vez de so esconder). 2. HandlePlayerSpawned: quando Contains mas weak ptr stale, remove a entry orfa e cai pro caminho de spawn novo — em vez de return. Confirmado pelos logs de cliente durante teste de oscilacao do AOI (servidor enviando DESPAWN+SPAWN ao oscilar ZI/ZD). 🤖 Generated with [Claude Code](https://claude.com/claude-code) 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%