# 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/` — `AZMMOPlayerController` com Enhanced
  Input + virtual joystick opcional.
- `Source/ZMMO/Game/Modes/` — `AZMMOGameMode` e `UZMMOGameInstance`
  (auto-connect ao servidor Zeus em `Init`).
- `Source/ZMMO/Game/Network/` — `UZMMOWorldSubsystem` (registry
  `EntityId -> AActor*`, dispatch dos delegates do `UZeusNetworkSubsystem`).

## Dependencias

- Unreal Engine 5.7
- Plugin `ZeusNetwork` (do projecto servidor, em `Server/Plugins/Unreal/`)
- Plugin `ZeusMapTools` (editor-only, opcional)

## Smoke test

1. Servidor Zeus a correr em `127.0.0.1:27777`.
2. Abrir `ZMMO.uproject`, aguardar build do modulo `ZMMO`.
3. PIE: confirmar `[Zeus] Connected to server 127.0.0.1:27777` no Output Log
   e o spawn do pawn local com `EntityId` autoritativo.

## Configuracao

- `bAutoConnectOnStart` (default `true`) em `UZMMOGameInstance`. Desligar
  quando existir UI de login.
- `Config/DefaultEngine.ini` aponta `GlobalDefaultGameMode=/Script/ZMMO.ZMMOGameMode`.
