Ist es sinnvoll immer wieder neue Szenen in Unity zu erstellen?
Hallo, ich habe in Unity ein Projekt (3D) vor einigen Monaten gestartet. In diesem Projekt bzw. Spiel geht es darum, Planeten bzw. die Atmosphäre der Planeten, einschließlich Exoplaneten zu erkunden, die so realistisch wie möglich versucht werden dar zu stellen. Ich arbeite an dem Projekt alleine. Nun möchte ich mit dem Arbeiten an den Planeten bzw. Terrains beginnen und habe vor für jeden einzelnen Planeten (die Planeten bestehen nur aus Terrains) eine neue Szene zu machen. Also beispielsweise, ich habe 200 neue Szenen gemacht und in jeder Szene sind die Unterschiedlichen Terrains, die die Atmosphäre der Planeten darstellen soll, die man erkundet. Also 200 Szenen für 200 Planeten. Aber ist das die schlauste oder beste Herangehensweise? Ich meine, für jedes Terrain eine neue Szene zu erstellen sodass es irgendwann nicht mehr übersichtlich ist, ist doch nicht die beste Methode, oder? Ich habe jedoch keine Ahnung, wie ich es viel einfacher machen könnte und bei einem Update nicht jede Szene überschreiben müsste, wie Dynamische Generierung oder so. Ich bin noch relativ neu in Unity. Fazit: Ich möchte nicht unendlich viele Szenen erstellen müssen, sondern eine übersichtlichere Methode finden, um Terrains in Unity zu machen und nicht pro Terrain eine komplett neue Szene machen zu müssen. Wie Dynamische Generierung oder Scene Management, habe aber keine Ahnung wie das funktioniert. Kennt jemand eine übersichtlichere, leichtere oder Schlauere Methode? Wenn ja, würde es mir sehr weiter helfen. Danke für alle Antworten.
1 Antwort
Ich denke, eine Entscheidung ist sowohl an technische Faktoren gebunden, als auch an Teile des Spielkonzepts.
Wenn du beispielsweise je Planet eine eigene Szene hast, muss die auch irgendwann geladen werden. Das heißt, du solltest wissen, welchen Übergang du für das Reisen auf einen bestimmten Planeten haben möchtest.
Für einen nahtlosen Übergang (Reise zwischen Planeten ohne Ladezeit) wäre eine Szene, die alle Planeten enthält, etwas einfacher. Bei einer Aufteilung in verschiedene Szenen könntest du neue Szenen asynchron im Hintergrund laden, sobald der Spieler eine bestimmte Grenze in der Spielwelt übertritt oder du entscheidest dich gleich für einen Zwischenschnitt (Videosequenz/Ladebildschirm), wobei dabei etwas an Immersion verlorengehen kann, da dem Spieler zeitweise die Steuerungskontrolle entrissen wird.
In diesem Zusammenhang kommt allerdings auch der technische Aspekt zum Tragen. Alle Ressourcen in einer Szene zu haben bedeutet zum einen eine Limitation (Ressourcendateien dürfen nicht größer als 4 GB sein) und zum anderen belegen womöglich Objekte zur Laufzeit Speicherplatz, obwohl sie gerade nicht aktiv gebraucht werden (trotz occlusion culling u.ä.). Bei einer kleinen Spielwelt mag das nicht so sehr auffallen, bei deiner Zieldefinition von 200 Planeten allerdings schon. Du müsstest dir in diesem Fall wohl eine eigene Speicherverwaltung bauen, die aktiv nicht benötigte Objekte freiräumt.
Eine Aufteilung in verschiedene Szenen bietet dir mehr Modularität. Meines Erachtens wird die Projektstruktur übersichtlicher und das Projekt einfacher wartbar.
Dabei möchte ich nicht einmal sagen, dass du unbedingt je Planet eine eigene Szene brauchst. Angenommen, mehrere Planeten sind im Aufbauprozess gleich (z.B. jedes Planetterrain wird dynamisch zur Laufzeit generiert), dann könnte dafür eine eigene Szene ausreichen. Bei Reise auf Planet XY wird diese Szene geladen und ihr eine Ressourcen-ID o.ä. übergeben, damit sie bestimmen kann, welches Ressourcenbündel/welche Konfiguration sie laden muss.
Noch ein anderer Ansatz neben multiplen Szenen ist eine Aufteilung in verschiedene Projekte, die später beim Build zusammengeführt werden. Ich denke allerdings nicht, dass eine solche Vorgehensweise dein Vorhaben einfacher machen würde.