Ich baue ein Massively Multiplayer-Spiel mit Node.js und Socket.io. Alle Spieler werden sich auf derselben unendlichen Karte bewegen (denke Minecraft). Wenn der Spieler sich bewegt, lade ich die für ihn sichtbaren Steine. Wenn Spieler ihre Bewegung bewegen, sollten sie an alle Spieler gesendet werden, die sie sehen können.Verwalten von Sockets in einem Multiplayer Socket.io Spiel
Meine Frage ist; Wie sollte ich meine Sockets strukturieren? Einen Sockel für alle Spieler zu haben scheint nicht skalierbar zu sein. Ich könnte die Welt in Stücke zerbrechen, aber ich bin nicht sicher, wie man die Chunk-Grenzen verwaltet. Da die meisten Spieler die meiste Zeit nicht in der Lage sein werden, sich gegenseitig zu sehen, würde ich es bevorzugen, dass der Sockel jedes Spielers nur Updates erhält, die für sie relevant sind.
Ich habe gelesen, dass Socket.io ein Konzept von "Räumen" hat, die nur Sockets sind, die die gleichen Nachrichten erhalten. Wäre es möglich, einen separaten Raum für jeden verbundenen Spieler zu haben, zu dem ich den Sockel eines anderen Spielers hinzufügen würde, der sich in der Nähe bewegt? Dann konnte ich jedes Mal, wenn der Spieler sich bewegte, eine Nachricht an diesen Raum senden. Wie könnte ich es dann schaffen, wenn Zuschauer den Raum verlassen oder sich ihm anschließen?
Offensichtlich ist dies eine vage Frage, aber ich suche nur nach Best-Practice-Tipps. Links zu Artikeln zu diesem Thema wären willkommen.
Haben Sie darüber nachgedacht, [Quadtrees] (http://en.wikipedia.org/wiki/Quadtree) zu verwenden, um nach dem Standort des Spielers zu suchen? Ein guter Ausgangspunkt für die Suche nach einer Lösung wäre die [BrowserQuest-Quelle] (https://github.com/mozilla/BrowserQuest). – hughsk