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)?

BlueRaja - Danny Pflughoeft
źródło
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.

DeadMG
źródł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.

Tinco
źródło
1
gamedev.stackexchange.com/questions/3887/… Oto kilka informacji :)
michael.bartnett
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