Поскольку я нахожусь в процессе создания 3D-игры на C ++, мне было интересно, что будет более полезным при работе с игровыми ресурсами в отношении хранилища. Я видел, что в некоторых играх есть один файл ресурсов, сжатый со всем, что есть в нем, и другие с большим количеством маленьких сжатых файлов.
Если бы у меня было много отдельных файлов, мне не нужно было бы загружать большой файл сразу и использовать память, но код должен был бы выполнять поиск файлов, когда уровень загружается, чтобы найти все нужные файлы.
При работе с одним большим файлом поиск файлов не требуется, но, опять же, как насчет всех ресурсов, которые в данный момент не нужны, которые будут загружены с одним файлом?
Я мог бы также иметь файл актива для каждого уровня, но тогда как мне обращаться с общими активами
Это беспокоило меня какое-то время, поэтому расскажите, какие еще есть преимущества и недостатки в любом из способов ведения дел.
источник
Ответы:
И с точки зрения производительности, и с точки зрения хранения один файл ресурсов является более выгодным решением (однако на практике это не всегда заметно). Недостатком является то, что сложнее обновлять и управлять.
ИМО, как правило, это не так важно, просто используйте более удобный для вас способ, это просто техническая деталь, которую не следует рассматривать, пока вы действительно не заметите некоторые проблемы с ней.
источник
Распакованные файлы упрощают редактирование и замену файлов, что делает игру более удобной для моддинга. Это может рассматриваться как преимущество или недостаток, в зависимости от вашего отношения к моддингу.
С точки зрения производительности: загрузка большого количества маленьких файлов с жесткого диска может быть намного медленнее, чем одного большого, потому что дефрагментация файловой системы обычно пытается избежать разбиения больших файлов, но много маленьких файлов в один и тот же каталог может быть разбросан по всему диску. Поэтому, когда вы загружаете тысячи маленьких файлов, накопителю, возможно, придется много искать. Но с другой стороны, использование архивов может повысить стоимость получения отдельных файлов из архивов (в зависимости от внутренней структуры ваших архивов), поэтому вам следует попытаться сгруппировать файлы, которые обычно необходимы вместе.
С точки зрения сопровождения: Если у вас нет инструмента для инкрементного обновления ваших файлов пакетов, ваши патчи станут намного больше, когда вам придется заменять целые пакеты для исправления отдельного файла.
источник
Как правило, пакет будет быстрее, однако это не всегда так удобно, как сказал Петр. Однако один из способов борьбы с этим - сделать так, чтобы ваш движок мог загружать свободные файлы и упаковывать файлы. Затем в режиме отладки загрузите свободные файлы, а в режиме выпуска загрузите из пакета
источник