Konnten nicht alle Spiele das Laden nach dem Start vermeiden?

23

Genauso wie riesige Open-World-Spiele massive Karten dynamisch laden, können wir dann nicht separate Karten, Menüs und praktisch jede Benutzeroberfläche oder 3D-Einstellung über dieselbe dynamische Lademethode laden? Ohne die Umgebung zu verändern, scheinen Schnittstellen und verschiedene Orte im Spiel dynamisch geladen zu werden, so wie massive offene Weltkarten geladen werden, wenn Sie sie durchlaufen.

Warum wird das nicht gemacht? Ich sehe so viele moderne Spiele, bei denen man eine Minute oder länger warten muss, während das Match / die Karte / das Level geladen wird. Ich weiß, dass es eine Latenz gibt, die mit dem Verbinden von Peers verbunden ist, aber das dauert meiner Erfahrung nach nicht mehr als ein paar Momente. Welche Probleme treten bei diesem Konzept auf, damit es nicht mehr zum Laden von Karten- / Ebenen- / Schnittstellendaten verwendet werden kann?

Viziionary
quelle
16
Beachten Sie, dass in vielen ‚nahtlose‘ offene Welt Spiele, es sind die Ladezeiten , wenn der Spieler bewegt sich in einer unvorhersehbaren Lage. Man kann in The Division von einem Ende New Yorks zum anderen gehen, ohne einen Ladebildschirm zu öffnen, während für eine schnelle Fahrt zu einem Ort eine Ladung erforderlich ist. Es geht darum zu wissen, was als nächstes geladen wird.
Felsir
2
@Felsir Dungeon Siege hat es genauso gemacht.
Mason Wheeler
Batman Arkham Origins verwendet beispielsweise Ladebildschirme unmittelbar vor Zwischensequenzen und beim Betreten völlig neuer Bereiche. Seine geschichtsträchtige, progressive Natur bietet sich gut an und gibt dem Benutzer eine natürliche Pause. Dies funktioniert besonders gut aufgrund der sehr weitläufigen Gebiete mit sehr hochauflösenden Assets. Es wäre sehr zeitaufwendig, diese Funktion zu programmieren und zu testen, um nur einen geringen Nutzen daraus zu ziehen.
Casey Kuball
Bringen Sie Ihren RAM auf 128GB. Erstellen Sie ein RAM-Laufwerk mit etwa 64 GB, und laden Sie Ihr Spiel auf das RAM-Laufwerk. Die Ladezeiten werden so schnell sein, dass Sie sie kaum bemerken werden. Ich habe ein Upgrade auf eine SSD durchgeführt und die meisten Ladezeiten werden drastisch verkürzt. Aktualisieren der Grafikkarte, insbesondere auf mehr Video-RAM.
Cybernard
Das asynchrone Laden benötigt Zeit, die je nach CPU- und Festplattengeschwindigkeit variieren kann. Sie können nicht immer sicher sein, dass die Dinge geladen werden, wenn Sie sie brauchen.
Alan Wolfe

Antworten:

31

Die Antwort lautet ja, dies könnte in den meisten Fällen zumindest teilweise geschehen.

Es gibt viele Gründe, warum dies nicht getan wird:

  • Es braucht Zeit und Geld, um es richtig zu machen.
  • Die Anzahl der Fehler, die den Test bestehen, ist höher
  • Ladezeiten werden von den Benutzern akzeptiert.
  • Es kann andere Gründe für Ladezeiten geben, z. B. das Ausgleichen der Serverlast.
  • Generische Lösungen, die von der Stange gekauft werden können, sind besser mit "Alles auf einmal laden" kompatibel.
