Ich denke, moderne Spiele hätten in der Lage sein müssen, Ladebildschirme loszuwerden.
Ich vermute, der wahre Grund, warum wir immer noch Ladebildschirme haben, ist, dass die meisten Spiele für die Ausführung auf Xbox 360-Hardware ausgelegt sind. Als solche sind sie in der Menge an RAM begrenzt, in die sie Sachen laden können, und in wie viel Threading sie tun können. Wenn Sie nicht genug RAM haben, müssen Sie eine Menge Dinge aus dem Speicher löschen und sie dann von der Festplatte neu laden. Außerdem ist es einfacher, alles auf einmal zu laden.
Es gibt auch Zeiten, in denen Dinge wie die Festplatte zum Stillstand kommen könnten. Was passiert, wenn der Benutzer im Hintergrund Antivirus ausführt? Wenn Sie keine Inhalte vorladen, muss das Spiel möglicherweise angehalten werden, während darauf gewartet wird, dass das Netz geladen wird oder Dinge spontan angezeigt werden.
Spiele wie Skyrim bieten Ihnen eine weite Welt, auf die Sie so oft stoßen können, wie Sie möchten. Sobald Sie jedoch eine Tür öffnen, um einen relativ kleinen Dungeon zu laden, bleibt ein Ladebildschirm hängen.
Der einzige Grund, warum ich sehen konnte, dass der Dungeon-Ladebildschirm benötigt wird, ist, wenn sie eine extra schwere vorgebackene Beleuchtung verwenden, die für Innenszenen verwendet wird, die zum Laden ziemlich groß sind (aus 1 riesigen Netz oder mit detaillierten Lichtkarten) oder einige Berechnungen erfordern zur Laufzeit. Ich glaube, die Skyrim-Dungeons bestehen nur aus modularen Netzen und nicht aus einem riesigen Netz (zumindest denke ich, dass Oblivion wo ist).
Es gibt keinen wirklichen Grund, mehr zu laden als das, was Sie beim Betreten des Levels tatsächlich sehen können. So wie Spiele keine Dinge rendern, die Sie sehen können, können Sie sofort auswählen, was Sie tatsächlich laden müssen. Sie können auch viele Dummy-Platzhalterobjekte einkleben. Anschließend können Sie mithilfe von Threading Objekte in der Umgebung, deren Maschen, Texturen usw. asynchron laden, während sich der Player in der Umgebung bewegt.
Die Art und Weise, wie ich Ladebildschirme loswerden würde, ist wie folgt:
Laden Sie die grundlegenden Eigenschaften der Spielwelt. Globale Skripte.
Laden Sie die Position des Spielers.
Laden Sie die Gitterzelle / den BSP-Knoten dieser Position.
Laden Sie nur die Begrenzungsrahmen der Objekte in dieser Zelle.
Berechnen Sie, was tatsächlich gerendert werden würde (Tests an den Begrenzungsrahmen, möglicherweise Okklusions-Rendering-Tests).
Laden Sie die Maschen des gerenderten Materials.
Laden Sie die Materialien und Texturen der Maschen.
Führen Sie weitere Tests durch, um festzustellen, ob mehr Regionen sichtbar sind und geladen werden müssen (dh fragen Sie ein Rendering einer gesamten Gitterzelle als Riesenwürfel ab).
Sobald alles Sichtbare geladen ist, starten Sie das Rendern.
Laden Sie den Rest des Materials in die Zellen und laden Sie nach Bedarf mehr Material. Laden Sie nahe gelegene Regionen und machen Sie einige grundlegende Vorhersagen über die Bewegungen des Spielers, um auszuwählen, welche Regionen zuerst geladen werden müssen. Fahren Sie fort, bis der Speicher voll ist.
Es gibt einige andere Dinge, die berücksichtigt werden müssen. Zum Beispiel müssen einige Dinge geladen werden, obwohl sie nicht sichtbar sind. Zum Beispiel müsste ein Feind, der außerhalb der Region hinter dem Spieler steht, aktiv sein, damit er auf den Spieler zulaufen und ihn angreifen kann. Möglicherweise ist das Okklusionstestmaterial nicht erforderlich, da Sie sofort etwas in der Nähe laden möchten, damit es dort ist, wenn sich der Player bewegt und es sichtbar wird. Es kann sich jedoch eine Sekunde rasieren, um direkt zum Render zu gelangen (aber wenn die Zeit so knapp ist, sind Sie es wahrscheinlich Probleme mit dem Erscheinen von Sachen bekommen).
Wenn möglich, sollten diese Schritte gestartet werden, bevor sie benötigt werden, und im Hintergrund abgefädelt werden. Wenn Sie sich beispielsweise im Hauptmenü des Spiels befinden, sollte es beginnen, den Startbereich vor dem Laden zu laden, nachdem Sie "Neues Spiel" (oder sobald das Menü angezeigt wird) und das letzte Speichern zum Fortfahren ausgewählt haben. Andere Speicher können vorgeladen werden, wenn Sie die Maus darüber bewegen. Wenn Sie sich einer Dungeontür nähern, sollte diese das nächste Level laden (obwohl Sie, wenn Sie das können, keine spezielle Dungeontür benötigen, da diese eigentlich nur einen Ladebildschirm auslösen soll). Laden Sie im Hintergrund, während das Video abgespielt wird. Auf diese Weise benötigen Sie nicht einmal einen kurzen Ladebildschirm.
Sie können eine Menge davon überspringen, wenn es Ihnen nichts ausmacht, dass Dinge auftauchen. So etwas wie Second Life lässt Sie nur Dinge erscheinen, da es aus dem Internet abgerufen wird und Sie nicht viel dagegen tun können. Assassins Glaubensbekenntnis hat den Effekt, dass Dinge in die Szene eindringen, sodass Sie möglicherweise aus künstlerischen Gründen mit Dingen davonkommen können.