Consolidar GameplayAbilitySystem na main (baseline cliente tudo funcionando 2026-06-16) #6

Merged
Mateuus merged 10 commits from GameplayAbilitySystem into main 2026-06-16 00:26:54 -03:00
2 changed files with 34 additions and 0 deletions
Showing only changes of commit e87b2cec6c - Show all commits

19
Config/DefaultZeusV1.ini Normal file
View File

@@ -0,0 +1,19 @@
; DefaultZeusV1.ini
; Config inicial pra UZeusNetworkingClientSubsystem (P9-6/P9-7 plugin).
; Editar via UE Project Settings -> Plugins -> Zeus V1 OU editar este arquivo
; e relancar o editor.
;
; PORT 7777: ZeusGateway. NodeService popula routes via charId lookup quando
; cliente conecta (validado: handshake routed charId=7 -> SP_01 cell 0). Fluxo
; padrao de producao -- UE conecta no Gateway, Gateway resolve cell ownership
; via lease em Valkey + encaminha pro ZS correto.
;
; ALTERNATIVO (debug only -- bug aberto pendente investigacao):
; ServerPort=9001 conecta DIRETO em SP_01 mas hoje pacote UE nao chega no
; server (FUdpSocketBuilder + Windows multi-NIC loopback issue). Use 7777.
[/Script/ZeusNetwork.ZeusNetworkingClientSubsystem]
ServerHost=127.0.0.1
ServerPort=7777
bUseZeusNetworkingV1=True
bAutoConnectOnStart=True

View File

@@ -96,6 +96,21 @@ void UZeusWorldSubsystem::HandlePlayerSpawned(const int64 EntityId, const bool b
return; return;
} }
// P10-FIX-LEGACY (workflow wcyeqgrad finding): server pode reenviar
// S_SPAWN_PLAYER com bIsLocal=false do PROPRIO entityId via AOI re-emit
// (catch-up cross-server, SetOnEnter callback recomputando InterestSet,
// handoff em flight). Sem guard, o segundo spawn cria proxy fantasma do
// proprio player; GAS/HUD passa a rotear via proxy fantasma e o pawn real
// perde vinculo. Sintoma observado: player ve 2 pawns sobrepostos, ou
// outros players nao veem o autoritativo.
if (LocalEntityId != 0 && EntityId == LocalEntityId)
{
UE_LOG(LogZMMO, Verbose,
TEXT("ZeusWorldSubsystem: ignoring S_SPAWN_PLAYER for own LocalEntityId=%lld (bIsLocal=%d)"),
LocalEntityId, bIsLocal ? 1 : 0);
return;
}
if (bIsLocal) if (bIsLocal)
{ {
// O proprio AZeusCharacter cuida da sua identidade quando recebe o // O proprio AZeusCharacter cuida da sua identidade quando recebe o