Devlog

Devlog #9 · Movimento autoritativo

Em Aelara, o servidor é a única verdade sobre onde você está.

O cliente envia intenção, não posição: direção, facing, modo de locomoção e tick de referência. O servidor valida, aplica velocidade, limita o deslocamento máximo e atualiza a posição oficial. O cliente nunca diz "estou aqui" — ele diz "quero ir para lá", e o servidor decide se isso é fisicamente possível.

Isso elimina a forma mais simples de cheat: mentir sobre a própria posição. O servidor não aceita posição do cliente. Ele calcula onde você pode estar a partir da intenção e do tempo decorrido.

Anti-cheat de primeira camada

Speed hack e teleport são detectados na comparação entre o deslocamento reportado e o máximo permitido dado o tempo entre ticks. Violações são registradas em Postgres com timestamp, posição e delta.

Nessa fase, o sistema detecta e registra — não pune automaticamente. Punição automática exige calibração de falsos positivos que só vem com dados reais de jogadores. A infra está pronta; o limiar ajusta conforme o mundo cresce.

O loop de autoridade começa

Depois de aplicar o movimento, o servidor emite um delta de posição para o próprio jogador: "você está aqui, canonicamente". Esse é o primeiro passo do loop de autoridade: input entra, servidor decide, cliente recebe a verdade.

Bench / validação
— Soak Phase 8: 1h / 100k entidades / 10 clientes loopback
— Anti-cheat: 6 violações de speed detectadas / 2 auditadas / 0 falsos positivos no gate
— Deslocamento calculado pelo servidor, não aceito do cliente
— Registro em Postgres: timestamp, posição, delta, tipo de violação

Próximo: a primeira conexão viva — o cliente UE5 entra no mundo real.