Skip to content

feat: estatísticas de rede do modo de medição no log do servidor - #36

Merged
thnbi merged 2 commits into
devfrom
feat/client-stats-in-server-log
Oct 21, 2026
Merged

thnbi merged 2 commits into
devfrom
feat/client-stats-in-server-log

Conversation

@thnbi

@thnbi thnbi commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Com ?perf=1, o resumo de rede que o cliente já escrevia no console a cada 2 s (net.stats) agora também vai para o log do servidor de jogo, e ganha o pior quadro da janela.

  • worstFrameMs (netStats.ts): o maior intervalo entre dois quadros da janela. Um engasgo de 200 ms some na média de FPS e é exatamente o que o jogador sente como lag.
  • Envio ao servidor (followNetwork.ts): navigator.sendBeacon para POST /perf/stats na porta do servidor de jogo, como texto puro. Não há preflight de CORS, e o envio não espera resposta.
  • Registro (main.ts): a rota grava cada resumo como uma linha client.stats em JSON, com o IP de quem mandou, ao lado do que o servidor já registra. Corpo que não é JSON vira client.stats-invalid; o limite é 4 KiB.

Motivo: no relato de lag de 19/10, a aba de automação do Chrome não servia para medir, porque fora de foco ela roda a 1 FPS, e o console de quem jogou não é legível de fora. Com a medição no log do servidor, uma partida de 30 s já separou máquina de rede: 60 FPS de mediana, 0 correções em 5575 confirmações e 21 ms de RTT. Era a máquina.

Verificação

npm run verify passa: 276 arquivos de teste, 100% de cobertura. A rota foi testada com curl e com uma partida real no Chrome.

@thnbi
thnbi merged commit 5c66248 into dev Oct 21, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant