Warum laden Spiele anscheinend das gesamte Level neu, wenn sie ein Level neu starten?

47

Sind die Daten während des Spiels wirklich so stark verändert?

Ich gehe davon aus, dass die längere Pause zwischen dem Neustart eines Levels das gesamte Neuladen des Levels ist. Mir scheint jedoch, dass ein gut implementiertes System in der Lage sein sollte, zum Anfang des Levels zurückzukehren.

Es ist auf Konsolen auffälliger, auf PC-Spielen jedoch nicht unbemerkt.

Gittergewebe
quelle
8
Die Antwort darauf hängt stark vom Spiel, den Entwicklern, ihren Gewohnheiten und Erfahrungen und vielen weiteren Faktoren ab. Die einzig richtige Antwort auf einer allgemeinen Ebene wäre: manchmal ist es viel verändert, manchmal nicht, manchmal Sachen strömen und damit der Anfang ist nicht im Speicher nicht mehr, und Spiele manchmal schon tun „ping“ wieder auf das Niveau Anfang, und Spiele, die manchmal keine guten Gründe haben, warum sie das nicht können, und manchmal nur, weil sie nicht gut genug implementiert sind.
Christian
4
Im Allgemeinen ist es viel einfacher, das Level neu zu laden (was alles in den Ausgangszustand versetzt), als alles, was der Spieler getan hat, rückgängig zu machen. Das ist meiner Erfahrung nach sowieso der Fall.
Benjamin Danger Johnson
Die Frage ist nicht schwarz-weiß. Wie viel Zustand wird nachgeladen? Viele Spiele laden ganze Textur-Sets ohne guten Grund neu. Sicher, von Level 5 auf Level 6 zu
wechseln
@MSalters Meistens geht es um den Spielstatus und nicht um Ressourcen. Möglicherweise müssen Sie keine gewöhnliche Gebrauchstexte neu laden, sondern vielmehr den Feind, den Sie bereits getötet haben wenn seine Textur noch schön im Speicher gespeichert ist.)
Tom 'Blue' Piddock
Ich glaube, jemand hat Wing Commander III auf einem Legacy-System gespielt.
Erik Reppen

Antworten:

54

Nun - was für eine einfache, aber interessante Frage.

Beim Neuladen eines Levels müssen so viele Faktoren berücksichtigt werden, dass die Antwort viele Wege gehen kann.

Wenn Ihr Level-Status eine große Liste von Assets enthält, kann es praktischer sein, beim Zurückladen eines Levels in einen Save / Mission-Status von einem sauberen Slate auszugehen, da dies den genauen Status des Levels beim Zurückladen beibehält, aber nicht viel kostet der Verarbeitung. Es ist jedoch effizienter, die Assets alleine zurückzusetzen, wenn nur wenige zu berücksichtigen sind. Stellen Sie sicher, dass Sie die Aktion auf diesen kleineren Ebenen schnell neu starten können. Letzteres ist besonders dann der Fall, wenn Sie nichts in der Szene aufbewahren müssen oder es nicht durch Ihre Entscheidungen im Spiel beeinflusst wird - wenn Sie keine Leichen benötigen, die Sie bei Ihrem ersten Durchlauf durch ein Dorf aufbewahren müssen, werden sie dies nicht tun müssen auf dem Rückweg durch diese Ebene neu geladen werden, wodurch Prozessorzeit und Zugriffszeit für Speichern / Missionsstatus gespart werden.

Ein gutes Beispiel wäre ein Ego-Shooter, der Geländezerstörungs- / Kugelabziehbilder verwendete, die während des Durchspielens einen dauerhaften Zustand aufwiesen, aber nicht blieben, wenn Sie diesen Kontrollpunkt oder dieses Level neu starteten .

Wenn Sie das Level zurückspulen , anstatt es zu zerstören und neu zu laden, müssen Sie jeden Status verfolgen, der geändert wurde. Wenn Sie mit einer Rakete ein Loch in die Wand schießen, erzeugen Sie Geländestücke aus den Stücken, die von der Wand fallen. Das Modell der Wand ändert sich, um das Loch zu erzeugen, und Sie haben Partikeleffekte, die erzeugt wurden, damit es hübsch aussieht . Um dies zu bereinigen, indem Sie es in einen "neustartfähigen" Zustand zurückspulen, müssten Sie:

  • Entferne alle dynamisch generierten Gibs für diese Wand (aber nicht diejenigen aus dem Status, den du geladen hast)
  • Entfernen Sie den Partikeleffekt für den Staub aus dem Einschussloch
  • Ersetzen / reparieren Sie die Wand, um die entstandenen Löcher zu entfernen
  • Setzen Sie die Player-Munition zurück
  • Usw...

Bei so vielen Ressourcen, die zum Zurückspulen einer Ebene nachverfolgt werden müssen, ist es oft weniger prozessorintensiv, die gesamte Ebene einfach zu zerstören und alle Ressourcen in ihren Standard- oder missionsspezifischen Zuständen erneut zu laden. Das Zurücksetzen bestimmter Objekte umfasst das Durchsuchen einer Liste der Objekte in der Szene und den Zugriff auf ihre Eigenschaften, um sie zurückzusetzen. Anstatt dass dieses Einschussloch in der Wand durch Aufräumen repariert wird, müssen Sie keine Aufräumaktionen berechnen. Löschen Sie einfach den gesamten Level aus dem Speicher und laden Sie ihn von Grund auf neu.

Dies bedeutet, dass das erneute Laden eines Levels von einem Statusobjekt (einer gespeicherten Spieldatei oder einem Missionsskript) aus erfolgt und keine dynamischen Berechnungen erforderlich sind. Bei Konsolen wird dies durch die Ladezeiten der Discs verschärft. Es hilft auch bei PC-Spielen, da es Computer berücksichtigen kann, die nicht über die Prozessorleistung verfügen, um die Ladezeiten akzeptabel zu machen.

Also für große Inhaltsebenen - Laden eines einzelnen Status, anstatt einen zu berechnen und "zurückzuspulen":

  • Ist weniger prozessorintensiv
  • Ist effizienter auf Maschinen der unteren Klasse
  • Ermöglicht die Verwendung eines Missionsskripts und einer Sicherungsdatei auf dieselbe Weise (verwenden Sie möglicherweise dasselbe Ladesystem, um einen Sicherungsstatus oder einen Missionsprüfpunktstatus zu laden, wenn Sie das Level neu starten).
  • Das bedeutet, dass Sie als Entwickler weniger Zeit haben, eine Ebene zurückzusetzen. Es ist viel einfacher, ein vollständiges Neuladen von Sitzungsdaten zu programmieren, als das Verfolgen und Zurückspulen. Dies ist wahrscheinlich der einflussreichste Punkt

Als Gegenbeispiel muss ein Kampfspiel (zum Beispiel Street Fighter 4) möglicherweise nicht so viele Assets nachladen, um ein Level neu zu starten. Die 2 Spieler, der Umgebungszustand für den Level und die einfachen Level-Timer sind meistens statisch und nicht dynamisch (die Gesundheit der Spieler wird immer zu 100% pro Runde wieder hergestellt, die Timer werden auf 90 Sekunden zurückgesetzt und der Level hat keine Einschusslöcher [oder tut es!] ) und so ist das Zurücksetzen des Levels eine Frage der Gesundheit der Kämpfer und der Wiederherstellung ihrer ursprünglichen Position für die Umwelt (wie die Zuschauer in einigen Levels).

Für ein Kampfspiel bei einem Rückkampf (nicht von Runde zu Runde) müssen Sie also:

  • Setze Gesundheit und Energie auf Maximum oder Standard zurück (immer das gleiche pro Charakter)
  • Timer zurücksetzen
  • Startpositionen der Charaktere zurücksetzen
  • Terrain auf Standardzustand zurücksetzen (keine Einschusslöcher zum Reparieren oder Nachladen!)

Und das ist im Wesentlichen die gesamte Liste - was bedeutet, dass ein schnelles Zurücksetzen des Status anstelle eines vollständigen Nachladens einfacher ist. Dies lässt sich auch an der Ladezeit ablesen, wenn Sie das Match zum ersten Mal starten. Das Laden aller Charaktermodelle und Levelmodelle dauert sehr lange, aber nur wenige Prozessorticks setzen die Startpositionen der Charaktere zwischen Übereinstimmungen mit einem bereits geladenen Modell zurück.

