Czy gospodarzem gry powinien być władza, czy inny głupi klient?


15

Projektując grę sieciową dla wielu graczy, w której jeden gracz hostuje, a inni się łączą, istnieją dwie strategie:

  • Niech gra gospodarza-gracza będzie autorytetem , a wszyscy inni gracze jako głupi klienci będą próbowali nadrobić obecny stan gry. W kodzie będzie musiało być wiele specjalnych przypadków, w zależności od tego, czy bieżący gracz jest gospodarzem, czy nie.
  • Uczyń hosta głupim klientem, jak wszyscy inni, uruchamiając ukryty dedykowany serwer w innym wątku. Serwer dedykowany będzie autorytetem, a host połączy się z nim jak wszyscy inni (przez localhost).

Jakie są zalety / wady każdego z nich? Który jest najczęściej używany (czy różni się w zależności od rodzaju / wielkości gry)?


Pierwszym opisywanym przypadkiem może być jedna forma sieci P2P (z jednym wiarygodnym klientem) i jej zwykle znacznie bardziej złożona i trudniejsza do wdrożenia i utrzymania.
— akaltar

Odpowiedzi:


13

Podejście „głupi klient” jest najlepsze z czysto projektowego punktu widzenia - mocno ogranicza ilość różnych kodów potrzebnych między hostem a klientami i pozwala serwerowi działać asynchronicznie. Minusem jest to, że maszyna hosta wymaga dodatkowych zasobów - ale myślę, że zawsze tak było.


8

Pomiędzy tymi dwiema opcjami podejście głupiego klienta jest z pewnością najlepsze z powodów, o których wspomina DeadMG.

Istnieje inna opcja, która sprawia, że ​​każdy klient staje się autorytetem, ma tę zaletę, że głupi klient, że wszyscy uczestnicy współużytkują ten sam kod. Inną zaletą jest to, że może być o wiele bardziej sprawiedliwe, jeśli ustawisz właściwe reguły, ponieważ nikt nie ma przewagi 0-lag-to-server.

Może to być dość trudne do wdrożenia w zależności od rodzaju gry. Twój protokół będzie musiał radzić sobie z rozwiązywaniem konfliktów między rówieśnikami, prawdopodobnie przy użyciu pewnego rodzaju schematu własności. Pozostawiając tylko konflikty, w których 2 peerów rości sobie prawo własności do tego samego obiektu gry.

Protokoły wieloosobowe Google Peer-2-Peer mogą dać ci więcej szczegółów na temat tego podejścia.



Ciekawy. Ten post twierdzi, że w ten sposób „większość tytułów strategicznych” wdraża tworzenie sieci. Czy to naprawdę prawda? Czy tak np.Command and Conquer i Starcraft działają?
— BlueRaja - Danny Pflughoeft

@BlueRaja, tak działa Starcraft, tak. W Starcraft nie ma żadnej władzy. Warcraft III i Starcraft II mają bardziej scentralizowany model wymiany komunikatów, obsługę opóźnień i rozłączeń, ale zasadniczo taki sam, ponieważ każdy klient ma swój własny stan gry.
— Rotsor

Inną zaletą tego modelu sieciowego jest to, że pozwala on obsługiwać duży spójny stan wspólnego świata przy minimalnym ruchu synchronizacyjnym.
— Rotsor

Największą wadą tego modelu jest nieodłączna podatność na „maphacking”, czyli ujawnianie niektórych danych o stanie gry, których gracz normalnie nie widzi.
— Rotsor
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.