Das wundert mich etwas weil das Array nicht leer ist... komische Sache.
Darum verstehe ich nicht warum die Fehlermeldung erscheint.
Prüf dass noch einfach mal.
Gedacht habe ich das so das Dinge in der Welt nur auf dem Server gespeichert werden, nach dem "Object-Streaming" Prinzip.
Dinge im Spiel werden rein und raus gestreamt wenn diese nicht oder benötigt werden.
Der erste Schritt dafür ist die Physik der Objekte nach einer Ruhephase deaktiviert werden, um so die Performance zu verbessern. Also diese werden zu temporär Statischen Objekten und dabei sollen auch die Informationen entfernt werden, bis diese wieder gebraucht werden. Etwa wenn sich ein Spieler einem gewissen Bereich nähert.
Du redest einerseits von Server und Object Streaming, ja du hast nach dem Prinzip geschrieben. Ich verstehe deine Idee dabei aber:
Die Idee beim Object Streaming ist ja, teile vom Level nicht zu laden und nicht anzuzeigen. Erst wenn der Spieler dem Hotspot näher kommt, wird der entsprechende Levelpart geladen. Das Prinzip hast du denke ich verstanden und auch deine Gadankengang ist richtig und theoretisch hast du auch recht.
Du musst ja nicht das gesamte Level übertragen. Speichern und übertragen musst du ja nur was sich verändert hat. Was bedeutet du kannst die meisten Informationen lokal speichern. Darum würde ich jetzt nicht von Object Streaming in Bezug des Multiplayers sprechen.
Hier mal die grobe Reihenfolge:
Clint -> Server -> Clint-> CPU -> GPU -> Bildschirm
Gerade beim Gamen, ist es doch wichtig das der Weg von CPU zum Bildschirm kurz ist. Man möchte hierbei möglichst wenig Drawcalls haben.
Wenn nun aber noch der part vom Clint durchs Internet zum Clint dazukommt und erst dann die CPU beginnen kann den Job an die Grafikkarte zu übergeben, erreichst du vermutlich genau das Gegenteil von performant.
Bedenke auch: Das Streaming, basiert darauf Levelparts in den Speicher, aus dem Speicher zu laden und das Level anzuzeigen oder auch nicht anzuzeigen. Klar spart es performance wenns dieser Step optimiert ist.
Du hast aber auch das diverse Culling verfahren zu Hand, so kann das Levelstreaming das Level zwar Laden und möchte es anzeigen aber das Camera occlusion Culling, unterdrückt die anzeige, weil sich das Level nicht im Frustum befindet. (Frustum ist der Sichtbereich des Players)
Was mich an deiner Aussage stuzig macht, ist dass du geschrieben hast: "bis diese wieder gebraucht werden."
Ich verstehe das so:
Clint braucht etwas, Clint frägt den Server, Server hat diese Information nicht und fragt den anderen Player (Der andere Clint) anderer Clint überträgt diese Informationen an den Server, der Server überträgt diese Informationen an die CPU des Players, die CPU überträgt die Informationen an die GPU, die GPU zeichnen dass auf den Monitor.
Ich habs oben schonmal gefragt: Was passiert wenn das Internet abbricht während Clint #1 auf Antwort vom Clint#2 wartet?
Die Speicherstände zwischen Clint #1 und Clint#2 wären dann nicht mehr synchron.