Chcę stworzyć strzelankę dla wielu graczy. Gdy czytam o różnych tematach, widzę, że mam przed sobą prawdziwe wyzwania, ale jestem gotowa na to.
Nie rozumiem tylko, w jaki sposób mam chronić grę przed ludźmi, którzy próbują tworzyć boty?
Chodzi mi o to, o ile rozumiem, że nie można chronić ruchu sieciowego w taki sposób, aby gracze nie byli w stanie tworzyć programów, które słuchają tego, co się dzieje i rozumieją to.
Martwi mnie więc to, że ludzie mogą tworzyć boty, które słuchają bieżącej lokalizacji rywali i wysyłają komunikację naśladującą sytuację, jakby gracz strzelał w dokładnie „idealnej” lokalizacji, aby wygrać ten mecz.
Jakie techniki są używane do ochrony gier w czasie rzeczywistym przed takimi botami?
Chciałbym również wspomnieć, że próbowałem szukać dyskusji (ponieważ brzmi to jak coś, z czym zmaga się wiele osób), ale nie mogłem znaleźć niczego konkretnie na ten temat, tylko jako część szerszych pytań na temat sieci w grach czasu rzeczywistego . Gdybym miał wyglądać trudniej, umieść mnie na swoim miejscu :)
źródło
Odpowiedzi:
Istnieją dwa podejścia do przeciwdziałania botom. Są to ochrona po stronie klienta i analiza po stronie serwera.
Ochrona po stronie klienta jest najbardziej oczywistym podejściem - w pewnym sensie brutalna siła. Dokładasz wszelkich starań, aby klient gry był w pełni zgodny z prawem, nie został zmieniony i żadne inne programy na niego nie wpływają. To jest trudny problem i niemożliwy do pełnego rozwiązania. Ale wiele gier próbuje i odnosi pewne sukcesy dzięki tej metodzie. Wiem, że istnieją gotowe rozwiązania ochrony klienta i sugeruję, abyś ich szukał. Samo wdrożenie jest trudnym zadaniem.
Oprócz tego, że jest mniej niż 100% skuteczna, ochrona po stronie klienta ma tę wadę, że jest wyjątkowo denerwująca dla twoich graczy. Zwykle oznacza to takie rzeczy, jak wyłączenie przełączania zadań Alt-Tab, programy antywirusowe itp.
Analiza po stronie serwera jest mniej inwazyjna. W tym podejściu masz kod serwera, który analizuje wzorce zachowań graczy. Najczęściej boty grają wyraźnie inaczej. Na przykład, gracze będący ludźmi mają różny czas między czynnościami (takimi jak strzelanie), a tym razem przestrzegają rozkładu krzywej dzwonowej. Prymitywne boty będą miały stały czas lub równomiernie rozłożone w pewnym okresie. Ciekawostka: za pomocą tej metody złapaliśmy kiedyś gracza z mechanicznym botem - sprytnym urządzeniem, które naciskało przyciski na fizycznej klawiaturze. Nie trzeba dodawać, że żadna ochrona klienta nie może tego uchwycić . Ta analiza nie jest jednak idealna. Bardziej zaawansowane boty oszukują twoje systemy, a im więcej kontroli wprowadzasz, tym bardziej zaawansowane stają się boty.
Aby uzyskać najlepszą ochronę, możesz połączyć obie te metody. Ochrona klienta utrudni tworzenie botów, a analiza serwera zatrzyma proste boty, które zostały szybko opracowane. Ale cokolwiek zrobisz, nigdy nie możesz całkowicie powstrzymać botów. O ile nie wyślesz swoich przedstawicieli do domów graczy, nadzoruj ich grę i zgłaszaj naruszenia. (Nawiasem mówiąc, nie jest to niespotykane. Zdecydowanie przeczytałem historię o pokerze online wysyłającym ludzi do domu odnoszącego sukcesy gracza, aby potwierdzić, że gra legalnie. Ale nie mogę tego teraz znaleźć.)
Istnieją jeszcze dwie wątpliwe zalecenia dotyczące walki z botami. Po pierwsze, zaszyfruj ruch sieciowy. Nie sądzę, żeby to zadziałało. Gdy twój klient jest w rękach wroga, ruch może być i zostanie odszyfrowany ... lub twój własny klient zostanie użyty do szyfrowania. Z drugiej strony szyfrowanie powoduje opóźnienie, co jest naprawdę złe dla „strzelanki w czasie rzeczywistym”. Drugie zalecenie to „po prostu zaprojektuj swoją grę na tym”. Choć wydaje się to dobrym pomysłem, nie widziałem jeszcze jednej gry, która to poradziłaby.
źródło
Nie spodziewałbym się, że żaden z dużych graczy opowie o tym, co robią, aby chronić swoje gry. Im mniej ludzie wiedzą o tym, co robią, tym trudniej jest im się obejść. Myślę, że częścią tego, co robi Steam, jest wyszukiwanie niektórych działających aplikacji, które znajdują się na czarnej liście.
Osobiście starałbym się szyfrować i zaciemniać komunikację tak bardzo, jak to możliwe między komunikującymi się maszynami, może warto przeczytać o tym, jak działa https / ssl, aby uzyskać jakieś pomysły. Jeśli hosty wygenerują losowe klucze publiczne / prywatne i wyślą tylko część publiczną do innych klientów, wówczas coś nie będzie w stanie łatwo przechwycić i zmienić zawartości wysyłanych pakietów, chociaż jeśli masz dostęp do klienta maszyna wtedy nic nie jest całkowicie bezpieczne.
Musisz także upewnić się, że exe klienta nie zostanie zmieniony.
źródło
Zaprojektuj swoją grę tak, aby praca w zespole i podejmowanie właściwych decyzji były ważniejsze niż umiejętność celowania. Twarde boty stają się wykładniczo trudniejsze.
źródło
I zadaj sobie najważniejsze pytanie, czy warto. Oszuści i osoby dojeżdżające do gry mogą robić 2 rzeczy:
Oba nie wykluczają się oczywiście.
Zwykle największym problemem są 3+ (ponieważ człowiek może podczas szkolenia korzystać z 2 klawiatur lub innych urządzeń wejściowych w tym samym czasie, ale nie więcej, ponieważ ma tylko 2 ręce) klientów z tych samych lub blisko powiązanych adresów IP (lub MAC adresy) działając w zgodzie, wykonując polecenia w ciągu milisekund od siebie. Więc jeśli wykryjesz powiedzmy, że 5 klientów pochodzących z tego samego adresu IP wydaje polecenia z nienaturalnie wysoką częstotliwością i nienormalnie ścisłą koordynacją, prawdopodobnie znalazłeś swojego robota. Zwykle będzie to najbardziej szkodliwe w scenariuszach PvP, w których ta armia botów może zdominować starcie przeciwko podobnej liczbie ludzi kontrolowanych przez ludzi ze względu na wyższą koordynację i szybkość. W scenariuszach pve, gra zazwyczaj ma ograniczone obrażenia (z wyjątkiem tego, że pozwala jednej osobie szybciej trenować wiele toonów na wysokie poziomy,
źródło