Mój silnik gry składa się teraz z działającej części dla jednego gracza. Zaczynam teraz myśleć o tym, jak zrobić część dla wielu graczy.
Przekonałem się, że wiele gier w rzeczywistości nie ma prawdziwego trybu dla jednego gracza, ale grając samemu, faktycznie hostujesz również lokalny serwer i prawie wszystko działa tak, jakbyś był w trybie dla wielu graczy (z wyjątkiem tego, że można przesyłać pakiety danych na alternatywnej trasie dla lepszej wydajności)
Mój silnik wymagałby znacznej refaktoryzacji, aby dostosować się do tego modelu. Istnieją trzy możliwe tryby: dedykowany klient, dedykowany serwer i klient-serwer (tryb nasłuchiwania)
- Jak często model nasłuchiwania jest używany w branży gier?
- Jakie są (nie) zalety tego?
- Jakie inne opcje mam?
multiplayer
server
Vaillancourt
źródło
źródło
Odpowiedzi:
Zobaczę, czy mogę odpowiedzieć na to najlepiej, jak potrafię:
Jeśli chodzi o większość gier online, przekonasz się, że znaczna większość gier korzysta z architektury klient-serwer, choć nie zawsze tak, jak myślisz. Weźmy na przykład dowolną grę źródłową. Większość korzysta ze standardowego serwera klient z architekturą serwera głównego (aby wyświetlić listę dostępnych gier), w tym jedna osoba będzie hostować serwer dedykowany, a każda osoba z klientem może do niego dołączyć.
Masz jednak kilka gier i usług, na przykład Left 4 Dead, League of Legends i niektóre gry XBox Live, które mają nieco inne podejście. Wszystkie one wykorzystują architekturę klient-serwer z serwerem sterującym. Główną ideą jest to, że ktoś tworzy serwer dedykowany, który nie „uruchamia” żadnej gry. Serwer kontrolny utworzy swego rodzaju „lobby”, a gdy gra zostanie uruchomiona, serwer kontrolny doda je do kolejki, a gdy przyjdzie kolej na lobby, wybierze pasujący serwer dedykowany (pod względem lokalizacji / szybkość, dostępność, wiele czynników) i przypisz graczy do tego serwera. Tylko wtedy serwer faktycznie „uruchomi” grę. To ten sam pomysł, ale trochę uproszczony, ponieważ klient nie musi „wybierać” serwera,
Oczywiście największym modelem klient-serwer jest model MMO, w którym jeden lub wiele serwerów działa w trwałym świecie, który obsługuje prawie wszystkie dane i logikę. Niektóre z bardziej znanych gier wykorzystujących ten model to World of Warcraft, Everquest, cokolwiek podobnego.
Gdzie zatem mieści się serwer nasłuchujący? Szczerze mówiąc, niezbyt dobrze, jednak nadal wiele gier z niego korzysta. Na przykład większość gier Source pozwala na tworzenie serwerów nasłuchujących, a wiele gier XBox Live tak robi (minęło trochę czasu, ale sądzę, że tak było w Counter Strike, a także Quake 4 i wielu innych). Zasadniczo jednak wydaje się, że są one źle oceniane ze względu na zalety modelu klient-serwer, co prowadzi nas do następnego punktu.
Przede wszystkim: wydajność. W modelu klient-serwer klient będzie obsługiwał lokalne zmiany (takie jak wejście, grafika, dźwięki itp.) W każdym cyklu gry. Pod koniec cyklu zapakuje odpowiednie dane (takie jak: czy gracz się poruszył? Jeśli tak, gdzie to jest? Gdzie on / on szuka teraz? Prędkość? Czy strzelali? Jeśli tak, informacje na temat kuli. Itd) i wyślij to do serwera w celu przetworzenia. Serwer weźmie te dane i określi, czy wszystko jest poprawne, np. Czy użytkownik porusza się w sposób wskazujący na włamanie (więcej o tym później), czy ruch jest ważny (czy coś w tym przeszkadza?), Czy kula od gracza 1 trafiony gracz 2 ?, i więcej. Następnie serwer pakuje to i wysyła do klientów, którzy następnie aktualizują wszystko, co konieczne, na przykład dostosowując zdrowie, jeśli gracz został postrzelony, kopiąc gracza, jeśli zostanie ustalone, że hakują itp.
Serwer nasłuchiwania musi jednak poradzić sobie z tym wszystkim w tym samym czasie. Ponieważ zakładam, że znasz się na programowaniu, prawdopodobnie zdajesz sobie sprawę, ile mocy gra może obrabować z komputera, zwłaszcza źle zaprojektowanego. Dodając przetwarzanie sieciowe, przetwarzanie zabezpieczeń i inne, a także grę klienta, możesz zobaczyć, gdzie wydajność miałaby poważny wpływ, przynajmniej jeśli chodzi o standardowe przetwarzanie. Ponadto większość serwerów działa w szybkich sieciach i są serwerami zaprojektowanymi do wytrzymywania ruchu sieciowego. Jeśli sieć serwera nasłuchującego jest wolna, ucierpi cała gra.
Drugim zabezpieczeniem , jak wspomniano wcześniej, jedną z głównych rzeczy, które zrobi serwer, jest ustalenie, czy gracz wykorzystuje grę. Być może widziałeś je jako Punkbuster, VAC itp. Istnieje bardzo skomplikowany zestaw reguł, które uruchamiają te programy, na przykład określając różnicę między hakerem, a po prostu bardzo dobrym graczem. Byłoby bardzo źle dla twojej gry, gdybyś nie był w stanie złapać hakerów, ale nawet gorzej, gdybyś wykonał akcję przeciwko fałszywie oskarżonemu.
Serwer nasłuchiwania na ogół nie będzie w stanie obsłużyć gry klienta, przetwarzania serwera i wykrywania włamań, aw większości przypadków detektory takie jak Punkbuster są bardzo trudne, jeśli nie niemożliwe, do uruchomienia na serwerze nasłuchiwania, ponieważ jest to trudne do prawidłowego funkcjonowania bez niezbędnej mocy przetwarzania, ponieważ ogólnie logika gry ma priorytet nad bezpieczeństwem, a jeśli wykrywacz nie może przetwarzać jednej klatki, może utracić dane potrzebne do skazania kogoś.
Wreszcie, rozgrywka . Najważniejsze w serwerach jest to, że są trwałe, co oznacza, że nawet jeśli wszyscy odejdą, serwer będzie nadal działał. Jest to przydatne, jeśli masz popularny serwer, który nie ma dużej aktywności w nocy, ludzie nadal mogą dołączyć, gdy są gotowi do gry i nie muszą czekać, aż zostanie przywrócony online.
W serwerze nasłuchu główną wadą jest to, że jak tylko klient hostujący serwer nasłuchiwania odejdzie, gra musi zostać przeniesiona do innego gracza (tworząc w grze lul, który w niektórych przypadkach może trwać kilka minut), lub musi się całkowicie zakończyć . Nie jest to preferowane na dużym serwerze, ponieważ host musi albo pozostać w trybie online (marnując miejsce na serwerze i jego / jej moc komputera, co może również spowolnić grę), albo zakończyć grę dla wszystkich.
Jednak pomimo tych problemów serwery nasłuchiwania mają kilka zalet.
Łatwy w konfiguracji : większość serwerów nasłuchujących to tylko wejście do „nowej gry” i umożliwienie ludziom dołączenia. Jest to łatwe dla osób, które chcą po prostu grać z przyjaciółmi i nie chcą próbować znaleźć pustego serwera dedykowanego lub bawić się z innymi ludźmi.
Dobry do testowania : Jeśli posiadasz serwer dedykowany i chcesz zmienić jego konfigurację, ogólnie lepiej jest przetestowaćnajpierw konfiguracja. Użytkownik musiałby albo utworzyć kopię zapasową serwera dedykowanego i przejść na ślepo do zmian, z jedyną opcją jest wycofać się, jeśli coś pójdzie nie tak, utworzyć nowy serwer dedykowany do przetestowania go, lub po prostu utworzyć prosty serwer nasłuchujący, aby przetestuj je. W punkcie 1 są one zazwyczaj łatwiejsze do uruchomienia i konfiguracji. Jest to szczególnie prawdziwe, ponieważ większość serwerów dedykowanych nie ma bezpośredniego dostępu administratorów (większość serwerów dedykowanych jest wynajmowanych ze zdalnej lokalizacji). Przesunięcie zmian konfiguracji, a także poleceń ponownego uruchomienia itp. Do zdalnej lokalizacji zajmuje znacznie więcej czasu niż komputer, na którym aktualnie znajduje się administrator.
Mniej zasobów : na większości serwerów dedykowanych użytkownik o tym samym adresie IP nie może połączyć się z serwerem dedykowanym (co oznacza, że klient musi albo hostować serwer, albo grać, nie może wykonywać obu tych czynności). Jeśli klient chce grać na swoim własnym serwerze, zwykle potrzebuje drugiej maszyny do hostowania serwera, albo kupuje lub wynajmuje serwer dedykowany, aby mógł na nim grać. Serwer nasłuchiwania wymaga tylko jednego komputera, co może być jedyną rzeczą, z której może korzystać klient.
W obu przypadkach oba mają zalety i wady i musisz je zważyć z tym, co chcesz zaprojektować i wdrożyć. Z mojego doświadczenia wierzę, że gdybyś wdrożył serwer nasłuchiwania, przydałby się on, gdyby nie nic innego jak kilku użytkowników pragnących bawić się z przyjaciółmi lub testować ustawienia.
W końcu:
To przemysłowa puszka robaków. W rzeczywistości do gier wideo można zastosować dowolny rodzaj architektury sieci. Jednak z tego, co widziałem, jak większość komunikacji internetowej, większość sprowadza się do jakiejś formy modelu klient-serwer.
Daj mi znać, jeśli nie odpowiem na twoje pytanie lub potrzebujesz czegoś rozszerzonego, a zobaczę, co mogę zrobić.
źródło