•  

    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
    pokaż całość

    •  

      @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 proste liczenia i porównywanie jak w podstawówce. W ogóle usunięcia aima z gry jest naprawdę realną i prostą rzeczą.
      Lepszą opcją tutaj pewnie by było właśnie zrobić server który renderuje obraz dla wszystkich graczy jednocześnie i teoretycznie jesteśmy to już w stanie robić od OpenGLa chyba 4.3 albo 4.4, gdzie jest możliwość wywołania compute shadera działającego i liczącego wiele rzeczy jednocześnie - patrz tiled light rendering (lub forward+), więc jak już to bardziej bym kombinował w tą stronę.
      @Mazowia: Nie ma na razie podstaw żeby od razu wysuwać taki wniosek. Jak masz jakąś grę online która działa na zasadzie chmury to daj znać, chętnie zobacze (grę w której producent zapewnia chmure!). Co do renderowania wielo frustumowego mam już potrzebną technologię tylko trzeba ją jeszcze trochę ulepszyć i zwiększyć szybkość internetu.
      pokaż całość

    • więcej komentarzy (13)

Ładuję kolejną stronę...

Archiwum tagów