Почему разработчики консольных игр используют большие файлы для хранения игровых данных вместо маленьких файлов, как на ПК? Меньше потоков в памяти? Вам нужно получить доступ к дереву файлов много раз? Другая причина?
Почему разработчики консольных игр используют большие файлы для хранения игровых данных вместо маленьких файлов, как на ПК? Меньше потоков в памяти? Вам нужно получить доступ к дереву файлов много раз? Другая причина?
Ответы:
Наличие одного большого файла имеет несколько преимуществ для производительности, независимо от платформы. Многие игры для ПК тоже используют большие файлы.
Вы можете вручную кэшировать смещение каждого файла в большом файле, чтобы избежать необходимости чтения записей каталога файловой системы (что может включать в себя несколько поисков для каждого открытого файла, если вы пропустите кеш).
Вы получаете полный контроль над порядком данных в файле, так что вы можете организовать его так, чтобы минимизировать необходимость в медленном поиске.
Сжатие данных обычно более эффективно для одного большого файла, чем для отдельных файлов.
Обратите внимание, что избегание поисков очень эффективно для ускорения времени загрузки. Типичный жесткий диск может иметь время поиска 10 мс и скорость передачи 100 МБ / с. Допустим, вам нужно загрузить 100 шейдерных файлов общим объемом 1 МБ. Если вам нужно выполнить поиск каждого из них, потребуется всего одна секунда, чтобы загрузить их все. С одним поиском вы смотрите на 20 мс, чтобы загрузить все из них.
Конечно, не все консоли имеют жесткие диски, а оптические приводы имеют еще худшую производительность поиска, поэтому этим шейдерам может потребоваться 5 или более секунд для загрузки DVD при поиске. Также у консолей гораздо меньше памяти для использования в качестве кеша, чем у ПК, поэтому они склонны загружать данные чаще.
Помимо очень хорошего ответа Адама, я также хотел бы указать на некоторые другие важные факторы:
Чем меньше у вас файлов, тем проще развертывание приложения. Это особенно верно, если вы хотите развернуть свое приложение на мобильных платформах, таких как iOS, Android или Windows Phone. Даже если в случае Windows Phone у вас все равно может быть столько файлов, сколько вы хотите, поскольку XAP-файлы, используемые для развертывания, являются просто zip-архивом, это
Наличие всех ваших активов в одном файле гарантирует, что все они будут загружены / прочитаны "по частям" . Многие геймеры будут извинять вас за заметную задержку загрузки ресурсов или распаковки их перед началом игры, но они не будут потворствовать своим желаниям, пока они сталкиваются с даже незначительными паузами во время игры. Конечно, вы можете предварительно кэшировать свои ресурсы в оперативной памяти, но загрузить их «по частям» для этой цели все же проще, чем загружать их отдельно для каждого файла.