Es ist wichtig anzumerken, dass dies auch für Kampfspiele eine zunehmend gefragte Anforderung ist, da die Spieler in der Regel unglaublich schnell wieder in Aktion treten möchten, da Spiele in der Regel nur eine Minute dauern können und Genre. Die FPS verlangen nach dynamischeren Assets, während die Fighter schnell wiederholbare Aktionen fordern.

Ich hoffe, das hat etwas Licht in Ihre Frage gebracht.

Tom 'Blue' Piddock
quelle
7
Tolle Antwort ... die zynische Seite von mir würde Ihr sagen: "Weniger Arbeit für Entwickler steht weiter oben auf der Liste ... aber vielleicht ist es die Implementierung der Engine, die besser sein könnte.
Mesh
3
Und was ist mit der Fehlerbehebung? Ein NPC, der sich aufgrund eines Fehlers im physischen System, eines Speicherverlusts usw. nicht bewegt. Selbst wenn das Spiel gründlich getestet wurde, passieren solche Dinge immer noch und es muss eine Möglichkeit geben, das Spiel in einen bekannten und funktionierenden Zustand zurückzusetzen.
Sulthan
9
Weniger Arbeit ist ein beneidenswertes Ziel und kein Thema der Schande. Sie könnten eine Woche verbringen, um ein Rückspulsystem aufzubauen und einen Monat, um alle Fehler zu beseitigen, oder um neue Funktionen zu laden =)
Patrick Hughes
1
Ich denke, dass hier die Kosten das wichtigste Argument sind. Es sei denn , ein Niveau Nachladen ein geschieht viel und wird ein großes Ärgernis für den Benutzer gibt es keinen Anreiz optimierte Code zu schreiben schneller einen Reload zu machen. Es kostet nur weniger, den Code für eine normale Ladung wiederzuverwenden.
Orlp
1
+1 Ich möchte nur klarstellen, dass für das Neuladen eines Levels und das Laden eines Levels - wenn das Neuladen alles wegwirft und mit einem neuen Ladevorgang beginnt - kein neuer Code geschrieben werden muss, um das Spielziel zu erreichen. Ein Rückspulsystem ist ein völlig neuer Satz von Code, der nicht trivial ist. Da er von einem variablen Status abhängt, ist das Debuggen extrem schwierig. Beispiel: "Fehlerbehebung: Das Neustarten eines Levels, nachdem ein Helm auf eine Bombe geworfen wurde, nachdem eine Rakete in einem Umkreis von 200 Pixeln um Wasser explodiert ist, führt nicht mehr zu einem Absturz des Desktops." Kurz gesagt, Sie müssen einen WIRKLICH guten Grund haben, sich darum zu kümmern.
BrianH
14

Um die vorhandenen Antworten auf Ihre Frage zu Konsolen zu verdeutlichen: Sie verfügen nicht über genügend Speicher, um sowohl den Ausgangsstatus als auch den aktuellen Status für größere komplexe Spiele zu speichern.

Ein Spiel kann das Level und den Anfangszustand separat speichern, so dass nur der Zustand wiederhergestellt werden kann, und dies ist sehr wahrscheinlich, was viele Spiele tun. Aber selbst das Streamen wird etwas langsamer sein, als wenn es in Erinnerung geblieben wäre.

Die "beste" Konsole der aktuellen Generation verfügt nur über 512 MB Arbeitsspeicher, der von den CPU-Daten und der Grafik gemeinsam genutzt wird. Das ist winzig. Eines der aktuellen Probleme bei der Entwicklung von Konsolen besteht darin, Spiele zu entwickeln, die mit so wenig Speicher den heutigen Qualitätsstandards entsprechen. Das Zählen von Kilobyte kann besonders kurz vor dem Versanddatum wichtig werden. Das Speichern einer Kopie des Anfangszustands eines Levels ist eine Datenmenge, auf die verzichtet werden kann, sodass mehr Speicher für Dinge verwendet werden kann, die das Spiel während des Spiels interessanter machen, anstatt nur das Neuladen des Levels zu beschleunigen.

Idealerweise verbringt der Spieler mehr Zeit damit, das Spiel zu spielen, als zu sterben und neu zu starten. Daher ist es sinnvoller, für ein besseres Spielerlebnis zu optimieren.

Mit den Konsolen der nächsten Generation und ihren 8 GB Speicher können sich die Dinge drastisch ändern. Oder sie bleiben mit einfach höher aufgelösten Modellen und Materialien und einer großen Anzahl aktiver Objekte im Spiel gleich. Wir werden sehen. Angesichts der Tatsache, dass PC-Spiele in der Regel auf Computer mit 2 GB RAM und 512 MB VRAM abzielen (obwohl viele auf viel größere Werte skaliert werden), sind die 8 GB der neuen Konsolen in Bezug auf die Mindestbasis ziemlich luxuriös. In den kommenden Jahren wird es wahrscheinlich einen Übergang zu Spielen geben, die eine 64-Bit-CPU / OS und 4-8 GB RAM mit 1-2 GB VRAM erfordern. Das Speichern mehrerer Status im Speicher für ein schnelles Snapshot sollte dann viel einfacher sein.

Sean Middleditch
quelle
+1 Fantastische Informationen und eine großartige Erklärung, warum Konsolen beim Nachladen deutlich langsamer sind.
Tom 'Blue' Piddock
7

Ich bin mit der Antwort von Blue nicht einverstanden. Ich glaube nicht, dass es einen technischen Grund gibt, Ebenen nicht zurückzusetzen - ich bin auf keinen Fall auf eine gestoßen. Das Laden von Levels ist fast immer langsamer als das Zurücksetzen von Levels. Tatsächlich fällt es mir schwer, mir einen Zeitpunkt vorzustellen, an dem dies nicht der Fall wäre. In den meisten Fällen könnten Spiele ein sofortiges Laden von Levels bieten, wenn die Entwickler dies wünschen.

Die eigentliche Antwort ist, wie vorgeschlagen, einfacher und schneller. Das wiederholte Laden von Levels ist sowieso etwas, was ein Spiel erfordert, so dass es relativ einfach ist, dies in einen Level-Neustart umzuwandeln. Das Zurücksetzen erfordert komplexe neue Pfade mit einem hohen Potenzial für neue Fehler und Speicherlecks und erfordert eine angemessene Investition an Entwicklerzeit. In einigen Fällen kann es auch zu Speicherbeschränkungen kommen. Da Spiele nur selten mit viel Entwicklerzeit entwickelt werden, neigen Elemente wie das Zurücksetzen von Leveln leider dazu, auf dem Weg dorthin verloren zu gehen, insbesondere wenn die Spielarchitektur nicht die beste ist, die überhaupt erstellt wurde.

Ich nehme an, man könnte eine Situation finden, in der "Zurückspulen" zum Zurücksetzen erforderlich war, in der Tat müssen die meisten Spiele nur den ursprünglichen Zustand speichern, ein wirksames Mittel zum vollständigen Zurücksetzen auf diesen Zustand für zurückgehaltene Objekte und ein Mittel zum Kennzeichnen von Objekten bereitstellen Beim Zurücksetzen abbrechen. Spielstatusinformationen müssen ebenfalls gespeichert und wiederhergestellt werden. Diese Art von Informationen ist in der Regel im Vergleich zu den Anforderungen für eine gesamte Ebene relativ speicherarm. Dadurch entfällt das langsame und teure Laden von Daten von der Festplatte (einschließlich großer Elemente wie Texturen und Modelle) und es wird eine schnelle ersetzt -Erinnerungspass der Szene.

Jack Aidley
quelle
3
Vielleicht möchten Sie sich Seans Antwort
ansehen,
2

Um auch bei begrenztem Arbeitsspeicher große Level oder nahtlose Level-Spiele zu ermöglichen (der Arbeitsspeicher ist immer zu klein. Die Frage ist, ob Sie zuerst das RAM-Limit oder die Grafikkarte erreichen), gibt es eine andere Strategie:

