Sollte der Spielehost die Autorität oder ein anderer dummer Client sein?

15

Wenn ich ein vernetztes Multiplayer-Spiel entwerfe, bei dem sich ein Spieler und andere Spieler verbinden, gibt es zwei Strategien, die mir bekannt sind:

  • Lassen Sie das Spiel des Host-Spielers die Autorität sein , wobei alle anderen Spieler als Dummköpfe versuchen, den aktuellen Spielstatus einzuholen. Im Code muss es viele Sonderfälle geben, je nachdem, ob der aktuelle Spieler der Host ist oder nicht.
  • Machen Sie den Host zu einem dummen Client wie alle anderen, indem Sie einen versteckten dedizierten Server auf einem anderen Thread ausführen. Der dedizierte Server ist die Autorität, und der Host stellt wie alle anderen eine Verbindung her (über localhost).

Was sind die Vor- und Nachteile dieser beiden? Welches wird am häufigsten verwendet (oder variiert es je nach Spieltyp / -größe)?

BlueRaja - Danny Pflughoeft
quelle
Der erste Fall, den Sie beschreiben, kann eine Form des P2P-Netzwerks (mit einem autorisierenden Client) sein und ist in der Regel viel komplexer und schwieriger zu implementieren und zu warten.
Altar

Antworten:

13

Der Dumb-Client-Ansatz ist aus rein konstruktiver Sicht am besten geeignet. Er schränkt die Menge an unterschiedlichem Code, den Sie zwischen Host und Clients benötigen, stark ein und ermöglicht die asynchrone Ausführung des Servers. Der Nachteil ist, dass der Rechner des Hosts zusätzliche Ressourcen benötigt - aber ich denke, das hat er immer getan.

DeadMG
quelle
8

Zwischen diesen beiden Optionen ist der Dumb-Client-Ansatz aus den Gründen, die DeadMG erwähnt, mit Sicherheit am besten geeignet.

Es gibt eine weitere Option, die jeden Client zur Autorität macht. Sie hat den Vorteil, dass alle Peers denselben Code verwenden. Der andere Vorteil ist, dass es viel fairer sein kann, wenn Sie die richtigen Regeln festlegen, da niemand den Vorteil hat, dass die Verzögerung zum Server 0 beträgt.

Dies kann natürlich je nach Spieltyp ziemlich schwierig zu implementieren sein. Ihr Protokoll muss sich mit der Lösung von Konflikten zwischen Peers befassen, wahrscheinlich unter Verwendung eines Eigentumsschemas. Lassen Sie nur die Konflikte, in denen 2 Peers den Besitz des gleichen Spielobjekts beanspruchen.

Wenn Sie Peer-2-Peer-Multiplayer-Protokolle googeln, erhalten Sie möglicherweise weitere Informationen zu diesem Ansatz.

Tinco
quelle
1
gamedev.stackexchange.com/questions/3887/… Hier noch ein paar Infos :)
michael.bartnett
Interessant. Dieser Beitrag behauptet, dass "die meisten Strategietitel" auf diese Weise das Networking implementieren. Ist das wirklich wahr? Ist das wie zB. Command and Conquer und Starcraft funktionieren?
BlueRaja - Danny Pflughoeft
@BlueRaja, so funktioniert Starcraft, ja. In Starcraft gibt es überhaupt keine Autorität. Warcraft III und Starcraft II verfügen über ein zentraleres Modell für den Nachrichtenaustausch, Verzögerungen und Verbindungsabbrüche, sind jedoch im Wesentlichen gleich, da jeder Client seinen eigenen Spielstatus hostet.
Rotsor
Der andere Vorteil dieses Netzwerkmodells besteht darin, dass es die Unterstützung eines großen, konsistenten, gemeinsam genutzten Weltzustands bei minimalem Synchronisationsverkehr ermöglicht.
Rotsor
Der größte Nachteil dieses Modells ist seine inhärente Anfälligkeit für "Maphacking", das einige Spielzustandsdaten preisgibt, die der Spieler normalerweise nicht sehen kann.
Rotsor