Wpis z mikrobloga

Hej.

Dziś porozmawiamy sobie od strony technicznej czemu cheaty i boty istnieją.

Większość z nas narzeka na cheaterów, ale czy ktoś z was się zastanowił czemu ten problem istnieje? Zacznijmy od strony twórców gry. Dla zobrazowania problemu zastanówmy się dlaczego cheaty typu wallhack/ESP istnieją. Przykładowo jak to jest możliwe, że ktoś nas widzi przez ściany? Wytłumaczenie tego jest bardzo proste. Serwer przesyła wszystkie dane na temat graczy, gdzie są, jaką mają broń, ile mają punktów życia itp. Z racji, że my mamy dostęp do tych wszystkich danych nie stanowi to teraz dla nas żadnego problemu, żeby te dane odczytać. Albo czemu ktoś potrafi się teleportować w inne miejsce na mapie? Po prostu wysyła się nową pozycję do serwera, a jak serwer tego nie zweryfikuje i jesteśmy w nowym miejscu. Oczywiście przykładów mogłoby być dużo więcej wszystko zależy na co gra pozwala. Jednak można zadać pytanie teleportacja graczy rzadko jest spotykana, czym to może być spowodowane? A no tym, że to jest weryfikowane przez serwer, czyli mogą być dwie możliwości wysyłamy pozycję i serwer sprawdza czy od ostatniego razu zdążylibyśmy przejść taką odległość, albo gra przesyła informację, że idziemy albo biegniemy i serwer na podstawie tego aktualizuje naszą pozycję. Zatem pojawia się pytanie skoro nie można się teleportować, to czemu można znać pozycje wszystkich graczy. Spójrzmy na to od strony serwera, pierwszą rzeczą, którą by trzeba było zrobić to obliczyć odległość pomiędzy innymi graczami, jeśli jakiś gracz byłby od nas za daleko można by było nie przesyłać jego pozycji. Kolejnym i zarazem najtrudniejszym krokiem byłoby sprawdzenie czy jest możliwe, żebyśmy zobaczyli jakiegoś gracza, uwzględniając naszą pozycję, pozycję innego gracza, nasze pole widzenia, oraz przeszkody, które mogą zasłonić przeciwnika. W przypadku map nazwijmy to dynamicznych, gdzie można budować tak jak w Fortnite, ilość możliwych budowli, które mogą zasłonić innych graczy się zwiększa. Jeszcze by pozostawał fakt, przeciwnik jest obok nas, ale zasłania go ściana, no i teraz serwer by musiał wysłać informację w stylu, że w pokoju obok ktoś biega. Dlatego biorąc pod uwagę wydajność serwera, łatwiej, prościej i szybciej jest wysłać pozycje wszystkich graczy i niech po stronie klienta to zostanie odpowiednio przeliczone, kto powinien się pokazać itp. Dlatego twórcy używają anti-cheatów. Wystarczy podać dwa anti-cheaty jakie obecnie są używane BattlEye i VAC. Jednakże są to dwa różne światy. W przypadku BattlEye ciężko spotkać jakiegoś cheatera w grze. Lista gier tutaj https://www.battleye.com które używają tego AC. Natomiast w przypadku VAC jak sama nazwa wskazuje Valve allows cheats, kiedyś się to nazywało Valve Anti-Cheat( ͡° ͜ʖ ͡°). Stąd też tyle cheaterów w takim CS:GO szczególnie, że od niedawna jest za darmo. Ogólnie zadania AC to uniemożliwić zapis i odczyt do/z pamięci gry, oraz modyfikację pakietów sieciowych. W przypadku VAC podobno wystarczy użyć tych funkcji https://msdn.microsoft.com/en-us/library/windows/desktop/ms680553(v=vs.85).aspx i https://msdn.microsoft.com/en-us/library/windows/desktop/ms681674(v=vs.85).aspx to by też wyjaśniało ilość cheaterów w tej grze. Jak to wygląda w przypadku innych AC można przeczytać tutaj https://blog.esea.net/esea-hardware-cheats/ Czyli widać kolosalną różnicę w porównaniu do takiego VAC. Na koniec można zadać pytanie czy da się wyeliminować problem cheaterów? Tutaj nasuwa się odpowiedź streamowanie obrazu gry, ale czy to rozwiąże problem? Czy wtedy komputery będą na tyle wydajne, że będą wstanie przetworzyć obraz i dźwięk i cheaterzy dalej będą mieli wszystkie potrzebne informacje? Czas pokaże.

#gry #csgo #fortnite #pubg #mmorpg #programowanie #gamedev #bezpieczenstwo #security #makelifegreatagain
  • 15
Tutaj nasuwa się odpowiedź streamowanie obrazu gry, ale czy to rozwiąże problem? Czy wtedy komputery będą na tyle wydajne, że będą wstanie przetworzyć obraz i dźwięk i cheaterzy dalej będą mieli wszystkie potrzebne informacje? Czas pokaże.


@MakeLifeGreatAgain: Nie ma nawet takiej opcji bo byłyby to ogromne pakiety danych przesyłane przez sieć i grałbyś co najwyżej z 1 fpsem jak nie gorzej.
Jedyny sposób to możliwość zablokowania czytania/edycji pamięci i plików gry.
@arnoldvon: Technologia się rozwija internet będzie miał coraz lepszą przepustowość i szybkość. Druga sprawa to jak byś chciał zablokować możliwość czytania pamięci? W takim systemie Windows masz warstwy bardziej uprzywilejowane i często są właśnie używane przy pisaniu bypassów. Nie ma gry której nie da się zhackować.
@Mazowia: Zablokowanie czytania pamięci jest dużo bardzie realne niż strumieniowanie obrazu. Czemu?
Wyobraź sobie teraz sytuacje, gdzie na serverze jest 16 graczy. Tylko 16 graczy! Server dla każdego z nich musiałby wyrenderować klatkę kumasz? Ze wszystkimi shaderami w odpowiedniej rozdzielczości. Dla każdego z graczy musiałby liczyć światło, cienie, ewentualnie jakieś cube mapy bo np. w canalsach jest odbicie w wodzie i inne takie rzeczy w zaleśności od frustum view. Jaka technologia
@arnoldvon: daj spokój, strumieniowanie gier już od dawna działa, onlive, geforce now i pewnie jeszcze kilka innych. Serwer może robić dokładnie to samo co teraz ale gra nie działa u ciebie, więc i cheatów nie uruchomisz. W ogóle to nie rozwiązuje problemu, ale skutecznie go omija. Z tym, że przez opóźnienia słabo to się nadaje do szybkich gier multiplayer.
@arnoldvon: nie proponuję a mówię, że to już działa i nie trzeba kosmicznej technologii tak jak się rozpisałeś.
A o opóźnieniach czytałem i testowałem, dlatego napisałem o tym w ostatnim zdaniu.
@arnoldvon: Kurła to jest przyszłość i tak będzie. Będziesz płacił za czas i grał na highendowym sprzęcie w przyszłości jak na automatach. Do tego czasu już powstaną cheaty analizujące obraz na bazie ml. Mój pierwszy internet to było marne 8kb/s i ciężko mi było wyobrazić sobie 200mbit/s.
@Wu70: No niby działa, ale nie do końca tak jak napisałeś. Żeby to było w ogóle do użytku to potrzebny by był server dla gry + chmura dla graczy, czyli producent musiałby zainwestować sporo kasy żeby wydać w ogóle grę co na pewno nie ma szans. Lepszą opcją byłoby analizowanie każdej klatki gracza na jego komputerze i jest to wykonalne. Pozbycie się spin botów to nie jest jakaś wyższa informatyka tylko