Chunking / Caching großer Levels in einem Einzelspielerspiel


8

Ist es sinnvoll zu versuchen, eine große nichtlineare Ebene in dateibasierte Chunks zu verlagern und diese bei Bedarf zu laden? Wir haben Level-Chunking implementiert, um die Renderleistung zu verbessern, aber alle Level-Objekte bleiben im RAM erhalten.

Wenn ja, wie halten wir dann die Illusion einer lebendigen / sich verändernden Welt aufrecht? Da die Ebene nicht linear ist, sondern wie eine Welt an sich, können wir nicht einfach so tun, als wäre alles, was man durchgemacht hat, für immer verschwunden.

Ist es eine bessere Idee, die Ebenen komplex genug zu gestalten, aber auch so optimiert, dass sie immer im Speicher bleiben, aber Mikro- / Makrosprungpunkte zu implementieren, die es einem ermöglichen, zu einem völlig entfernten Punkt (dh einem ganz neuen Level) zu springen und so zu vergessen über die Konsistenz der Welt und die Illusion einer sich verändernden Welt. Dies würde es uns auch ermöglichen, eine leicht lineare Geschichte in einer scheinbar nichtlinearen Welt zu verfolgen. Es wäre möglich, einfach einen neuen Zustand auf den bestehenden Zustand eines "entfernten" Levels anzuwenden, wenn wir den Spieler wieder dorthin bringen wollen.

Antworten:


6

Das Erstellen von Chunks ist wirklich eine gute Idee, aber Sie müssen sie mit Bedacht einsetzen. Es gibt viele große Titel, die dieselbe Idee verwenden, um die Illusion einer sehr großen Welt zu vermitteln. Zum Beispiel kann ich Spore oder Oblivion erwähnen.

Lassen Sie uns zuerst über Sporen sprechen, da Sie in der galaktischen Phase leicht sehen können, wie die Dinge funktionieren:

Es gibt viele Planeten in der Galaxie, aber nicht alle sind gleichzeitig im Gedächtnis. Wenn Sie sich einem Planeten nähern, lädt das Spiel automatisch eine Textur für diesen Planeten von der Festplatte. Wenn Sie dann nah genug dran sind, können Sie den Planeten betreten und einige Änderungen vornehmen. Während Sie sich auf einem Planeten befinden, werden fast alle Daten über den Weltraum freigegeben. Und Sie können jede Veränderung auf dem Planeten vornehmen, den Sie mögen. dann können Sie zur Raumansicht zurückkehren. Dieses Mal lädt das Spiel Daten für andere Planeten neu und speichert die Änderungen, die Sie auf diesem Planeten vorgenommen haben. Wenn Sie dort beispielsweise einen Berg erstellt haben, werden alle Netz- und Texturänderungen erneut in Dateien gespeichert. Es gibt auch einige Ereignisse, die in Dateien gespeichert werden. Zum Beispiel, wenn Sie das Gerät einsetzen, mit dem sich Kreaturen auf Planeten entwickeln können. Diese Ereignisse bleiben aktiv, bis Sie sich wirklich weit vom Planeten entfernen und sie auslösen.

In Vergessenheit sind die Dinge etwas anders, obwohl die Grundidee dieselbe ist. Wenn Sie in freier Wildbahn gehen, lädt und entlädt das Spiel ständig Bereiche. Wenn Sie versucht haben, auf PS3 in Vergessenheit zu geraten, hat dieser Prozess einige geringfügige Verzögerungen im Übergangsbereich verursacht (oder zumindest habe ich gehört, dass dies der Fall ist). Es gibt auch einige Bereiche, die das Spiel vollständig stoppen und Sie sehen einen Ladebildschirm, wie wenn Sie Höhlen betreten, in denen Sie sich befinden. Mit dieser Methode konnten sie die Komplexität und den Speicherbedarf in Städten leicht reduzieren. Denken Sie nur daran, wie viele Häuser es in einer Stadt gibt und wie viel Speicher sie verbrauchen würden, wenn sie sie laden wollten. Beachten Sie auch, dass sie fast die gesamte Festplattenbandbreite benötigen, wenn sie dasselbe Lade- und Entladesystem verwenden möchten, wenn Sie sich in der Nähe von Häusern befinden. Dies kann die Festplatte beschädigen.

Um meine Antwort abzuschließen, schlage ich vor, dass Sie in Ihrem Spiel dieselbe Methode für weite Bereiche verwenden. Sie müssen auch alle Änderungen speichern, die der Spieler in einem Bereich beim Entladen vorgenommen hat. Diese Methode bietet den Spielern eine sehr angenehme Erfahrung der Erkundung einer realen Welt. Für Bereiche mit vielen Objekten und der Meinung, dass Sie möglicherweise den größten Teil der Speicherbandbreite für die Datenübertragung benötigen, verwenden Sie einfach eine herkömmliche Methode mit einem Ladebildschirm.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.