Habe nur den Teil des Levels im Speicher, den der Spieler gerade benötigt oder in ein paar Sekunden benötigt. Modelle, Texturen, Klangbeispiele, ..., die wahrscheinlich nicht mehr benötigt werden, werden aus dem Speicher entfernt.

Dungeon Siege kommt einem in den Sinn (Entwickler behaupteten einmal, die Speicherverwaltung benötige mehr Rechenleistung als das eigentliche Gameplay), die meisten MMORPGs tun dies, Shooter mit einer offenen Umgebung müssen dies tun ... In diesen Fällen ist der Beginn der Level (oder sogar ein Respawn-Punkt vor 30 Sekunden) ist möglicherweise nicht mehr (vollständig) im Speicher.

Oft ist ein erneutes Aufladen der einfachste, billigste und vielleicht schnellste Weg.

Bearbeiten: Hier ist ein Artikel über die Lademechanismen von Dungeon Siege: The Continuous World of Dungeon Siege

linac
quelle
Guter Punkt, ich habe nicht über kontinuierliche oder nahtlose Ebenen nachgedacht. Das würde ein völlig anderes Levelladesystem erfordern.
Tom 'Blue' Piddock
2

Angesichts der hervorragenden Antworten von Sean und Blue in Bezug auf Einschränkungen der physischen Plattform und Pro-Con-Entscheidungen werde ich einen Kommentar auf einen anderen Ansatz ausweiten:

Warum sollten Sie wahrscheinlich nur das Level komplett neu laden

Ihr loadLevel () -Aufruf funktioniert also einwandfrei, yay! Sie streamen Dateiinformationen auf einer Ebene ein und erstellen schrittweise die darauf basierende Welt, erstellen Objekte und laden Texturen und Sounds, während Sie unterwegs sind. Dann, wenn alles erledigt ist - oder "genug" getan, um das Spiel beginnen zu lassen, rufst du startPlay () auf und deine Welt wird enthüllt und deine Musik beginnt zu spielen.

Wenn Sie mit dem Level fertig sind, zum Menü wechseln oder das Spiel beenden, rufen Sie unloadLevel () auf, um alle Ressourcen und den Speicher freizugeben, an denen Sie festgehalten haben, um ein reibungsloses Erlebnis zu ermöglichen.

Was passiert nun, wenn Sie eine Funktion "Ebene neu starten" hinzufügen möchten? Gut...

unloadLevel(currentLevel);
loadLevel(currentLevel);
startPlay();

Und du bist fertig! Kein neuer Code, höchstens ein paar einfache Funktionsaufrufe, und all das haben Sie bereits geschrieben und getestet, sodass Ihre neue, glänzende Neustart-Funktion jetzt von Ihrer Liste gestrichen ist und wahrscheinlich nie wieder vorkommt - cruftloser, nicht rostender Code ist die beste Art! Verschieben Sie den Code in eine restartCurrentLevel () -Funktion, und Sie können den Code wegklappen und ihn nie wieder anzeigen - möglicherweise, nachdem Sie sichergestellt haben, dass eine Ebene zum Neustarten vorhanden ist :)

Aber dann fragt man sich, ob dies keine Verschwendung ist, wenn man Dinge entlädt, die man sowieso gerade neu laden möchte. Nun, wenn Ihr Level und Ihre Ressourcen klein sind, müssen Sie höchstens ein paar Sekunden Ladezeit gewinnen, wenn "Neustart" auch auf langsamen Systemen (und möglicherweise älteren Smartphones) aufgerufen wird. Wen interessiert das? "Vorzeitige Optimierung", Sie haben bessere Dinge mit Ihrer Zeit zu tun.

Ah, aber jetzt wachsen deine Levels und deine Texturen werden detaillierter und der Soundtrack wurde in 512 kbps mit separaten Kanälen für jede Stimme und Musikebene gerippt (es schien zu der Zeit eine gute Idee zu sein, obwohl du dich nicht erinnern kannst warum). ..) und etwas über "zustandsabhängige mehrdimensionale Fouriertransformationsmatrizen mit Voxel-Raytracing", von dem Sie denken, dass es komplett erfunden und nicht real ist, und das Laden des Pegels dauert eine Weile und beginnt Sie zu ärgern. Sie haben sogar mit echten Leuten getestet und sie zeigen tatsächlich eine Abneigung gegen die Wartezeiten, da es schlimmer ist als bei ähnlichen Spielen (Sie erwarten nicht, dass eine MMORPG-Hauptstadt mit 100 Spielern in <2 Sekunden vollständig geladen wird, oder?). und es ist ein Problem.

