Flash Spiel Server Vorschläge (Node.js, Red5, etc)

9

Schnelle Zusammenfassung:

Wir haben ein abgeschlossenes Flash-Spiel ähnlich wie Tetris, das bereit ist, für Multiplayer "verlinkt" zu werden. Nach ein paar Nachforschungen und Fragen hier: Flash Sockets, Peer-to-Peer-Fähigkeiten , sind wir zu dem Schluss gekommen, dass P2P-Networking in der Art und Weise, wie xbox / ps3-Spiele mit Online-Spielen umgehen, nicht möglich ist ohne teure / zweifelhafte Adobe-Software / Dienste (FMS / Cirrus) auf der Flash-Plattform zu diesem Zeitpunkt. Grundsätzlich ist es einem Flash-Client nicht erlaubt, ein "Host" zu werden, der Sockets ohne das RTMFP-Protokoll überwacht.

Die Frage, die Vorschläge benötigt:

Mit dieser Zusammenfassung stellt sich die Frage, wie man die Netzwerkinfrastruktur für ein Spiel wie Tetris am besten implementieren kann, das eine ganze Menge kleiner I / O von Benutzer zu Benutzer hat (sagen wir, max 4 Spieler gleichzeitig). Da wir keinen einzelnen Player als Host-P2P-Stil zuweisen können, haben wir folgende Optionen:

1.) Fat Server mit Game Logic, Light Clients aktualisieren Anzeige / Interpolation basierend auf Server-Updates (Ala Quake)

2.) Light Server für die Kommunikation zwischen Fat Clients (Ala Concurrent Simulation wie RTS Spiele)

Das Problem ist, dass wir unerfahren sind, wenn es darum geht, Spiele zu vernetzen, und daher einen Hinweis auf das Für und Wider dieser Lösungen (oder sogar anderer Lösungen) wirklich lieben würden. Unser Tetris-Spiel ist nicht so trivial wie "angreifende Linien" zu senden, wenn ein Klient Zeilen löscht, die den anderen Spielern hinzugefügt werden, die gerade kämpfen. Wir brauchen ein bisschen mehr Echtzeit-Synchronisation als das. Zum Beispiel ist die Liste der nächsten Tetriminos eine einzige gemeinsame Quelle, wo jeder für wünschenswerte Stücke "kämpft".

Schließlich frage ich mich, ob jemand Erfahrung mit Node.js auf Spieleservern hat, abhängig von der gewählten Implementierung. Ich würde annehmen, wenn der Server ein leichter Server war, der nur Datenübertragungen zwischen Klienten handhabt, würde Knoten eine gute perfekte Passform sein. Wenn jedoch die Spiellogik auf dem node.js-Server platziert würde, würde ich annehmen, dass die blockierende Natur der Berechnungen den Node.js-Ansatz mit nur einem Thread für blockierungsfreie E / A überflüssig machen würde. Wie auch immer, jeder Rat zu diesem Thema wird sehr geschätzt.

    
DnisT 04.08.2011, 22:17
quelle

3 Antworten

3

Vollständige Offenlegung: Ich bin Mitbegründer der Gewerkschaftsplattform.

Wenn Sie schnell aufsetzen möchten, würde ich vorschlagen, ein bestehendes Multiuser-Server- und Client-Framework zu verwenden, wie es bereits vorgeschlagen wurde, oder eine union-Plattform (www.unionplatform.com, frei für 1000 gleichzeitige Verbindungen).

Menschen neigen dazu, die Menge an Infrastrukturarbeit zu unterschätzen, die erforderlich ist, um ein funktionsreiches Multiplayer-Spiel mit zuverlässigen Lobby-Systemen und Match-Making zu machen. Wenn Sie von Grund auf neu aufbauen, könnten Sie so viel Zeit mit Connection-Failover- und Reconnection-Code verbringen, wie mit der Kernspielphysik.

In einem Spiel wie Multiplayer-Tetris würde ich autoritatives Spiel / Weltlogik auf dem Server implementieren (in Kombination würde man ein Raummodul verwenden) und die serverseitige Simulation auf der Client-Seite spiegeln. Der Client zeigt die Ausgabe an, interpoliert die serverseitige Welt und stellt Spielereingaben bereit. Hier ist ein Beispiel für ein Multiplayer-Pong-Spiel, das diesen Ansatz verwendet:

Ссылка

Eine möglicherweise nützliche Funktion der Union für Ihre Situation ist die Unterstützung für Javascript Websocket zusätzlich zur traditionellen http-Kommunikation.

Ссылка

Die Javascript-Unterstützung gibt Ihnen die Möglichkeit, vollwertige Spielclients in html5 zu erstellen oder native Webbrowserclients für Anzeigestatistiken oder Spiele hinzuzufügen, die in Flash gespielt werden. Das Protokoll der Gewerkschaft wird auch öffentlich dokumentiert (http://www.unionplatform.com/?page_id=86), sodass Sie benutzerdefinierte Client-Funktionen in jeder Sprache erstellen können.

Hast du aus Neugier einen öffentlichen Link für dein Spiel?

Viel Spaß!

colin

    
colin moock 22.10.2011 03:53
quelle
1

Ich hatte Erfolg mit SmartFoxServer . Es ist kostenlos für unter 100 gleichzeitige Benutzer, aber wenn Sie mehr haben, müssen Sie eine Lizenz kaufen.

Trotzdem ist es einfach, die serverseitige Logik zu schreiben, und es ist einfach zu verwalten und zu implementieren.

    
thehiatus 06.09.2011 19:06
quelle
0

Ich habe Flash Media Server verwendet, um eine Reihe von Multi-User-Apps (einschließlich Spielen) zu entwickeln. Persönlich finde ich es zu teuer für das, was es für Sie tut.

Ich habe nie Red5 oder Node.js verwendet, aber die Socket-Verbindungen von Node.js klingen vielversprechend.

Ich habe auch einen einfachen nie endenden Sockel mit PHP gebaut, der auch funktioniert (aber nicht so gut, es ist ein bisschen nervös), ich wette, du könntest es tun finden Sie dazu mehr Informationen und vielleicht entwickeln Sie etwas selbst, da Sie nicht zu viele Daten zwischen den Benutzern übertragen müssen. Im Internet gibt es eine Reihe von Beispielen für die Verwendung von PHP Sockets mit * SWF * s wie diesem Chatroom-Beispiel auf kirupa.com

Viel Glück .

    
Jacksonkr 07.08.2011 19:05
quelle

Tags und Links