Pourquoi les gros fichiers sont-ils meilleurs que les petits fichiers pour les consoles?

18

Pourquoi les développeurs de jeux sur console utilisent-ils de gros fichiers pour stocker des données de jeu au lieu de petits fichiers comme sur PC? Moins de flux en mémoire? Besoin d'accéder plusieurs fois à l'arborescence des fichiers? Autre raison?

Triang3l
la source
Peut-être un analogue dans le monde du web: CSS Sprites
Nick T
Les sprites CSS sont un inconvénient désagréable d'utiliser toujours ce vieux HTTP 1.1 rouillé qui rend apparemment les serveurs incapables d'envoyer de nombreuses ressources avec une seule connexion. Je souhaite une nouvelle norme.
Kos
1
@Kos Votre souhait a été exaucé , mais malheureusement pas encore mis en œuvre.
phihag
Merci pour cela! Je veux leur faire un gâteau pour qu'ils travaillent plus vite.
Kos

Réponses:

37

Avoir un seul gros fichier présente quelques avantages pour les performances, quelle que soit la plate-forme. De nombreux jeux PC utilisent également de gros fichiers.

  • Vous pouvez mettre en cache manuellement le décalage de chaque fichier dans le gros fichier, pour éviter d'avoir à lire les entrées du répertoire du système de fichiers (ce qui peut impliquer plusieurs recherches par fichier ouvert si vous manquez le cache).

  • Vous obtenez un contrôle total de l'ordre des données dans le fichier, vous pouvez donc l'organiser pour minimiser le besoin de recherches lentes.

  • La compression des données est généralement plus efficace sur un seul gros fichier que sur des fichiers individuels.

Notez qu'éviter les recherches est très efficace pour accélérer les temps de chargement. Un disque dur typique peut avoir un temps de recherche de 10 ms et un taux de transfert de 100 Mo / s. Disons que vous devez charger 100 fichiers de shader avec une taille totale de 1 Mo. Si vous devez faire une recherche pour chacun d'eux, il faudrait une seconde pour les charger tous. Avec une seule recherche, vous regardez à 20 ms pour tous les charger.

Bien sûr, toutes les consoles n'ont pas de disques durs et les lecteurs optiques ont des performances de recherche encore pires, de sorte que ces shaders peuvent prendre 5 secondes ou plus pour charger un DVD lors de la recherche. Les consoles ont également beaucoup moins de mémoire à utiliser comme cache qu'un PC, elles ont donc tendance à charger les données plus souvent.

Adam
la source
9
Très belle réponse. Au point, avec des exemples de recherche d'un fichier contre plusieurs fichiers.
William Mariager
1
De plus, pour les jeux en ligne compétitifs, il est beaucoup, beaucoup plus rapide (et utilise beaucoup moins d'espace disque) de vérifier que le joueur n'a pas falsifié un seul gros fichier, que de valider individuellement des milliers de petits fichiers.
Trevor Powell
Mot clé Google: système de fichiers virtuel. De plus, le besoin bien exprimé de systèmes de fichiers virutaux semble indiquer que les systèmes de fichiers non virtuels pourraient utiliser un peu plus de polissage :(.
Kos
Cependant, cela est mauvais pour ceux d'entre nous qui utilisent des SSD - nous ne pouvons pas déplacer les éléments rarement chargés sur les disques durs, car toutes les données du jeu sont dans un gros fichier. Dis pour WoW je ne vais jamais en Outreterre; Je voudrais simplement déplacer ce fichier hors du SSD. Pas si faisable pour dire ... CoD 4.
Mircea Chirea
6

Outre la très bonne réponse donnée par Adam, je voudrais également souligner quelques autres facteurs importants:

  1. Moins vous avez de fichiers, plus le déploiement de votre application est facile. Cela est particulièrement vrai si vous souhaitez déployer votre application sur des plateformes mobiles, comme iOS, Android ou Windows Phone. Même si dans le cas de Windows Phone, vous pouvez toujours avoir autant de fichiers que vous le souhaitez, car les fichiers XAP, utilisés pour le déploiement, ne sont qu'une archive zip, c'est

  2. Le fait d'avoir tous vos actifs dans un seul fichier garantit qu'ils sont tous téléchargés / lus "en morceaux" . De nombreux joueurs vous excuseront un délai notable pour télécharger des éléments ou les déballer avant le début du jeu, mais ils ne seront pas indulgents tant qu'ils feront face à des pauses même subtiles pendant le jeu. Bien sûr, vous pouvez pré-mettre en cache vos ressources dans la RAM, mais les charger "en morceaux" est toujours plus facile à cet effet que de les charger par fichier.

Alexander Galkin
la source
J'ai fait le développement Android et BlackBerry et je n'ai jamais rencontré de problème avec trop de petits fichiers. Cependant, je n'étais pas au courant des avantages des fichiers plus volumineux jusqu'à présent ...
ADB