Es gibt eine Reihe von Faktoren, um dieses Problem anzugehen, obwohl Sie auf dem richtigen Weg sind.
Einzellast
Der erste Ansatz besteht, wie Sie bereits versucht haben, darin, alles auf einmal zu laden. Dadurch stehen Ihre gesamte Ladezeit und Datei-E / A im Vordergrund. Wie Sie bereits bemerkt haben, kann Ihre anfängliche Ladezeit mit zunehmender Kartengröße für den Benutzer ärgerlich werden. Dadurch wird auch eine Obergrenze für Ihre maximale Weltgröße erstellt, die auf dem minimal erforderlichen Speicher der Zielplattform basiert.
Es gibt zwei andere Möglichkeiten, wie ich damit umgehen kann: Sie können die Welt aufteilen und sie vom Bildschirm laden, wenn sich der Player ihnen nähert (Laden des Streams); und Sie können Ladezonen haben.
Zonen laden
Durch das Laden von Zonen können Sie eine maximale Blockgröße finden, die sich positiv auswirkt, und Ihre Welt in nicht größere Teile unterteilen. Wenn der Spieler eine Transitregion (Tür, Höhle, Kartenkante) betritt, findet eine Art Übergangsgrafik oder -animation statt, um den Spieler abzulenken. Die neue Zone wird aus dem Dateisystem geladen, während die alte gespeichert und entladen wird. Dies ist eine Mitte des Straßenansatzes. Sie können zwar Welten haben, die viel größer als die Speicherkapazität des Zielgeräts sind, und alle Ihre E / A-Anstrengungen unternehmen, bevor der Player die Kontrolle erhält. Dies erhöht jedoch die E / A-Operationen gegenüber Ihrem ursprünglichen Ansatz. Dies kann auch die Kontinuität des Spiels beeinträchtigen, was für den Stil Ihres Spiels günstig oder nicht günstig sein kann. Die Final Fantasy-Reihe ist wahrscheinlich die bekannteste für diese Art von Ansatz.
Laden des Streams
Was ich als das bekannteste Beispiel für das Laden von Streams betrachten würde, ist Minecraft. Chunks werden in den Speicher geladen und aus diesem entfernt, wenn sich die Nähe des Players ändert. Wie beim Laden von Zonen wird beim Laden von Streams auch die Obergrenze für die Weltgröße entfernt. Außerdem werden die Unterbrechungen des Ladevorgangs aus der Benutzererfahrung entfernt. Dies ist jedoch der Ansatz mit der höchsten Datei-E / A-Belastung, da Zonen während einer Wiedergabesitzung häufig geladen und aus dem Speicher gelöscht werden können. Es muss auch darauf geachtet werden, eine Zone in einer näheren Nähe zu laden, als sie aus dem Speicher entfernt wurde, um zu verhindern, dass ein Spieler, der wiederholt über eine Blockgrenze läuft, das Spiel bei E / A-Operationen vergräbt. Für 3D-Spiele eine Methode namens Dogleggingwird oft verwendet, wodurch die Sicht des Spielers auf den Bereich, der geladen wird, blockiert wird. Dies hat normalerweise die Form eines Flurs mit einer Kurve, kann aber jedes Hindernis sein, das die Sichtlinie des Spielers blockiert.
Welcher dieser Ansätze für Ihr Spiel am besten geeignet ist, liegt bei Ihnen.