node.js Echtzeit-Spiel

8

Ist es möglich, ein Echtzeitspiel mit node.js zu erstellen, das zuckende Reflexe benötigt? Wie hoch ist die Latenz? Wie niedrig kann es realistisch gehen?

    
Mark 28.04.2010, 00:39
quelle

3 Antworten

6

HTTP-Server sind normalerweise für Durchsatz / Bandbreite gegenüber Latenz optimiert. node.js ist wahrscheinlich keine Ausnahme, und HTTP ist aufgrund der Struktur des Protokolls sowieso für niedrige Latenz schlecht.

Ein informeller Benchmark mit node.js unterstützt dies und zeigt Latenzen von Hunderten von Millisekunden. Im Vergleich dazu unterstützen die meisten Twitch-Spiele Latenzen von nicht mehr als 30 oder 40 ms, idealerweise weniger.

Daher würde ich empfehlen, den Twitch-Aspekt zu entfernen, wenn Sie HTTP nicht löschen können.

    
Kylotan 29.04.2010, 13:49
quelle
14

Es ist möglich, ein Echtzeitspiel in node.js zu erstellen, wie Sie es mit jeder anderen Sprache / jedem anderen Framework tun können.

Das Problem hier wäre, welche Art von Server und Client Sie verwenden würden.
Die Verwendung der Funktion Ссылка für ein solches Spiel wäre eine schlechte Idee und sehr schwierig, aber Sie könnten das TCP-Server (jetzt net Server genannt) wie in jeder anderen Sprache.

Der Client befindet sich auf einer Plattform, auf der Sie Sockets wie Flash, Java-Applets oder Desktop-Software verwenden können.

Bitte beachten Sie, dass Sie selbst bei Verwendung eines TCP-Socket-Servers Probleme mit der Latenz für ein Twitch-Spiel haben können, aber dies liegt außerhalb des Bereichs, der mit dieser Frage zusammenhängt und mehr über Spiele und Networking .

PS : Sie könnten Web-Sockets verwenden, da sie theoretisch wie TCP-Sockets funktionieren sollten, aber es gibt noch keine gute Unterstützung für sie in den aktuellen modernen Browsern.

BEARBEITEN :

Es scheint, dass ich mich nicht richtig erklärt habe, Sie können ein Browser-zugängliches Spiel wie Sie gesagt haben, Sie müssen nur ein Protokoll verwenden, mit dem Sie schnell Daten zurück und senden können in Echtzeit .

Wenn Sie ein "reines" Browsergame ohne Plugins von Drittanbietern möchten, verwenden Sie nur JavaScript mit websockets , die von den gängigen Browsern noch nicht gut unterstützt werden. (Sie könnten eine Flash-Bridge verwenden und trotzdem Ihr Spiel in JavaScript haben.)

Mit einem Drittanbieter-Plugin haben Sie Flash und Java (neben den zahlreichen weniger bekannten Plugins wie Einheit usw.). Beide haben TCP-Sockets (nicht sicher über UDP) und können (mit einigen Sicherheitseinschränkungen) eine Verbindung zu einem node.js-Net-Server herstellen. Die meisten Leute würden sagen, dass du mit Flash gehst, da es eine größere Unterstützung gibt, aber Apple mag es nicht, also kein Flash in iPhone / iPad / iPod Touch oder auf verschiedenen anderen Mobilgeräten (die stattdessen Java unterstützen).

Also ja ... viel Glück damit.

EDIT 2:

Websocket-Unterstützung in Browsern ist jetzt ziemlich anständig, also empfehle ich es für Echtzeit-Spiele, wenn Sie den Browser als Client verwenden möchten.

    
Diogo Gomes 28.04.2010 09:54
quelle
4

Es ist möglich, aber es hängt davon ab, wie viel Daten zwischen Server und Client übertragen werden müssen und wie schnell (von Latenz gesprochen). Schauen Sie sich zum Beispiel Sousaball von Creationix an.

Wenn Sie WebSockets verwenden möchten, sehen Sie sich auch die Socket.IO -Bibliothek von learnboost an. Es benutzt WebSockets wenn verfügbar und greift in anderen Fällen auf den Kometen zurück.

    
Kuroki Kaze 28.04.2010 12:56
quelle

Tags und Links