Warum sind große Dateien für Konsolen besser als kleine?

18

Warum verwenden Entwickler von Konsolenspielen große Dateien zum Speichern von Spieldaten anstelle kleiner Dateien wie auf einem PC? Weniger Streams im Speicher? Müssen Sie mehrmals auf den Dateibaum zugreifen? Anderer Grund?

Triang3l
quelle
Vielleicht ein Analogon in der Web-Welt: CSS Sprites
Nick T
CSS-Sprites sind ein übler Nachteil, wenn man immer noch das alte rostige HTTP 1.1 verwendet, was anscheinend dazu führt, dass Server nicht in der Lage sind, viele Ressourcen mit einer einzigen Verbindung zu senden. Ich wünsche mir einen neuen Standard.
Kos
1
@Kos Ihr Wunsch wurde gewährt , wenn auch leider noch nicht implementiert.
Phihag
Danke dafür! Ich möchte ihnen einen Kuchen backen, damit sie schneller arbeiten.
Kos

Antworten:

37

Eine einzige große Datei zu haben, hat unabhängig von der Plattform einige Vorteile für die Leistung. Viele PC-Spiele verwenden auch große Dateien.

  • Sie können den Versatz jeder Datei in der großen Datei manuell zwischenspeichern, um zu vermeiden, dass Dateisystem-Verzeichniseinträge gelesen werden müssen (was mehrere Suchvorgänge pro geöffneter Datei nach sich ziehen kann, wenn Sie den Cache verpassen).

  • Sie haben die vollständige Kontrolle über die Reihenfolge der Daten in der Datei, sodass Sie sie so anordnen können, dass langsame Suchvorgänge auf ein Minimum reduziert werden.

  • Die Datenkomprimierung ist in der Regel für eine einzelne große Datei effektiver als für einzelne Dateien.

Beachten Sie, dass das Vermeiden von Suchvorgängen beim Beschleunigen der Ladezeiten sehr effektiv ist. Eine typische Festplatte hat möglicherweise eine Suchzeit von 10 ms und eine Übertragungsrate von 100 MB / s. Angenommen, Sie müssen 100 Shader-Dateien mit einer Gesamtgröße von 1 MB laden. Wenn Sie für jedes eine Suche durchführen müssen, dauert es eine Sekunde, bis alle geladen sind. Mit einem einzigen Suchvorgang sehen Sie 20 ms, um alle zu laden.

Natürlich sind nicht alle Konsolen mit Festplatten ausgestattet, und optische Laufwerke weisen eine noch schlechtere Suchleistung auf. Daher können diese Shader beim Suchen fünf oder mehr Sekunden benötigen, um eine DVD zu laden. Konsolen haben auch viel weniger Speicher für die Verwendung als Cache als ein PC, so dass sie dazu neigen, Daten häufiger zu laden.

Adam
quelle
9
Sehr nette Antwort. Auf den Punkt gebracht, mit Beispielen für das Suchen einer Datei gegen mehrere Dateien.
William Mariager
1
Darüber hinaus ist es bei Online-Wettbewerben viel, viel schneller (und benötigt viel weniger Speicherplatz), um sicherzustellen, dass der Player nicht an einer einzigen großen Datei manipuliert hat, als Tausende kleiner Dateien einzeln zu validieren.
Trevor Powell,
Google-Schlüsselwort: Virtuelles Dateisystem. Auch das wohlbekannte Bedürfnis nach virutalen Dateisystemen scheint darauf hinzudeuten, dass nicht-virtuelle Dateisysteme etwas mehr poliert werden könnten :(.
Kos
Dies ist jedoch schlecht für diejenigen von uns, die SSDs verwenden - wir können das selten geladene Material nicht auf Festplatten verschieben, da sich alle Spieldaten in einer großen Datei befinden. Sag für WoW, ich gehe nie in die Scherbenwelt; Ich würde diese Datei einfach von der SSD entfernen. Nicht so zu sagen ... CoD 4.
Mircea Chirea
6

Neben der sehr guten Antwort von Adam möchte ich auch auf einige andere wichtige Faktoren hinweisen:

  1. Je weniger Dateien Sie haben, desto einfacher ist die Bereitstellung Ihrer Anwendung. Dies gilt insbesondere dann, wenn Sie Ihre Anwendung auf mobilen Plattformen wie iOS, Android oder Windows Phone bereitstellen möchten. Auch wenn Sie unter Windows Phone immer noch so viele Dateien haben können, wie Sie möchten, sind XAP-Dateien, die für die Bereitstellung verwendet werden, nur ein Zip-Archiv

  2. Wenn Sie alle Ihre Assets in einer einzigen Datei haben, wird sichergestellt, dass sie alle "in Piece" heruntergeladen / gelesen werden . Viele Gamer entschuldigen sich mit einer spürbaren Verzögerung beim Herunterladen oder Entpacken von Assets vor dem Spiel. Sie sind jedoch nicht nachsichtig, solange sie während des Spiels mit selbst geringfügigen Pausen konfrontiert sind. Natürlich können Sie Ihre Ressourcen vorab im RAM zwischenspeichern, aber das Laden "in Stücken" ist für diesen Zweck immer noch einfacher als das Laden auf Dateibasis.

Alexander Galkin
quelle
Ich habe Android und BlackBerry entwickelt und bin nie auf ein Problem mit zu vielen kleinen Dateien gestoßen. Ich war mir der Vorteile größerer Dateien bisher jedoch nicht bewusst ...
ADB