Wie optimieren Sie? Nun, wenn Ebene re -loading ein Problem ist, ist dann nicht eben Laden ein Problem? Wenn du denkst, dass es nur ein Neuladen ist, warum um alles in der Welt laden die Leute dein Level so viel öfter neu, als sie das Level überhaupt nur laden? Klingt nach einem Spielproblem, nicht nach einem Code-Engineering-Problem. Wer glaubt, dass es Spaß macht, ein Level immer und immer wieder neu zu laden, und wünscht sich, es wäre schneller als völlig vermeidbar ?

Beheben Sie zuerst das eigentliche Problem!

Nehmen wir jedoch an, Ihr Spiel ist so konzipiert, dass Sie es zumindest gelegentlich neu starten müssen und die Ladezeit so lang ist, dass es nur einmal ausgeführt werden kann und absolut unvermeidlich ist, aber Sie möchten nicht, dass Sie es erneut ausführen müssen. Was für ein Spiel ist das überhaupt? Scheint ein komisches Problem zu sein ... vielleicht ein hochauflösendes Portal-ähnliches Spiel, bei dem davon ausgegangen wird, dass Sie das Rätsel wiederholt durcheinander bringen werden?

Zuallererst muss man sich darüber im Klaren sein, dass dies nicht trivial sein wird. Sie müssen völlig neuen, ungetesteten Code schreiben, der "zustandsabhängig" ist, sodass Sie möglicherweise nicht einmal wissen, was zwischen Levelspielen wiederverwendet wird oder nicht. Gibt es zufällige Elemente, Spawns, variable Texturen (tragen deine Skelette manchmal nur Rüstungen?) Oder andere sich ändernde Elemente in deinem Level? Gibt es Dinge, die je nach Spieler variieren, wie z. B. ein Outfit oder ein angepasstes Modell oder Farben / Türen / Fallen?

Sie werden Vergleiche anstellen und viele davon. Sie durchlaufen Level-Elemente und vergleichen, was gerade benötigt wird, mit dem, was gerade geladen wird (was tun Sie mit Sachen, die für das letzte Level geladen wurden, aber nicht für dieses - lassen Sie sie los oder warten Sie, um eine Zukunft zu verhindern Belastung?). Wenn dies wirklich eine große Sache für Ihr Spiel ist, werden Sie wahrscheinlich Ihren Lade- / Entladecode ändern wollen, um zu sehen, ob etwas bereits geladen ist, bevor Sie es laden (wodurch der Code mehrzweckfähig wird, aber möglicherweise neue Fehler in zuvor funktionierende Features und Funktionen einführt) Ressourcen, die in naher Zukunft nicht mehr verwendet werden sollen, vorsichtig freigeben). Seufzer.

Egal was Sie tun, selbst wenn Ihr Spiel einfach ist, werden Sie in undurchsichtige Fehler geraten, die auf dem Level / Player-Status basieren, als ein Level neu gestartet wurde, das Ihnen beim ersten Laden des Levels nicht passiert. So können Sie Spieleupdates mit folgendem Text schreiben:

"Wenn Sie einen Helm auf eine Bombe auf ein Plättchen fallen lassen, auf dem eine Rakete explodiert ist, die sich ebenfalls innerhalb eines Bereichs von 200 Pixeln um Wasser befindet, werden Ihre Spieldaten nicht mehr beschädigt und das Spiel stürzt nicht mehr ab."

Der wahre Grund, warum sich die meisten Spiele nicht darum kümmern

Ist Ihnen jemals aufgefallen, dass die meisten Menschen ihre vorhandenen Wände nur streichen oder trocken bauen, anstatt sie auf eine Unterlage abzustreifen, oder Teppiche direkt auf Hartholzböden legen, anstatt sie hochzuziehen?

