Ist es sinnvoll immer wieder neue Szenen in Unity zu erstellen?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

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.