Peter - Unban Robert Harvey
quelle
Viele der heute auf den Markt gebrachten Online-Spiele verfügen über einen zentralen, für Sie einzigartigen Bereich, auf den niemand sonst zugreifen kann. Häufig werden diese Bereiche hinter einer Ladezone oder einem Bereich für langsames Gehen platziert (z. B. der BOO in „The Division“), damit Sie sicher von der Instanz, in der Sie sich zuvor befanden, abgehoben und in Ihre eigene private Instanz versetzt werden können .
SGR
7
Es gibt auch das Problem des Gedächtnisses. Es ist möglicherweise nicht möglich, eine vorhandene Ebene zu laden, während die aktuelle im Speicher
bleibt
@ Jezzamon Ich denke, die gesamte Skyrim-Karte wird zu keinem Zeitpunkt gespeichert. Vielleicht bin ich falsch? Aber wenn nicht, warum ist eine andere Situation mit den dynamischen Ladestrategien von massiven Open-World-Game-Maps nicht vereinbar?
Viziionary
Praktisch niemand rollt mehr seine eigene Spiel-Engine von Grund auf neu. Sie kaufen eine Engine (Unreal, Unity, CryEngine) und eine Menge Middleware und kleben sie zusammen. Die Basis-Engines sind normalerweise nicht so eingerichtet, dass sie Inhalte kontinuierlich einspielen oder ohne erneutes Laden neu starten. Überlegen Sie, wie oft Sie in einem Spiel gestorben sind, nur um eine Ladezeit von 60 Sekunden zu haben, obwohl die Assets und das Level bereits geladen waren. Die Gründe, die @Peter genannt hat, sind auch die Gründe, warum Sie keine Spiele sehen, mit denen Sie anfangen können, sie zu spielen, während Sie die Assets noch sehr oft herunterladen.
Tom B
2
Bei @Viziionary-Ebenen werden Texturen normalerweise häufig wiederverwendet, und auf einer anderen Ebene werden andere Texturen verwendet. In einem Dungeon-Level werden viele Dungeon-Wall-Texturen verwendet, in einem Wüsten-Level Sand- und Wüsten-Rock-Texturen, in einem Berg-Level Fels-, Gras- und Schneetexturen usw. Bei Spielen, bei denen dies zutrifft, wird ein halbes Level entladen, wenn dasselbe gilt Texturen, die im gesamten Level verwendet werden, geben nur einen kleinen Teil des verwendeten Speichers frei (oder entladen Texturen, die Sie noch benötigen).
Peter - Unban Robert Harvey
10

Wenn Ihre Menüs eine Menge Assets enthalten, dauert das Laden dieser Assets einige Zeit. Sie haben auch keine Ahnung, in welcher Reihenfolge die Benutzer in Ihrem Menü navigieren. Sie könnten auf Optionen -> Zurück -> Guthaben oder Guthaben -> Zurück -> Spiel in schneller Folge starten klicken. Es gibt also keine vernünftige Streaming-Strategie.

In einem Open-World-Spiel wissen Sie, dass sich der Spieler nicht schneller als mit einer bestimmten Geschwindigkeit bewegen kann. Sie müssen also die detaillierten Versionen der fernen Standorte erst laden, wenn sie sich ihnen nähern.

Almo
quelle
Warum nicht Prioritäten beim Laden von Menüs setzen, auf die häufig zugegriffen wird? Wenn ich in einem RPG das Menü öffne, ist es 90% der Zeit, etwas auszurüsten, das ich gefunden habe, oder einen Gegenstand zu benutzen. Sie können mit diesem Menü beginnen. Oder beginnen Sie mit dem Menü, dessen Laden 5 Minuten dauert, und beenden Sie das Laden, wenn der Benutzer das Menü verlässt.
DrakaSAN
1
@DrakaSAN Aber das ist oft optimiert. Sogar das Original Diablo zeigte Ihnen das Inventar im Handumdrehen. Der Ansatz, auf alles zu warten, scheint bei modernen Konsolen, deren Speicher im Vergleich zu einem PC sehr begrenzt war, wieder deutlich zugenommen zu haben. Und da so viele Spiele sowohl auf dem PC als auch auf der Konsole als console-> PC portiert sind, werden einige Konsolenbeschränkungen in den Prozess übernommen. Vergleiche Diablo III oder Divinity mit Skyrim oder Dark Souls - die Unterschiede sind ziemlich offensichtlich.
Luaan
2
Ist das langsame Laden von Menüs ein echtes Problem beim Spielen? Nein
Alan B
@AlanB nur, wenn der Zugriff auf Verbrauchsmaterialien nur über dieses Menü möglich ist. Sehen Sie Destiny auf der Xbox 360 / PS3 und wie lange es dauert, ein Munitionspaket im Vergleich zu den XB1 / PS4-Versionen zu verwenden.
SGR
1
@SGR Ich wollte Destiny auf PS4 als Beispiel für ein Menü mit unannehmbar langen Ladezeiten verwenden. Ich kann mir nicht vorstellen, wie viel schlimmer es auf Konsolen der letzten Generation ist.
IllusiveBrian
5

