Problem, który rozwiązuje heartbeat
Najtrudniejszy do wykrycia cheat to ten, który po cichu wyłącza twojego klienta anticheata i dalej działa niezauważony. Sprawdzanie sygnatur da się podpiąć. Inspekcję NUI da się zablokować. Funkcje kontroli integralności da się załatać na pusto. Gdy warstwa kliencka zamilknie, anticheat jednowarstwowy jest ślepy. Heartbeat anti-tamper istnieje po to, żeby ta „cisza” kosztowała: brak heartbeatu sam w sobie jest detekcją.
Jak działa pętla heartbeatu
Klient Ravena wysyła podpisany payload w stałym takcie (adaptacyjnym per serwer, zobacz wpis w changelogu z 2026-02-17; wcześniej stałe 1500 ms). Payload zawiera kryptograficzny hash kluczowego stanu w czasie działania (integralność resource, odciski tablicy hooków, adresy handlerów eventów) razem ze znacznikiem czasu i jednorazowym nonce na sesję. Serwer weryfikuje podpis, porównuje hash z oczekiwaną wartością bazową i sprawdza odstęp między pakietami. Wykrywane są trzy tryby awarii: heartbeat nie przychodzi (cichy klient), heartbeat przychodzi, ale jego payload nie zgadza się z oczekiwanymi wartościami (zmanipulowany klient), albo heartbeat przychodzi w złym takcie (odtworzony lub nieaktualny klient).
Dlaczego takt ma znaczenie
Stałe okno heartbeatu łatwiej ominąć. Cheat, który na chwilę wyłącza klienta między jednym a drugim heartbeatem, może utrzymać pętlę przy życiu i mimo to działać niezauważony. Adaptacyjny takt per serwer (kalibrowany względem średniego opóźnienia ticku z pierwszych 24 h) sprawia, że okno staje się dla cheata nieprzewidywalne, nie robiąc przy tym problemów uczciwym graczom na trasach o wysokim opóźnieniu. Wydanie z marca 2026 zmieniło domyślne okno ze stałych 1500 ms na adaptacyjny zakres 800–1500 ms, co obniżyło false positive na trasach EU/AS o około 38%.
Co się dzieje, gdy heartbeat zawiedzie
Reakcje na awarię są konfigurowalne per serwer w trzech poziomach. Poziom 1 (ostrzeżenie) oznacza gracza na mapie na żywo i powiadamia adminów przez skonfigurowany webhook Discorda. Poziom 2 (kick) wyrzuca gracza z serwera z ogólnym powodem rozłączenia i loguje zdarzenie z pełnymi dowodami (ostatni poprawny heartbeat, aktualny znacznik czasu, różnica w payloadzie). Poziom 3 (automatyczny ban) banuje gracza na lokalnym serwerze i kolejkuje go do przeniesienia do globalnej bazy banów po przeglądzie przez admina. Domyślna konfiguracja jest ostrożna (najpierw ostrzeżenie, eskalacja dopiero przy powtórce), bo warstwa heartbeatu potrafi dawać false positive przy zwykłych problemach z siecią.
Jak heartbeat łączy się z trust score
Każda anomalia heartbeatu wpływa na trust score danego gracza (wprowadzony w wersji 2026.4.0, zobacz /changelog). Pojedynczy spóźniony heartbeat to szum. Wiele spóźnionych heartbeatów od tego samego gracza w kolejnych sesjach, heartbeat, który spóźnia się akurat wtedy, gdy gracz wchodzi w określone stany gry, albo heartbeat, który uparcie zwraca ten sam hash mimo aktualizacji paczki resource: to wszystko sygnały, które wyciągają gracza na mapę na żywo do przeglądu przez adminów na długo przed jakimkolwiek banem z poziomu 3.