Game Asset Storage: Archive vs Individual files [cerrado]

8

Como estoy en el proceso de crear un juego 3D c ++ y me preguntaba qué sería más beneficioso cuando se trata de activos del juego con respecto al almacenamiento. He visto que algunos juegos tienen un solo archivo de activos comprimido con todo lo que contiene y otros con muchos pequeños archivos comprimidos.

Si tuviera muchos archivos individuales, no necesitaría cargar un archivo grande a la vez y usar memoria, pero el código tendría que buscar archivos cuando se carga el nivel para encontrar todos los archivos correctos necesarios.

No se necesita buscar archivos cuando se trata de un archivo grande, pero de nuevo, ¿qué pasa con todos los activos que no se necesitan actualmente que se cargarían con un archivo?

También podría tener un archivo de activos para cada nivel, pero entonces, ¿cómo trato con los activos compartidos?

Esto me ha estado molestando por un tiempo, así que dígame qué otras ventajas y desventajas existen para cualquier forma de hacer las cosas.

David Colson
fuente
77
Incluso con un archivo grande, no carga todo en la memoria, simplemente lo carga desde el archivo cuando lo necesita.
Kikaimaru

Respuestas:

9

Desde los puntos de rendimiento y almacenamiento, el archivo de un solo recurso es una solución más beneficiosa (sin embargo, en la práctica no siempre es realmente notable). El inconveniente es que es más difícil de actualizar y administrar.

En mi opinión, no es tan importante por lo general, solo use el que sea más conveniente para usted, en realidad es solo un detalle técnico que no debe considerarse hasta que realmente note algunos problemas con él.

Petr Abdulin
fuente
66
+1, haga lo que sea más fácil desde el punto de vista del desarrollador hasta que se demuestre que causa un problema
John McDonald
4

Los archivos desempaquetados hacen que sea más fácil para el usuario editar y reemplazar archivos, haciendo que el juego sea mucho más fácil de modificar. Esto puede verse como una ventaja o desventaja, dependiendo de su actitud hacia el modding.

Desde una perspectiva de rendimiento: cargar muchos archivos pequeños desde el disco duro puede ser mucho más lento que uno grande y simple, porque la desfragmentación de un sistema de archivos generalmente intentará evitar dividir archivos grandes, pero muchos archivos pequeños en el mismo directorio puede estar disperso por todo el disco. Entonces, cuando carga miles de archivos pequeños, es posible que la unidad tenga que buscar mucho. Pero, por otro lado, el uso de archivos puede hacer que sea más costoso obtener archivos individuales desde el interior de los archivos (dependiendo de cómo estén estructurados internamente), por lo que debe intentar agrupar los archivos que generalmente se necesitan juntos.

Desde una perspectiva de mantenimiento: a menos que tenga una herramienta para realizar actualizaciones incrementales a sus archivos de paquetes, sus parches se harán mucho más grandes cuando tenga que reemplazar paquetes completos para parchear un archivo individual.

Philipp
fuente
1

Por lo general, un paquete sería más rápido, sin embargo, no siempre es tan conveniente, como dijo Petr. Sin embargo, una forma de combatir eso es hacer que su motor pueda cargar archivos sueltos y empacar archivos. Luego, en modo de depuración, cargue archivos sueltos, y en modo de liberación, cargue desde un paquete

CobaltHex
fuente