El problema que resuelve el heartbeat
El cheat más difícil de detectar es el que desactiva en silencio tu cliente de anticheat y después corre sin que nadie lo vea. Las comprobaciones de firmas se pueden hookear. La inspección de NUI se puede bloquear. Las funciones de integridad en ejecución se pueden parchear a no-op. Una vez que la capa de cliente se queda muda, un AC de una sola capa está ciego. El heartbeat anti-tamper existe para que ese silencio salga caro: la ausencia de heartbeat es, en sí misma, una detección.
Cómo funciona el bucle heartbeat
El cliente de Raven emite una carga firmada con una cadencia fija (adaptativa por servidor, ver la entrada del changelog del 2026-02-17; antes era fija en 1500 ms). La carga incluye un hash criptográfico del estado crítico en ejecución (integridad de recursos, huellas de la tabla de hooks, direcciones de los manejadores de eventos) junto con una marca de tiempo y un nonce por sesión. El servidor verifica la firma, compara el hash con la línea base esperada y anota el tiempo entre llegadas. Se detectan tres formas de fallo: el heartbeat no llega (cliente mudo), el heartbeat llega pero su contenido ya no coincide con los valores esperados (cliente manipulado), o el heartbeat llega con la cadencia equivocada (cliente con replay o desfasado).
Por qué importa la cadencia
Una ventana de heartbeat fija es más fácil de evadir. Un cheat que desactiva el cliente por un instante entre heartbeats puede mantener vivo el bucle y aun así correr sin ser visto. La cadencia adaptativa por servidor (calibrada contra la latencia media del tick durante las primeras 24 h) vuelve esa ventana impredecible para el cheat sin causarles problemas a los jugadores legítimos en rutas de alta latencia. La versión de 2026-03 rebalanceó la ventana por defecto de un valor fijo de 1500 ms a un rango adaptativo de 800 a 1500 ms, lo que bajó los falsos positivos en rutas de EU/AS cerca de un 38%.
Qué pasa cuando falla el heartbeat
Las respuestas ante fallos se configuran por servidor en tres niveles. El nivel 1 (aviso) marca al jugador en el mapa en vivo y notifica a los admins por el webhook de Discord configurado. El nivel 2 (kick) saca al jugador del servidor con un motivo de desconexión genérico y registra el evento con toda la evidencia (último heartbeat válido, marca de tiempo actual, diferencia de la carga). El nivel 3 (baneo automático) banea al jugador en el servidor local y lo deja en cola para promoverlo a la base de datos global de baneos tras la revisión de un admin. La configuración por defecto es conservadora (primero avisa, escala solo si se repite) porque la capa de heartbeat puede producir falsos positivos durante problemas de red legítimos.
Cómo interactúa el heartbeat con el trust score
Cada anomalía de heartbeat suma al trust score por jugador (introducido en la versión 2026.4.0, ver /changelog). Un heartbeat tarde suelto es ruido. Varios heartbeats tarde del mismo jugador en distintas sesiones, un heartbeat que se atrasa justo cuando el jugador entra en ciertos estados del juego, o un heartbeat que devuelve siempre el mismo hash aunque el pack de recursos se haya actualizado: todas esas son señales que sacan al jugador al mapa en vivo para revisión mucho antes de que salte cualquier baneo de nivel 3.