Perché i file di grandi dimensioni sono migliori dei file di piccole dimensioni per console?


18

Perché gli sviluppatori di giochi per console utilizzano file di grandi dimensioni per archiviare i dati di gioco anziché file di piccole dimensioni come su PC? Meno flussi in memoria? Devi accedere all'albero dei file più volte? Un'altra ragione?


Forse un analogo nel mondo web: CSS Sprites
Nick T

Gli sprite CSS sono un brutto svantaggio di utilizzare ancora quel vecchio arrugginito HTTP 1.1 che apparentemente rende i server incapaci di inviare molte risorse con una singola connessione. Vorrei un nuovo standard.
Kos,

1
@Kos Il tuo desiderio è stato esaudito , anche se sfortunatamente non è stato ancora realizzato.
phihag,

Grazie per questo! Voglio cuocere loro una torta in modo che funzionino più velocemente.
Kos,

Risposte:


37

Avere un singolo file di grandi dimensioni ha alcuni vantaggi in termini di prestazioni, indipendentemente dalla piattaforma. Molti giochi per PC usano anche file di grandi dimensioni.

  • È possibile memorizzare manualmente nella cache l'offset di ciascun file all'interno del file di grandi dimensioni, per evitare la necessità di leggere le voci della directory del file system (che può comportare più ricerche per file aperte se si perde la cache).

  • Ottieni il pieno controllo dell'ordine dei dati all'interno del file, in modo da poterlo organizzare per ridurre al minimo la necessità di ricerche lente.

  • La compressione dei dati è generalmente più efficace su un singolo file di grandi dimensioni, rispetto ai singoli file.

Si noti che evitare le ricerche è molto efficace per accelerare i tempi di caricamento. Un tipico disco rigido potrebbe avere un tempo di ricerca di 10 ms e una velocità di trasferimento di 100 MB / s. Supponiamo che sia necessario caricare 100 file shader con una dimensione totale di 1 MB. Se devi fare una ricerca per ognuno, ci vorrà un secondo per caricarli tutti. Con una sola ricerca stai guardando 20ms per caricarli tutti.

Ovviamente non tutte le console hanno dischi rigidi e le unità ottiche hanno prestazioni ancora peggiori, quindi quegli shader potrebbero impiegare 5 o più secondi per caricare un DVD durante la ricerca. Inoltre le console hanno molta meno memoria per l'uso come cache rispetto a un PC, quindi tendono a caricare i dati più spesso.


9
Risposta molto bella. Al punto, con esempi di ricerca di un file rispetto a più file.
William Mariager,

1
Inoltre, per i giochi online competitivi, è molto, molto più veloce (e utilizza molto meno spazio su disco) per verificare che il lettore non abbia manomesso un singolo file enorme, piuttosto che convalidare individualmente migliaia di piccoli file.
Trevor Powell,

Parola chiave di Google: file system virtuale. Anche la ben nota necessità di file system virutali sembra indicare che i file system non virtuali potrebbero usare un po 'più di lucidatura :(.
Kos

Tuttavia, questo è un male per quelli di noi che usano SSD - non possiamo spostare roba caricata raramente su HDD, perché tutti i dati di gioco sono all'interno di un file di grandi dimensioni. Di 'per WoW che non vado mai in Outland; Sposterei quel file dall'SSD. Non così fattibile per dire ... CoD 4.
Mircea Chirea,

6

Oltre all'ottima risposta fornita da Adam, vorrei anche sottolineare alcuni altri importanti fattori:

  1. Il minor numero di file che hai più facile è la distribuzione della tua applicazione. Ciò è particolarmente vero se si desidera distribuire l'applicazione su piattaforme mobili, come iOS, Android o Windows Phone. Anche se nel caso di Windows Phone è ancora possibile avere tutti i file desiderati, poiché i file XAP, utilizzati per la distribuzione, sono solo un archivio zip, è

  2. Avere tutte le risorse in un singolo file garantisce che siano tutte scaricate / lette "in pezzo" . Molti giocatori ti scuseranno di un notevole ritardo per il download di risorse o per la loro decompressione prima dell'inizio del gioco, ma rimarranno indulgenti fintanto che dovranno affrontare anche pause sottili durante il gioco. Ovviamente puoi pre-memorizzare nella cache le tue risorse nella RAM, ma caricarle "in pezzo" è ancora più facile per questo scopo che caricarle in base al file.


Ho fatto lo sviluppo di Android e BlackBerry e non ho mai avuto problemi con la presenza di troppi file di piccole dimensioni. Fino ad ora non ero a conoscenza del vantaggio di file più grandi ...
ADB,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.