Node.js: Alternative zu setInterval, die für die Spielschleife präziser ist

8

Mein Setup ist ein Multiplayer-Spiel mit Sockets für asynchrone Übertragungsdaten.

Jetzt wegen der Natur eines Spiels, habe ich eine Spielschleife, die alle 500ms ankreuzen sollte, um Spieleraktualisierung (z. B. Position, Aussehen, ...) zu machen.

%Vor%

Ich benutze momentan setInterval , aber wenn ich einige Benchmarks mit ungefähr 200 Verbindungen gemacht habe, ist setInterval auf 1000ms anstelle von 500ms abgefeiert, was das ganze Spiel verzögert erscheinen lässt. Auch ist es leider nicht genau genug mit einer kleinen Anzahl von Spielern. (Beachten Sie, dass die Aktualisierungsaufrufe maximal etwa 100ms dauern)

Nach meiner Recherche scheint mir dann keine andere Möglichkeit zu bestehen, einen Prozess zu erzeugen, der nur den Timing-Mechanismus behandelt? Oder gibt es andere Möglichkeiten?

Hat jemand das schon mal gemacht oder kann er einige grundlegende Ideen / Lösungen dazu geben?

Vollständiger Code:

%Vor%     
Captain Obvious 15.09.2015, 13:55
quelle

2 Antworten

2

Hier ist ein Artikel zum Erstellen einer genauen node.js-Spielschleife mit einer Kombination aus setTimeout() und setImmediate , so dass die Dinge genau sind, aber nicht verwendet werden zu viel CPU.

Die nanoTimer-Timing-Bibliothek funktioniert möglicherweise für Sie. Aus der Readme-Datei klingt es, als ob es einen ähnlichen Ansatz verwendet. Ich weiß nicht, ob es mit Spielen entworfen wurde, aber es sollte einen Versuch wert sein!

    
Sly_cardinal 15.09.2015 14:35
quelle
1

Obwohl ich nicht mit Spielen arbeite, gibt es eine bessere Alternative als setInterval, wie gezeigt hier . Es funktionierte gut für mich in einer Geschäftsanwendung. Ich hoffe, das hilft.

    
arnold 15.09.2015 14:12
quelle