Gry sieciowe - coś o lagach i ilości graczy

  • Autor: Tojteusz
  • Opublikowano: 09 Sierpień 2016
  • Komentuj 8

Czasem się zdarza. I co zrobisz? Nic nie zrobisz

Czasem się zdarza. I co zrobisz? Nic nie zrobisz

Czy nie zastanawiałeś się dlaczego w Counter-Strike nie można na jednej mapie zagrać 500 kontra 500 graczy? Przecież w World of Warcraft gra naraz kilka tysięcy osób! Czemu gra nam się ''laguje” lub mamy ''cofki”? Postaram się odpowiedzieć na te pytania i nieco rozjaśnić owe zagadnienia. Zacznijmy od tego jak w uproszczeniu działają gry sieciowe. Jest sobie gracz, który zalogował się na serwer. Wysyła on informacje do serwera mówiąc, gdzie aktualnie się znajduje i co robi. Serwer odbiera takie dane i przekazuje do wszystkich pozostałych graczy na serwerze, którzy są zainteresowani tą informacją. Tacy użytkownicy wiedzą gdzie jest gracz i co robi. Tylko, że każdy gracz zalogowany do gry wysyła taką informację kilkaset razy na sekundę, a serwer później wysyła to do pozostałych graczy. Wydaje się to proste i bezproblemowe, ale wcale takie nie jest. Na całość składa się jeszcze wiele skomplikowanych formuł zabezpieczających rozgrywkę przed oszustwami, problemami z internetem, a nawet samymi błędami programistów
Co jednak kiedy Twój internet na chwilę zwolni? Ty, czy raczej kontrolowana przez Ciebie postać, biegniesz z punktu A do B, ale nie wysyłasz takich informacji na serwer. Maszyna nie rozsyła tego dalej i okazuje się po chwili, że macie sprzeczne dane. Inni gracze widzą, że Cię ''zlagowało'' bo stoisz w miejscu, a Ty jesteś w miejscu którym Cię nie ma. Serwer musi na to jakoś zareagować. W takiej sytuacji zazwyczaj są dwie opcje. Pierwsza: cofniemy Cię z powrotem do punktu A, pobiegaj sobie dwa razy. Chyba, że już Cię zabili w punkcie A. Druga opcja jest taka: system po odebraniu najnowszych danych przeniesie Cię na serwerze w punkt B i da znać o tym innym graczom. Tylko, że oni strzelają w punkt A, a Ciebie już tam niema. A to peszek. Okej, te problemy da się w jakimś stopniu poprawić, ale tym jak i oszukiwaniem zajmiemy się innym razem.

CS na 1000 graczy? Raczej nie dziś

CS na 1000 graczy? Raczej nie dziś

Wróćmy do naszego pierwszego pytania. Czemu nie gramy w CS’a meczy 500 vs 500? Jest kilka powodów. Jednym z nich jest przesyłanie ogromnej ilości danych. Taki CS jest bardzo precyzyjny - podaje pozycję graczy z dokładnością do kilku miejsc po przecinku, gdzie w grach o masowej ilości najczęściej ta dokładność jest znacznie mniejsza. Do tego dochodzi bardzo precyzyjne celowanie, pozycja postaci. Przekazanie takiej ilości danych na serwer i później do 1000 innych graczy było by dla maszyny bardzo ciężkim zadaniem. Zresztą patrzcie:1 Dobra, ale w takim razie jak to się dzieje, że w WoWie są tysiące graczy i serwer daje radę? Bardzo prosta sprawa. Taka mapa świata w MMO jest podzielona na mniejsze sekcje. Serwer odbiera informacje od wszystkich, ale później wysyła je tylko do graczy w pobliżu lub do całej danej sekcji. Na przykład do wszystkich w mieście. Bardzo często też spotkamy się z kanałami w grze. Możemy być w tym samym miejscu co inny gracz, na tym samym serwerze, a go nie zobaczymy. Bo serwer wyśle informacje o pozycjach graczy tylko z tego samego kanału w tym samym obrębie mapy. Problem rozwiązany.
Nowsze gry takie jak Guild Wars 2 czy Elder Scroll Online korzystają z megaserwerów, które złożone są z wielu zwykłych serwerów. Każdy taki serwer może obsługiwać daną lokację czy wcześniej wspomniany kanał. Gracz jest przemieszczany miedzy nimi niezauważalnie. Takie coś jednak nie może mieć miejsca w ''strzelankach”, bo tu liczą się ułamki sekund, a każde takie przepięcie miedzy serwerem zajmuje jakieś ułamki sekund. No i gracz w tym czasie może zostać zabity. Ponadto pojawiają się tez snajperki, które mają bardzo duży zasięg. wiec jeśli serwer by nie przekazał informacji o odległych graczach, to ta broń nie miałaby żadnego sensu.

Zawsze jest coś za coś

Planetside 2 idzie na kompromisy

Co prawda pojawiają się takie gry jak np. PlanetSide 2 gdzie rozwiązuję się takie problemy w inny sposób, idąc też trochę na kompromis. Zmniejszając lekko dokładność, a zwiększając zasięg, w którym dostajemy informację o innych graczach. Na dzisiaj to już koniec. Za dwa tygodnie kolejny artykuł, w którym poruszymy inne problemy w grach lub dowiemy się jakiś ciekawostek z tworzenia gier. Mam nadzieję że seria wam się spodoba, a w komentarzach możecie zadawać pytania dotyczące tych tematów. Postaram się wszystkie rozjaśnić w tej serii lub w odpowiedziach pod komentarzami.

Pod tym wpisem można się reklamować. Jeżeli uważasz, że stworzyłeś bardzo dobry film związany z tematem wpisu, wklej do niego link w komentarzu. Najlepsze filmy zostaną tutaj na zawsze. Zapraszamy do komentarzy. Czekamy na Wasze opinie. Do dyspozycji naszych czytelników oddajemy również forum dyskusyjne... serdecznie zapraszamy tam do rozbudowanych dyskusji i kooperacji spoleczności brodaczy!

Komentarze