Vorladen von Meshes
Der letzte Aspekt, den wir im Hinblick auf die Performance betrachtet haben, war das Vorladen von Meshes und Texturen. Zuerst wurden alle Objekte mit Hilfe des THREE.JSONLoader an der Stelle in den Speicher geladen, wo sie gebraucht wurden. Dies führte dazu, dass gerade bei komplexeren Objekten deutliche Verzögerungen merkbar waren. Um dies zu umgehen, haben wir zu Anfang des Spiels alle Objekte, die während des Spiels gebraucht werden, in ein Array geladen und durch eine entsprechende Schnittstelle verfügbar gemacht. So waren die Objekte zu Spielzeit im Arbeitsspeicher bereitgestellt und konnten schnell an den Renderer übergeben werden. Hier war die Asynchronität von Javascript ein größeres Problem. Es wurde nämlich aus einer Liste von Dateipfaden für jeden Pfad ein eigener JSONLoader initialisiert und gestartet. Dies lief also nicht mehr sequenziell ab. Deshalb mussten wir also sicher gehen, dass gewartet wird, bis das letzte Element geladen wurde, oder einen Hinweis anzeigen, falls nach einer gewissen Zeit nicht alle Objekte geladen werden konnten. Erst dann darf das Startmenü auf dem Bildschirm erscheinen. Um das sicherzustellen, wird die Anzahl der erfolgreich geladenen Objekte gezählt und mit der erwarteten Anzahl verglichen.
Ein weiterer Ansatz war, die Objekte beim betreten des Levels schon in den Grafikspeicher laden. Dazu haben wir allerdings keine Informationen gefunden und konnten dies daher nicht implementieren.