2010-05-16 7 views
7

Rozmawialiśmy z przyjacielem o tym, w jaki sposób serwer FPS aktualizuje klientów z nim połączonych. Obejrzeliśmy video faceta oszukującego w Battlefield: Bad Company 2 i zobaczyliśmy, jak to podświetliło pozycję wrogów na ekranie i to nam pozwoliło.Jakie są ogólne strategie dla serwera gry wieloosobowej FPS, aby zaktualizować swoich klientów?

Jego zdaniem, serwer tylko aktualizuje klienta o informacje, które są natychmiast istotne dla klienta. To znaczy. serwer nie będzie wysyłać informacji o wrogich graczach, jeśli są zbyt daleko od klienta lub poza zasięgiem wzroku klienta ze względu na wydajność. Nie był jednak pewien - podniósł przykład kogoś ukrywającego się za kamieniem, nie mogąc nikogo zobaczyć. Jeśli gracz nagle pojawił się w miejscu, w którym miał trzech graczy w zasięgu jego wzroku, opóźnienie wyniesie 50ms, zanim zostanie wyświetlony na ekranie, podczas gdy serwer przekaże niezbędne informacje.

Moja rywalizacja była odwrotna: serwer wysyła klientowi wszystkie informacje o każdym odtwarzaczu i pozwala klientowi ustalić, co jest dozwolone, a co nie. Doszedłem do wniosku, że będzie to mniej kosztowne obliczeniowo, aby serwer wysłał wszystko do klienta i pozwolił klientowi, że tak powiem, na podnoszenie ciężarów. Pomyślałem również, że tak działają programy oszukiwać - przechwytują pakiety serwerów, lokalizują wrogów, a następnie wyświetlają je w widoku klienta.

Tak więc pytanie: Jakie są ogólne zasady lub strategie stosowane przez nowoczesny aparat strzelecki z perspektywy pierwszej osoby, aby utrzymać aktualność klientów?

Odpowiedz

11

To kompromis między twoją pozycją i pozycję twojego przyjaciela, a każda gra podejmie nieco inną decyzję, aby osiągnąć pożądany kompromis. Serwer może próbować nie wysyłać więcej informacji, niż potrzebuje, np. wykonanie kontroli odległości, ale nieuchronnie wyśle ​​niektóre informacje, które można wykorzystać, takie jak wysłanie pozycji wroga, która jest za kamieniem, po prostu oba, ponieważ jest zbyt kosztowne dla serwera, aby obliczyć dokładną linię widzenia za każdym razem i także o problemie z opóźnieniem, o którym wspomniałeś.

Zazwyczaj okaże się, że gry FPS mają tendencję do "wyciekania" większej ilości informacji niż inne, ponieważ są bardziej zainteresowane płynną rozgrywką, która wymaga szybszego i bardziej regularnego tempa aktualizacji. Dodatkowo, w odróżnieniu od gier MMO, gracz FPS zazwyczaj może przenieść się na inny serwer, jeśli jego gra zostanie zniszczona przez oszustwa.

Niektóre dodatkowy odczyt:

+0

Czy masz jakieś zasoby online, w których mogę dowiedzieć się więcej na ten temat? –

+2

Dodałem kilka linków do odpowiedzi. Wiele się uczę od czytania forum Gamedev.net w szczególności. – Kylotan

+1

Doskonałe zasoby; zwłaszcza sieciowe gry dla wielu graczy. Chciałem odpowiedzieć na to pytanie. +1 – Leftium

3

Ogólną zasadą powinno być nie ufanie klientom, w tym sensie, że deweloper powinien zakładać, że ktokolwiek jest w stanie przerobić klienta od zera.

Powiedziawszy to, myślę, że trudno jest uniknąć wysyłania tego rodzaju informacji do klienta (i zapobiegać tego rodzaju oszustwom). Nawet jeśli nie ma linii wzroku, możesz nadal wysyłać pozycje (pośrednio), ponieważ klienci mogą chcieć wykorzystać system dźwięku przestrzennego, który wymaga lokalizacji źródeł dźwięku 3D itp.

+1

Niestety, * Should Be Land jest daleko gruntów, niereprezentatywne rzeczywistości. ;) –

+1

Punkt ten jednak pozostaje - nie można ufać klientom, ponieważ ludzie wykorzystują to zaufanie, aby oszukiwać.Dotyczy to zarówno udzielenia klientowi więcej informacji, niż powinien wiedzieć, a także otrzymania dokładnych poleceń (np. Klient mówi serwerowi, że przycina ściany). – Numeron

Powiązane problemy