Die einfache Tatsache ist, dass es mehr Arbeit für minimale Belohnung ist. Malen über Ihre vorhandenen Wände funktioniert die meiste Zeit einwandfrei, und der Wert, Hartholzböden abzureißen, ist oft minimal oder nicht vorhanden.

Dasselbe gilt für Software, von Spielen bis hin zu Multimedia-Power-Point-Präsentationen. Wenn Sie sich nur ein paar Sekunden vom Ladebildschirm abschneiden und 1% Ihrer Zeit damit verbringen, sich das anzuschauen, ist dies am einfachsten, oder Sie werden es tun eine sehr schlechte Rendite für Ihre investierte Zeit.

Die meisten Spiele stören also nicht, und ich habe Probleme, an sehr viele Spiele zu denken, bei denen das Laden von Bildschirmen ein ansonsten gutes Spiel weniger lohnenswert machte, mit Ausnahme einiger extremer Beispiele. Die extremen Beispiele sind, wo die Optimierung für ein schnelleres Laden von Levels Sinn macht, und das sind winzige Bruchteile von Spielen, die es in die Öffentlichkeit schaffen, und wahrscheinlich sogar kleinere Bruchteile von Spielen, die niemand jemals sieht, weil sie niemals veröffentlicht werden.

BrianH
quelle
0

Weil es schwieriger ist, das gegenteilige Verhalten zu entwickeln, bei dem die statischen Spieldaten (wie Texturen, Geologieinformationen, nicht betroffene Mobs) im Speicher bleiben und nur die dynamischen Daten (wie Spielerposition, Spielerstatistik, Queststatus, Inventar) neu geladen werden. .

Da es mehr Geld und Zeit kostet, tun dies Spieleentwickler im Allgemeinen nicht.

Xtro
quelle
Dies gilt nicht für Situationen, in denen das Gegenteil aufgrund des Spielgenres oder der individuellen Anforderungen eintreten muss. Wie Prince of Persia, das den Spielstatus aufzeichnen muss, um eine bestimmte Spielmechanik zu verwenden, und die Kampfspielbeispiele, die ich angegeben habe, müssen in der Lage sein, einzelne Zustände von Gegenständen, Levels und Charakteren neu zu laden, um sie auf die Hälfte des Spielstarts zurückzusetzen die nächste Runde oder starten Sie das Spiel neu, um das nächste Spiel zu starten. Diese werden benötigt, um die Anforderungen des jeweiligen Spiels zu erfüllen. Daher müssen Spieleentwickler mehr Zeit und Geld aufwenden.
Tom 'Blue' Piddock
Wenn in einem bestimmten Spiel das Gegenteil eintritt, ist die obige Frage für dieses Spiel ungültig. Weil die Ladezeit in dem Spiel, in dem das Gegenteil vorkommt, schnell sein wird. Ich habe gerade die Frage für die Situation beantwortet, auf die sie zutrifft (das sind die Spiele, die das gesamte Level von Grund auf neu
laden
Wenn das Gegenteil der Fall ist, bei dem die Prämisse der Frage hätte eintreten können, ist es immer wert, darauf hingewiesen zu werden und warum. Das Auslassen von Informationen oder Details darüber, warum eine Situation oder Lösung entstanden ist, ist niemals von Vorteil. Zu sagen, dass es keinen Bedarf für Details gibt, ist ein wenig kontraintuitiv, da es überhaupt keine Frage geben würde, wenn die Person nicht nach Details suchen würde. Wenn Sie in der Lage sind, mehr Details zu liefern, bemühen Sie sich immer, dies zu tun, da dies anderen hilft, mehr über ein Thema als Ganzes zu lernen und das Nötigste aus dem Deatil zu entnehmen.
Tom 'Blue' Piddock
Sie reagieren also auf meine erste Antwortzeile, in der es um "keine Notwendigkeit für Details" geht, oder? Wenn ich diese Linie entferne, würdest du -1 Punkt zurücknehmen?
Xtro
Lustigerweise - ja. Entmutigen Sie niemals Details, bei denen es möglich ist, sie zu geben, und Sie werden im Allgemeinen feststellen, dass Ihre Antworten eine viel größere Wertschätzung erfahren.
Tom 'Blue' Piddock