Wie gehe ich mit Multiplayer in JavaScript um?


12

Ich recherchiere nur ein bisschen nach Technologien für ein mobiles Multiplayer-Spiel.

Derzeit ist es eher ein Experiment, daher müssen sich die Spieler im Moment nur der anderen Spieler bewusst sein.

Wenn dies eine typische Webanwendung und kein Spiel wäre, müssten immer nur HTTP-Anforderungen gesendet werden - aber da dies ein Spiel ist, werden Leistung und Genauigkeit ein Problem sein.

Da das Spiel auf mehrere Telefonplattformen abzielt, wird der Client beispielsweise in JavaScript oder einem auf JavaScript basierenden Framework geschrieben. Die Servertechnologie ist völlig offen.

Jeder Spieler muss das Äquivalent eines HTTP-Posts erstellen und nur ein schnelleres Protokoll verwenden. Der Grund dafür, dass Multiplayer webbasiert sind, liegt darin, dass Multiplayer über Bluetooth oder ein anderes lokales Netzwerk auf den verschiedenen Plattformen zu unterschiedlich sind und Probleme verursachen können.

Die Frage ist also, welches Protokoll / welche Technologie für den JavaScript-Mehrspielermodus geeignet ist. Irgendwelche Ratschläge auf der Serverseite oder spielt es eine Rolle? Gibt es einen Grund, warum ich diese zweistufige Architektur fallen lassen und eine direkte Telefon-zu-Telefon-Verbindung wählen sollte?

Antworten:


15

Sie möchten ein besseres Kommunikationsprotokoll als HTTP. Sie möchten wahrscheinlich UDP oder TCP. Browser haben keine Möglichkeit zur UDP-Kommunikation. Sie haben also nur die Wahl zwischen TCP.

Für TCP würden Sie ein WebSocket verwenden wollen , jedoch ist die Browserunterstützung auf Websockets instabil.

Dies bedeutet, dass Sie zum Emulieren von TCP eine COMET- Technik verwenden müssen. Eine beliebte Emulation wäre ein in eine Flash-Anwendung eingebettetes Websocket.

Socket.IO ist eine Bibliothek (für node.js ), die Websockets unterstützt und diese mit einem entsprechenden Fallback auf nicht kompatiblen Webbrowsern emuliert (sie verwendet Flash und andere COMET-Techniken).

Für Mehrspieler-JavaScript-Spiele würde ich die Verwendung von socket.io und node.js empfehlen


1
Hier ist ein Beispiel eines Echtzeitspiels, das mit HTML5 und WebSockets erstellt wurde: rawkets.com . Der Quellcode ist hier verfügbar: github.com/robhawkes/rawkets
Elisée

1
Hier sind zwei weitere Beispiele
Raynos 10.10.11

4

Sowohl die Frage als auch die akzeptierte Antwort wurden 2011 veröffentlicht und die Zeiten haben sich seitdem ziemlich geändert :)

Websockets sind weit verbreitet, aber eine noch bessere Technologie ist WebRTC, die unzuverlässige UDP-Streams zulässt. Diese sind viel, viel besser für Spiele.

Abgesehen von der Kommunikation sind beim Schreiben von Multiplayer-Spielen noch viele andere Hindernisse zu überwinden, wie z. B. Spielstatusabgleich, clientseitige Vorhersage, Serialisierung und viele andere.

<shameless self promotion>

Ich bin einer der ursprünglichen Entwickler von lance.gg , einem Multiplayer-Spieleserver / einer Multiplayer-Spielebibliothek basierend auf node.js, bei dem wir viele der genannten Probleme gelöst haben (und viele andere!). Unser Ziel ist es, JavasScript-Spielentwicklern die Entwicklung von Multiplayer-Spielen zu erleichtern. Ich lade Sie herzlich ein, es als Ausgangspunkt für Ihr Spiel zu verwenden.

</shameless self promotion>


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.