Ein wichtiger Faktor für die Machbarkeit einer solchen Lösung ist die Vorhersehbarkeit des Ladebedarfs. Wenn der Spieler völlig neue Level lädt, ohne zu ahnen, was er wählen wird, ist eine vollkommen nahtlose Lösung einfach nicht möglich. Zum Beispiel, wenn der Spieler ein beliebiges Level im Spiel auswählen kann, aus dem er spielen möchte, oder wenn er die Freiheit hat, sich in Open-World-Spielen in völlig andere Gebiete zu teleportieren.

Bei einigen Halo- Spielen wird das ausgewählte Level im Hintergrund geladen, während Multiplayer-Spiele eingerichtet werden. Dies verkürzt die Wartezeit, wenn die Spieler startbereit sind, und ist wahrscheinlich die beste Lösung, wenn der Spieler verschiedene Levels mit völlig unterschiedlichen Assets frei wählen kann.

Natürlich sagten Sie "ohne die Umgebung zu verändern", aber ich wollte nur das Halo- Beispiel aufgreifen , da es etwas ist, von dem ich mehr sehen möchte.

In einer fortlaufenden Kampagne oder wenn der Entwickler viel Kontrolle über den Standort des Spielers hat, ist eine solche Lösung, wie Sie sagen, mit Sicherheit rentabel. Naughty Dog verzichtet gerne auf Ladezeiten, wobei Jak und Daxter bekanntermaßen keine Ladezeiten auf der PS2 haben und Uncharted- Spiele zu Beginn nur eine Ladezeit haben.

Für viele ist die Ladezeit jedoch kein Problem, das gelöst werden muss . Oder es ist ein Problem , das auf die Entwickler die Prioritäten sehr gering ist, wenn es immer mehr , die zwischen getan werden könnte , jetzt und Release - Datum .

Jibb Smart
quelle
3
Jak und Daxter haben Ladezeiten. Sie sind nur hinter Türen versteckt, ähnlich wie ME1-Aufzüge und wie sie Ladezeiten verbergen.
Nzall
2
Aber Ladezeiten, die sich hinter S-Curve-Hallen verbergen und so weiter, fühlen sich nicht nach Ladezeiten an.
Almo
Wenn ich richtig verstehe, werden offene Weltkarten wie Skyrim nicht in den Speicher geladen, sondern nur die Teile, die der Benutzer sofort sehen muss. Könnten Sie also nicht kleine Startabschnitte aller (20?) - Karten vorladen? Bei richtiger Optimierung der Kartendaten scheint es, dass der tatsächlich verwendete RAM kein großes Problem in Bezug auf die aktuelle RAM-Menge darstellt, selbst auf Mobilgeräten. Es ist die Renderleistung der Grafikkarte, die meiner Meinung nach die meisten Spiele in den Engpässen hält. Es scheint nur, als könnten Sie die Startbereiche aller dieser Halo-Maps für den Benutzer laden und dann die ausgewählte rendern, während Sie den Rest aus dem Speicher entfernen.
Viziionary
1
Das Laden der Maps dauert nicht ewig - es sind die enormen Texturen, Modelldateien, Shader-Programme usw., die für eine Ebene oder einen Bereich spezifisch sind.
Tom B
3

