Hinzufügen von Multiplayer zu einem HTML5-Spiel [geschlossen]

15

Ich bin daran interessiert, ein Spiel zu entwickeln, für das ich derzeit eine Koop-Erfahrung habe. Ich bin jedoch gespannt, wie dies am besten in HTML5 implementiert werden kann.

Ich habe Spiele gemacht, bevor ich gerade C-Sockets und auch mit der Net-Bibliothek für SDL verwendet habe.

Was sind einige meiner besten Optionen, um dies in einer Canvas-basierten Umgebung zu tun?

Gegenwärtig kann ich mir nur AJAX / Datenbank-Lösungen (mit einer hohen Aktualisierungsrate) ausdenken oder einen PHP-Server implementieren, der die Daten über Sockets überträgt.


Das gesamte Gameplay wäre ein 2,5D-Plattformspiel, sodass beide Clients ständig mit Spielerpositionen, Feindpositionen, Projektilen, Umgebungsdaten usw. aktualisiert werden müssten.

dich
quelle
1
Wenn websockets ( en.wikipedia.org/wiki/WebSockets ) fertiggestellt (und implementiert usw.) sind, ist dies wahrscheinlich ein guter Weg, bis dahin denke ich, dass AJAX (ohne das X, kein XML dafür erforderlich) wahrscheinlich der beste Weg ist (Immer noch kein sehr guter Weg, nehme ich an).
Elva,
Scheint, dass die Unterstützung für Web-Sockets schnell
sinkt
Willst du ein Stand oder ein Spiel machen? Wenn du ein Spiel machen willst; Mach dir keine Mühe für HTML5.
@ Stefan: warum nicht beide? Nur weil es noch nicht finalisiert ist, heißt das noch lange nicht, dass ich nicht damit arbeiten kann!
the_e

Antworten:

12

Socket.IO bietet ein System, das auf mehreren anderen Ebenen (einschließlich Websockets, Flash- und Kometentechniken) mit einer angemessenen Auswahl aufgebaut ist.

Node.js ist eine Option, um es serverseitig auszuführen.

Vincent Scheib
quelle
5

Siehe diese Antwort :

Sie können jedoch Flash verwenden, sofern verfügbar, um Ihrem Skript einen Fallback zu ermöglichen, bis WebSocket allgemein verfügbar ist. Gimites Web-Socket-Js ist ein kostenloses Beispiel dafür. Sie unterliegen jedoch den gleichen Einschränkungen wie Flash Sockets, dh, Ihr Server muss auf Anfrage eine domänenübergreifende Richtlinie an den Socket-Port ausgeben können, und Sie haben häufig Probleme mit Proxys / Firewalls. (Flash-Sockets werden direkt hergestellt; für jemanden ohne direkten öffentlichen IP-Zugriff, der nur über einen HTTP-Proxy aus dem Netzwerk aussteigen kann, funktionieren sie nicht.)

Ricket
quelle
3

Comet “ ist wahrscheinlich ein Überbegriff, den Sie hier verwenden könnten. WebSockets werden jedoch eine wünschenswertere Option sein (wenn sie froh sind, dass es sicher ist).

casr
quelle
3

Node.js ist die Antwort. Ich habe damit ein Echtzeit-Multiplayer-Shooter-Spiel entwickelt, und es dauerte ungefähr einen Monat, bis es fertig war. Es stellte einige einzigartige Herausforderungen dar, so dass es eine minimale Latenz haben musste und alle Spieler innerhalb eines anderen synchron bleiben mussten, damit das Konzept funktionierte.

Die Clientseite und die Serverseite sind beide in Javascript geschrieben und teilen Klassen / Logik untereinander. Das beginnt zu zählen, wenn Sie versuchen, Fehler zu beheben, da Sie nicht alles zweimal implementieren müssen.

Das Spiel ist seit ungefähr 2 Monaten ohne Neustart aktiv und es wurden Tausende von Matches gespielt.

Socket.io ist eine Implementierung von Sockets und verwendet node.js, ist jedoch an dieser Stelle für ein Spiel zu aufgebläht. Auf github gibt es noch andere Websocket-Implementierungen für node.js und auch Beispiele für Spiele, die es verwenden.

einTagwirdnunmachen
quelle
2

Sie könnten immer nur AJAX und eine Art Nachrichtenwarteschlange verwenden. ActiveMQ ist ein gutes Beispiel. Wenn Sie ActiveMQ auf dem Server ausführen, kann Ihr JavaScript Nachrichten senden und empfangen. Legen Sie einfach fest, dass jeder Spieler einen eindeutigen Namen hat, und senden Sie Nachrichten an den anderen Spieler.

Brendan Long
quelle
2

Sie könnten versuchen, http://easywebsocket.org/ zu verwenden , es ist einfach zu implementieren und es ist eine serverlose Lösung, die auf websocket basiert :)

Pierre-Loic Doulcet
quelle
2

Wir haben an einer Multiplayer-Plattform gearbeitet, die Sie vielleicht interessieren könnte. Sie können unser Projekt unter www.16cubes.com sehen - wir stellen eine einfache Javascript-Ebene zur Verfügung, um Peer-to-Peer-Kommunikation zu ermöglichen. Es basiert in gewisser Weise auf dem Comet-Prinzip, und wir haben vor, auf die Verwendung von Websockets umzusteigen, da diese etwas standardisierter werden. Auf der anderen Seite bieten wir einige Funktionen von der Stange an, wie automatische Gegnerabstimmung, Spiel-Chat, Facebook-Freunde mit einem Klick-Einladung usw.

Wir haben ein Demo-Tic-Tac-Toe, Sie können sich wahrscheinlich eine bessere Vorstellung machen, wenn Sie es sehen. Und ja, Sie können auch anonym spielen. Keine Anmeldung erforderlich, wenn Sie nicht möchten. Es gibt weniger als 10 Javascript-APIs, für die Sie Code benötigen, und die sind unter www.16cubes.com/documentation verfügbar

Wir sind aktiv auf der Suche nach Rückmeldungen. Lassen Sie uns also sowohl gute als auch schlechte wissen


quelle