Da ich gerade dabei bin, ein 3D-C ++ - Spiel zu erstellen, habe ich mich gefragt, was beim Umgang mit Spiel-Assets in Bezug auf die Speicherung vorteilhafter wäre. Ich habe gesehen, dass einige Spiele eine einzelne Asset-Datei haben, die mit allem darin komprimiert ist, und andere mit vielen kleinen komprimierten Dateien.
Wenn ich viele einzelne Dateien hätte, müsste ich nicht sofort eine große Datei laden und Speicher verbrauchen, aber der Code müsste beim Laden der Ebene nach Dateien suchen, um alle erforderlichen Dateien zu finden.
Beim Umgang mit einer großen Datei ist keine Dateisuche erforderlich, aber was ist mit all den derzeit nicht benötigten Assets, die mit der einen Datei geladen werden?
Ich könnte auch eine Asset-Datei für jede Ebene haben, aber wie gehe ich dann mit gemeinsam genutzten Assets um?
Das hat mich schon eine Weile gestört, also sag mir, welche anderen Vor- und Nachteile es gibt, wenn ich etwas mache.
quelle
Antworten:
Sowohl aus Leistungs- als auch aus Speichergründen ist eine einzelne Ressourcendatei eine vorteilhaftere Lösung (in der Praxis ist sie jedoch nicht immer wirklich erkennbar). Der Nachteil ist, dass es schwieriger ist, zu aktualisieren und zu verwalten.
IMO ist es normalerweise nicht so wichtig, nur die Verwendung, die für Sie bequemer ist, es ist wirklich nur ein technisches Detail, das nicht berücksichtigt werden sollte, bis Sie wirklich einige Probleme damit bemerken.
quelle
Entpackte Dateien erleichtern dem Benutzer das Bearbeiten und Ersetzen von Dateien, wodurch das Spiel viel moddingfreundlicher wird. Dies kann je nach Ihrer Einstellung zum Modding als Vorteil oder Nachteil angesehen werden.
Aus Sicht der Leistung: Das Laden vieler kleiner Dateien von der Festplatte kann viel langsamer sein als das Laden einer großen Datei, da bei der Defragmentierung eines Dateisystems normalerweise versucht wird, das Aufteilen großer Dateien, aber vieler kleiner Dateien zu vermeiden Das gleiche Verzeichnis kann auf der gesamten Festplatte verteilt sein. Wenn Sie also Tausende kleiner Dateien laden, muss das Laufwerk möglicherweise viel suchen. Andererseits kann die Verwendung von Archiven das Abrufen einzelner Dateien aus den Archiven teurer machen (abhängig davon, wie Ihre Archive intern strukturiert sind). Daher sollten Sie versuchen, Dateien zu gruppieren, die normalerweise zusammen benötigt werden.
Aus Wartungssicht: Wenn Sie nicht über ein Tool zum inkrementellen Aktualisieren Ihrer Paketdateien verfügen, werden Ihre Patches viel größer, wenn Sie ganze Pakete ersetzen müssen, um eine einzelne Datei zu patchen.
quelle
Normalerweise ist ein Paket schneller, aber es ist nicht immer so bequem, wie Petr sagte. Eine Möglichkeit, dem entgegenzuwirken, besteht darin, Ihre Engine in die Lage zu versetzen, lose Dateien zu laden und Dateien zu packen. Laden Sie dann im Debug-Modus lose Dateien und im Release-Modus aus einem Paket
quelle