Zeit.

Sie brauchen Zeit, um Zeit zu sparen. Oder Sie brauchen Geld, um den Zeitmangel auszugleichen. In jedem Fall "Keine Ladezeit!" ist ein Feature, das nur diejenigen bieten können, die den Luxus haben, es sich zu leisten. Es erfordert sehr sorgfältige Planung, und Sie müssen genau wissen, was Sie tun, und nicht alle Spieleentwickler verfügen über die Ressourcen, um dies zu tun.

Vaillancourt
quelle
2

Letztendlich sind die Ressourcen begrenzt.

Open-World-Spiele und insbesondere MMOs sind stark auf Vorhersagbarkeit ausgelegt - Sie wissen immer, welche Daten Sie rechtzeitig laden müssen. Sie können dies in der Architektur der Welten sehen - immer, wenn eine Menge Ressourcen geladen werden müssen, haben Sie eine Möglichkeit, den Benutzer daran zu hindern, das Zeug zu sehen, das noch nicht geladen ist. Der häufigste Weg sind Tore und Eingänge, die Ihnen den Blick in den nächsten Bereich für die entscheidenden Sekunden versperren, die für das Laden erforderlich sind. Die meisten MMOs verwenden auch weniger detaillierte Modelle und Texturen, was die Ladezeiten erheblich verkürzt.

Einige Dinge sind trotz sorgfältiger Planung immer noch unvorhersehbar. Beispielsweise können von Spielern benutzerdefinierte Banner getragen werden, die erst angezeigt werden, wenn die relevanten Daten über das Netzwerk an Ihren Computer gesendet wurden. Natürlich versuchen die meisten Spiele, dies zu begrenzen, um es billiger zu machen (z. B. sind die Banner von Diablo III einfache Kompositionen, die sich leicht mit nur wenigen Datenbytes senden lassen). Aber letztendlich muss man manchmal nur darauf warten, dass Daten eintreffen. Während des Ladevorgangs muss etwas angezeigt werden. In vielen Spielen kann dies zu einer Unterbrechung des Eintauchens führen, da ein graues, detailarmes Modell angezeigt wird, während auf das Laden der Daten gewartet wird.

Und mit all dem ist das Laden auf diese Weise ein gelöstes Problem (TM), aber das macht es nicht einfach. Es kostet viel Ressourcen und Zeit, sowohl bei der Optimierung der Ressourcen als auch bei ihrer Verwendung, um ein reibungsloses Spielerlebnis zu gewährleisten, und im Code selbst - asynchroner Code ist hart. Dies kann auch zu einem geringeren Spielerlebnis führen, selbst wenn alles in Ordnung ist. Es bedeutet, dass Sie sicherstellen müssen, dass Sie die Bandbreitenfähigkeiten Ihres kleinsten gemeinsamen Nenners nicht überschreiten. Daher müssen Sie die Qualität von Modellen und Texturen verringern oder sie verbessern weniger vielfältig, und die Geometrie Ihrer Welten ist stark eingeschränkt. Wenn Sie dies nicht tun, wird das Spiel nicht spielbar sein - während ich mich an Leute erinnere, die Spiele gespielt haben, die 10 Minuten (oder länger!) Gebraucht haben, um eine Karte zu laden, einfach weil ihr Computer der Aufgabe, dem Spiel, nicht ganz gewachsen war selbst läuft danach gut. Wenn es stattdessen ein nahtloses Laden hätte, würde das Spiel die ganze Zeit nur einfrieren oder hässliche Texturen und Modelle anzeigen, während es darauf wartet, dass die Daten geladen werden. Aufgeschobenes Laden ist keine Win-Win-Situation, sondern ein Kompromiss, wie die meisten technischen Probleme :)

Luaan
quelle
2

