Il problema che l'heartbeat risolve
Il cheat più difficile da rilevare è quello che disattiva in silenzio il tuo client anticheat e poi gira senza essere osservato. I controlli sulle firme si possono agganciare. L'ispezione NUI si può bloccare. Le funzioni di integrità a runtime si possono neutralizzare con una patch. Una volta che il livello client è muto, un AC a livello singolo è cieco. L'heartbeat anti-tamper esiste per rendere costoso quel silenzio: l'assenza di un heartbeat è già di per sé un rilevamento.
Come funziona il loop heartbeat
Il client Raven emette un payload firmato a cadenza fissa (adattiva per server, vedi la voce del changelog del 2026-02-17; prima era fissa a 1500 ms). Il payload include un hash crittografico dello stato critico a runtime (integrità delle risorse, impronte della tabella degli hook, indirizzi degli handler degli eventi) insieme a un timestamp e a un nonce per sessione. Il server verifica la firma, confronta l'hash con la baseline attesa e annota il tempo fra un arrivo e l'altro. Vengono rilevati tre modi di fallire: l'heartbeat non arriva (client muto), l'heartbeat arriva ma il suo payload non corrisponde più ai valori attesi (client manomesso), oppure l'heartbeat arriva alla cadenza sbagliata (client in replay o non aggiornato).
Perché la cadenza conta
Una finestra heartbeat fissa è più facile da aggirare. Un cheat che disattiva il client per un attimo fra due heartbeat può tenere vivo il loop e girare comunque senza essere osservato. La cadenza adattiva per server (calibrata sulla latenza media del tick nelle prime 24 ore) rende quella finestra imprevedibile per il cheat, senza creare problemi ai giocatori onesti su rotte ad alta latenza. La release di marzo 2026 ha ribilanciato la finestra di default da 1500 ms fissi a un intervallo adattivo di 800-1500 ms, che ha ridotto i falsi positivi sulle rotte EU/AS di circa il 38%.
Cosa succede quando l'heartbeat fallisce
Le risposte al fallimento sono configurabili per server su tre livelli. Livello 1 (avviso) marca il giocatore sulla mappa live e avvisa gli admin tramite il webhook Discord configurato. Livello 2 (kick) espelle il giocatore dal server con un motivo di disconnessione generico e registra l'evento con tutte le prove (ultimo heartbeat valido, timestamp attuale, differenza nel payload). Livello 3 (ban automatico) banna il giocatore sul server locale e lo mette in coda per la promozione al Global Ban Database dopo la revisione di un admin. La configurazione di default è prudente (prima l'avviso, escalation solo in caso di ripetizione) perché il livello heartbeat può produrre falsi positivi durante problemi di rete legittimi.
Come l'heartbeat si lega al trust score
Ogni anomalia dell'heartbeat contribuisce al trust score del singolo giocatore (introdotto nella versione 2026.4.0, vedi /changelog). Un singolo heartbeat in ritardo è rumore. Più heartbeat in ritardo dallo stesso giocatore in sessioni diverse, un heartbeat che resta indietro proprio quando il giocatore entra in certi stati di gioco, o un heartbeat che restituisce sempre lo stesso hash anche se il pacchetto di risorse è stato aggiornato: sono tutti segnali che fanno emergere il giocatore sulla mappa live per la revisione degli admin molto prima che scatti un qualsiasi ban di livello 3.