Hallo Ich versuche, ein Echtzeit-Multiplayer-Spiel mit node.js und socket.io zu bauen.Wie teuer ist es, ein Echtzeit-Multiplayer-Spiel mit node.js/socket.io zu erstellen?
Nun, die Implementierung selbst in Bezug auf die Codierung wird nicht so sehr ein Problem sein, aber aus einem traditionellen http Anfrage-Antwort-Web-Programmiermodell, habe ich keine Ahnung, wie teuer das in Bezug auf Verkehr und Server wäre Belastung. Während eines Spiels sollte der Browser eines Spielers Echtzeit-Mauseingabeereignisse verfolgen und sie an alle anderen Spieler im selben Spiel weiterleiten.
Hier ist ein Beispiel, lassen Sie uns sagen, mein Avatar folgt um meinen Mauszeiger auf dem Bildschirm, und es sollte in Echtzeit zu den Spielern auf dem Bildschirm übertragen werden. Ich würde so etwas wie:
// client side
$(document).on("mousemove", function(event){
io.emit("coordinate", {x: event.pageX, y: event.pageY});
});
und auf dem Server:
// server side
io.sockets.on("connection", function(socket){
...
socket.on("coordinate", function(coordinate){
socket.get("username", function(err, username){
socket.broadcast.emit("move", {username: username, coordinate:coordinate});
});
});
...
});
ich denke, das sollte funktionieren, aber dies erfordert den Browser an den Server pro Sekunde mehrere Ereignisse zu emittieren, die sollte sie anschließend ausgestrahlt um die Spieler im selben Spiel zu ruhen, und ich bin besorgt über die Auswirkungen davon. Eine Sache ist jedoch, dass die Größe jedes Datenfragments, das übertragen wird, nicht so groß ist (im Grunde ist es nur eine x- und y-Koordinate). Wenn das zu teuer ist, egal wie groß das Spiel ist, glaube ich nicht, dass ich es versenden kann. Könnte mich jemand aufklären? Vielen Dank.
[EDIT] Um zu klären, ich frage nicht, wie diese Architektur effizienter zu machen. Ich möchte nur wissen, ob diese Art von System in Bezug auf Systemlast (und Wartungskosten) realistisch genug ist. Für gewöhnliche Web-Dienste kann ich die Kosten einfach abschätzen, indem ich Seitenzahlen betrachte, aber Websocket ist ein völlig neues Feld, das mir nicht bekannt ist von, also wollte ich fragen.
Danke für die Antwort, aber um zu klären, wollte ich nicht fragen, wie man das mehr macht effizient. Ich wollte wissen, wie viel Ladung diese Art von App genau haben wird - ob die Spezifikation machbar ist oder nicht. Danach kann ich darüber nachdenken, es effizienter zu machen. Aber für jetzt würde ich gerne eine Baseball-Figur wissen, wie viel Ladung diese Art von App erstellen wird. – Vlad