Ein Grund, warum dynamisches Laden nicht immer die ideale Lösung ist, die andere Antworten nicht wirklich in Betracht gezogen haben, sind meiner Meinung nach auch Pop-In und andere Grafikartefakte.

Die Vorhersage, was geladen und was nicht geladen werden soll, schlägt häufig fehl, und dies kann zu einer nachteiligen Erfahrung werden. Eines der schlimmsten Beispiele dafür war Rage von id Software. Zumindest in den frühen Versionen haben die Megatexture-Systeme dafür gesorgt, dass selbst beim allzu schnellen Herumdrehen enorme Mengen an Texturen und sogar Geometrieartefakten sichtbar wurden, bevor sie langsam verblassten.

Diese Probleme sind einfach kein Problem, alles ist vorinstalliert.

Was zu beachten ist, muss nicht unbedingt geladen, sondern entladen werden. Wenn Sie nur so viel Budget für Speicherplatz haben, wenn Sie neue Dinge laden, welche alten müssen entfernt werden? Wie sicher sind Sie, dass diese Assets in den nächsten Sekunden nicht verwendet werden? Dies sind schwer zu lösende Probleme.

Wenn jeder Gameplay-Status klein genug ist, um in ein gemeinsames Systembudget zu passen, ist jeder Vorteil offensichtlich. Statt geladen zu werden, betritt man einfach ein Level und die Dinge verschwinden, während man spielt. Wie die Hauptantworten jedoch vermuten lassen, wäre die Ladezeit für ein kleines Spiel ohnehin nicht zu lang, um sich Sorgen zu machen.

Ich denke, es lohnt sich, über die Gründe nachzudenken, warum dynamische Ladesysteme ursprünglich erstellt wurden, da Sie wissen, dass einige Ihrer Spielzustände für ein gemeinsames System zu groß sind und ein Spiel dieser Größe einfach nicht vollständig vorgeladen werden kann.

Watschelt
quelle
2

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.


quelle
1

Dies ist ein häufiges Problem, das sich aus der Tatsache ergibt, dass Spiele Soft-Realtime-Produkte sind, bei denen eine verspätete Übermittlung von Inhalten nicht so nützlich ist wie eine pünktliche Übermittlung (im Gegensatz zu Hard-Realtime, wie bei Autos in Computern, bei denen eine verspätete Übermittlung erfolgt) kann nicht besser sein als gar keine Lieferung). Sie müssen entscheiden, was und wo geladen werden soll.

Manchmal sind die verspäteten Lieferungen besonders schlecht. Wenn Sie zum Beispiel in einer Welt herumrennen dürfen, bevor alle Wände beladen sind, können Sie hinter eine Wand gelangen, die Sie niemals hinter sich gelassen hätten, wenn das Spiel die Wände beladen hätte, bevor Sie sich bewegen konnten. Es ist nicht immer einfach zu sagen, wann Sie mit einem "faulen" Laden von Inhalten davonkommen können und wann Sie garantieren müssen, dass der Inhalt vollständig geladen ist.

Das dynamische Laden ist auch weitaus komplizierter. Sie müssen ständig überlegen, was zu tun ist, wenn die Ressource noch nicht geladen wurde. Dies belastet die Entwicklungsressourcen. Es ist viel einfacher zu entwickeln, wenn Sie sich auf die vorhandenen Ressourcen verlassen können.

Die Latenzen sind auch nicht immer akzeptabel. Ich habe von Fällen in Starcraft gehört, in denen Sie Ihr Spiel "aufwärmen" würden, indem Sie eine Karte laden, die den Nebeneffekt hat, dass jedes dynamisch geladene Modell / Bild zwischengespeichert wird. Sie würden dann beenden und das Spiel normal spielen. Für die Elite-Gamer minimierte dies das Stottern der Benutzeroberfläche, das sich tatsächlich auf ihr Gameplay auswirkte. Es ist schwierig herauszufinden, welche Latenzen für Benutzer akzeptabel sind und welche nicht.

Cort Ammon - Setzen Sie Monica wieder ein
quelle