O problema que o heartbeat resolve
O cheat mais difícil de detectar é o que desliga o client do seu anticheat no silêncio e depois roda sem ser observado. Checagem de assinatura pode receber hook. Inspeção de NUI pode ser bloqueada. Funções de integridade em tempo de execução podem ser zeradas por patch. Uma vez que a camada do client fica muda, um AC de camada única fica cego. O heartbeat anti-tamper existe para tornar o “silêncio” caro: a ausência de heartbeat já é, por si só, uma detecção.
Como o loop de heartbeat funciona
O client do Raven emite um payload assinado em uma cadência fixa (adaptativa por servidor, veja a entrada de changelog de 2026-02-17; antes era fixa em 1500ms). O payload inclui um hash criptográfico do estado crítico de execução (integridade do resource, fingerprint da tabela de hooks, endereços de handler de evento) junto de um timestamp e um nonce por sessão. O servidor verifica a assinatura, compara o hash com a base esperada e anota o intervalo de chegada. Três modos de falha são detectados: o heartbeat não chega (client mudo), o heartbeat chega mas o payload não bate mais com os valores esperados (client adulterado), ou o heartbeat chega na cadência errada (client com replay ou defasado).
Por que a cadência importa
Uma janela fixa de heartbeat é mais fácil de driblar. Um cheat que desliga o client rapidinho entre dois heartbeats consegue manter o loop vivo e ainda assim rodar sem ser observado. Cadência adaptativa por servidor (calibrada pela latência média de tick nas primeiras 24h) torna essa janela imprevisível para o cheat sem causar problema para players legítimos em rotas de alta latência. A release de 2026-03 rebalanceou a janela padrão de 1500ms fixos para uma faixa adaptativa de 800 a 1500ms, o que derrubou os falsos positivos em rotas EU/AS em cerca de 38%.
O que acontece quando o heartbeat falha
As respostas à falha são configuráveis por servidor em três níveis. Nível 1 (aviso) marca o player no mapa ao vivo e notifica os admins pelo webhook de Discord configurado. Nível 2 (kick) tira o player do servidor com um motivo genérico de desconexão e registra o evento com prova completa (último heartbeat válido, timestamp atual, diferença do payload). Nível 3 (ban automático) bane o player no servidor local e o coloca na fila de promoção ao Banco Global de Bans depois da revisão do admin. A configuração padrão é conservadora (avisar primeiro, escalar só na repetição) porque a camada de heartbeat pode gerar falso positivo durante problemas legítimos de rede.
Como o heartbeat conversa com a pontuação de confiança
Cada anomalia de heartbeat contribui para a pontuação de confiança por player (introduzida na versão 2026.4.0, veja /changelog). Um heartbeat atrasado é ruído. Vários heartbeats atrasados do mesmo player em sessões diferentes, um heartbeat que atrasa justamente quando o player entra em certos estados de jogo, ou um heartbeat que devolve sempre o mesmo hash mesmo depois do pacote de resources ser atualizado: tudo isso são sinais que colocam o player no mapa ao vivo para revisão do admin bem antes de qualquer ban de nível 3 disparar.