Le problème que résout le heartbeat
Le cheat le plus difficile à détecter est celui qui désactive discrètement votre client anti-cheat puis tourne sans être observé. Les contrôles de signature peuvent être hookés. L'inspection NUI peut être bloquée. Les fonctions d'intégrité à l'exécution peuvent être neutralisées. Une fois la couche client silencieuse, un AC à une seule couche est aveugle. Le heartbeat anti-tamper existe pour rendre ce silence coûteux : l'absence de heartbeat est elle-même une détection.
Comment fonctionne la boucle heartbeat
Le client Raven émet une charge utile signée à une cadence fixe (adaptative par serveur, voir l'entrée de changelog du 2026-02-17 ; auparavant fixée à 1500 ms). La charge utile contient un hash cryptographique de l'état d'exécution critique (intégrité des ressources, empreintes de la table de hooks, adresses des gestionnaires d'événements) ainsi qu'un horodatage et un nonce par session. Le serveur vérifie la signature, compare le hash à la référence attendue et note le délai entre deux arrivées. Trois modes de défaillance sont détectés : le heartbeat n'arrive pas (client silencieux), il arrive mais sa charge utile ne correspond plus aux valeurs attendues (client manipulé), ou il arrive à la mauvaise cadence (client rejoué ou périmé).
Pourquoi la cadence compte
Une fenêtre de heartbeat fixe est plus facile à esquiver. Un cheat qui désactive brièvement le client entre deux heartbeats peut garder la boucle vivante tout en tournant sans être observé. Une cadence adaptative par serveur (calibrée sur la latence de tick moyenne des premières 24 h) rend cette fenêtre imprévisible pour le cheat sans poser de problème aux joueurs légitimes sur des routes à forte latence. La version 2026-03 a rééquilibré la fenêtre par défaut, passant de 1500 ms fixes à une plage adaptative de 800 à 1500 ms, ce qui a fait baisser les faux positifs sur les routes EU/AS d'environ 38 %.
Ce qui se passe quand le heartbeat échoue
Les réponses en cas d'échec sont configurables par serveur, sur trois niveaux. Le niveau 1 (avertissement) marque le joueur sur la carte en direct et prévient les admins via le webhook Discord configuré. Le niveau 2 (kick) déconnecte le joueur du serveur avec un motif générique et journalise l'événement avec toutes les preuves (dernier heartbeat valide, horodatage courant, diff de la charge utile). Le niveau 3 (ban automatique) bannit le joueur sur le serveur local et le met en file d'attente pour une promotion vers la base de bans mondiale après revue par un admin. La configuration par défaut est prudente (avertir d'abord, escalader seulement en cas de récidive) parce que la couche heartbeat peut produire des faux positifs lors de vrais problèmes réseau.
Comment le heartbeat interagit avec le score de confiance
Chaque anomalie de heartbeat alimente le score de confiance par joueur (introduit en version 2026.4.0, voir /changelog). Un heartbeat en retard isolé est du bruit. Plusieurs heartbeats en retard chez le même joueur sur plusieurs sessions, un heartbeat qui décroche précisément quand le joueur entre dans certains états de jeu, ou un heartbeat qui renvoie toujours le même hash alors que le pack de ressources a été mis à jour : autant de signaux qui font remonter le joueur sur la carte en direct pour examen par un admin, bien avant qu'un ban de niveau 3 ne se déclenche.