Ein häufiger Grund ist, dass es nicht immer gleich einfach ist, zu bestimmen, ob in naher Zukunft eine Ressource benötigt wird.
Da Sie als Beispiel Terrain Paging verwendet haben, werde ich damit fortfahren.
Wenn Sie sich in einem bestimmten Kartenraster befinden, ist es durchaus sinnvoll, alle angrenzenden Kartenraster im Hintergrund zu laden. Sie wissen, dass der Benutzer bestenfalls einen von diesen eingeben kann. Wenn dies der Fall ist, können Sie die nicht mehr angrenzenden und die jetzt vorhandenen entladen. Dies haben Sie bemerkt.
Stellen Sie sich nun schnelles Reisen vor. Es gibt absolut keine Möglichkeit, vorherzusagen, wohin der Benutzer gehen möchte. Sie haben (normalerweise) fast die gesamte Karte zur Auswahl. Das Vorladen aller möglichen Schnellreiseziele würde viel zu viel Speicher beanspruchen (Sie könnten auch die gesamte Karte zuerst in den Speicher laden) und viel zu viel Zeit (vorausgesetzt, Sie hätten nicht die gesamte Karte vorgeladen). Wann würde das passieren? Wann öffnen sie den Schnellreisedialog? Das Problem würde sich nur um ein Vielfaches verschlimmern!
Aus diesem Grund haben auch die meisten Spiele mit "unbeladenem" Terrain-Paging noch Ladebildschirme für schnelle Fahrten. Wenn Sie sich schnell genug bewegen, können Sie auch in Spielen mit nicht geladenen Karten manchmal Ladebildschirme auslösen (ich erinnere mich, dass Sie dies in TES Oblivion getan haben).
Stellen Sie sich nun vor, dass dies auf Spielressourcen im Allgemeinen zutrifft, bei denen Beziehungen oft nicht offensichtlich sind. Am Ende müssen Sie entweder alle möglichen Optionen laden oder erraten, was der Benutzer tun wird. Das Erraten ist kostspielig (sowohl in der Entwicklung als auch in der CPU) und ein komplexes Durcheinander, das zu programmieren ist. Spezifische Beispiele:
- Dateien speichern: Sie müssten jeden laden gespeicherte Datei , bevor der Benutzer den Speicherbildschirm erreicht, oder erraten, welche Datei er möglicherweise lädt (neueste 5 usw.).
- Benutzeroberfläche: Viele Strategiespiele ändern ihre Benutzeroberfläche abhängig von Ihrer Fraktion. Sie müssten jedes mögliche UI-Design laden, bevor der Benutzer sein Spiel startet.
- Spielewelt: In prozedural generierten Spielen wie Minecraft oder RTS-Spielen wie Civilization existiert die Welt erst, wenn sie in unterschiedlichem Maße betrachtet wird. Ein Vorladen ist nicht möglich, da sie von Anfang an nicht existierten. Ihre Vorausberechnung könnte bestenfalls ähnlich wie die Vorausberechnung erfolgen und ist im RTS-Fall nicht anwendbar.
Es könnte Wege geben, um einige dieser Probleme zu umgehen, aber das kostet echtes Geld, um es herauszufinden. Die meisten Gamer akzeptieren angemessene Ladebildschirme und sind eher bereit, mehr für Hardware auszugeben, um sie zu entschärfen. Es wird als Hardwareproblem gesehen , nicht als Spiel , es sei denn, es ist ungewöhnlich übermäßig oder störend (wie das Laden in der Mitte eines Levels).
Und denken Sie daran, dass das Laden im Hintergrund nicht kostenlos ist. Die moderne Verwendung des Terrains zum Laden im Hintergrund und einiger Modelldateien hat in der Regel nur minimale Auswirkungen. Wenn Sie jedoch plötzlich von vielen verschiedenen Ressourcen ausgehen, insbesondere, wenn Sie keine zuverlässigen Metriken haben und viele Ressourcen entladen und überflüssige laden müssen können Sie das System zu Staub zermahlen.
Die Idee des Hintergrundladens besteht darin, die Totzyklen für eine bessere Verwendung zu verwenden, aber es gibt nur so viele Totzyklen, die verwendet werden können. Gleiches gilt für den Speicher - durch das Vorladen kann die Speichernutzung eines Spiels erheblich erhöht werden. Mit einem Ladebildschirm können Sie die vorhandenen Ressourcen sichern. Kein Luxus im Hintergrund, was bedeutet, dass der Speicherbedarf des Spiels allein in dieser Hinsicht verdoppelt werden könnte.