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)?
game-design
networking
multiplayer
BlueRaja - Danny Pflughoeft
quelle
quelle
Antworten:
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.
quelle
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.
quelle