하트비트가 해결하는 문제
가장 잡기 어려운 치트는 안티치트 클라이언트를 조용히 무력화한 뒤 아무도 보지 않는 상태에서 돌아가는 치트입니다. 시그니처 검사는 후킹될 수 있고, NUI 검사는 막힐 수 있으며, 런타임 무결성 함수는 아무 일도 하지 않도록 패치될 수 있습니다. 클라이언트 레이어가 침묵하는 순간 단일 레이어 AC는 눈이 멉니다. 하트비트 안티탬퍼는 그 "침묵"에 값을 매기기 위해 존재합니다. 하트비트가 없다는 사실 자체가 탐지입니다.
하트비트 루프의 동작
Raven 클라이언트는 정해진 주기로 서명된 페이로드를 보냅니다(서버별 적응형, 2026-02-17 체인지로그 항목 참고. 이전에는 1500ms 고정이었습니다). 페이로드에는 핵심 런타임 상태(리소스 무결성, 후킹 테이블 지문, 이벤트 핸들러 주소)의 암호학적 해시와 함께 타임스탬프, 세션별 논스가 들어갑니다. 서버는 서명을 검증하고 해시를 기준값과 비교한 뒤 도착 간격을 기록합니다. 탐지되는 실패 유형은 셋입니다. 하트비트가 도착하지 않는 경우(침묵한 클라이언트), 도착했지만 페이로드가 기대값과 맞지 않는 경우(변조된 클라이언트), 잘못된 주기로 도착하는 경우(재전송되었거나 오래된 클라이언트)입니다.
주기가 중요한 이유
고정된 하트비트 간격은 피하기 쉽습니다. 하트비트 사이에 잠깐 클라이언트를 꺼 두는 치트는 루프를 살려 둔 채로 감시를 벗어날 수 있습니다. 서버별 적응형 주기(첫 24시간 동안의 평균 틱 지연으로 보정)는 그 틈을 치트 입장에서 예측할 수 없게 만들면서도, 지연이 큰 경로의 정상 플레이어에게 문제를 일으키지 않습니다. 2026-03 릴리스에서 기본 간격을 1500ms 고정에서 800~1500ms 적응형으로 재조정했고, EU/AS 경로의 오탐이 약 38% 줄었습니다.
하트비트가 실패했을 때
실패 시 대응은 서버마다 세 단계로 설정합니다. 1단계(경고)는 실시간 맵에 플레이어를 표시하고 설정된 Discord 웹훅으로 관리자에게 알립니다. 2단계(킥)는 일반적인 접속 종료 사유로 플레이어를 내보내고, 전체 증거(마지막 정상 하트비트, 현재 타임스탬프, 페이로드 차이)와 함께 기록을 남깁니다. 3단계(자동 밴)는 해당 서버에서 플레이어를 밴하고 관리자 검토 후 글로벌 밴 데이터베이스 등록 대기열에 올립니다. 하트비트 레이어는 정상적인 네트워크 문제에서도 오탐이 날 수 있으므로 기본 설정은 보수적입니다. 먼저 경고하고, 반복될 때만 단계를 올립니다.
하트비트와 신뢰 점수의 관계
하트비트 이상은 각각 플레이어별 신뢰 점수에 반영됩니다(2026.4.0 버전에서 도입, /changelog 참고). 하트비트가 한 번 늦은 것은 잡음입니다. 하지만 같은 플레이어가 여러 세션에 걸쳐 반복해서 늦거나, 특정 게임 상태에 들어갈 때만 하트비트가 뒤처지거나, 리소스 팩이 업데이트됐는데도 계속 같은 해시를 돌려준다면, 그것은 모두 3단계 밴이 나가기 훨씬 전에 플레이어를 실시간 맵에 올려 관리자 검토를 유도하는 신호입니다.