LINUX.ORG.RU

Объединить контент в один файл

 ,


0

2

Есть набор разрозненных файлов, составляющих данные игры: текстуры, звуки, картинки фона, видео и т.п. Распространять это гораздо проще, когда речь идет об одном файле (скопировал - передал - вставил), чем в директории.

Собственно, какие посоветуете механизмы объединения кучи файлов в один?

Варианты.

1. Zip (7z, tar.gz) архив. Все отлично, но две проблемы:

  • ожидание разархивирования при запуске программы
  • доп. расход места на диске

2. Архивы без сжатия (типа tar). В этом случае можно даже не разархивировать в чистом виде в файловую систему, а просто читать нужный кусок файла и парсить как файл.

Проблема только в том, что Qt (а разрабатываемая игра пишется на нем) tar не понимает.

3. Хранить файлы в Sqlite в виде BLOB. Qt поддерживает, все четко, но https://www.sqlite.org/intern-v-extern-blob.html говорит о том, что производительность будет проседать при чтении больших файлов.

Что подскажете?

★★

У ТАРа простой формат, сам реализуй.

panter_dsd ★★★★ ()
Ответ на: комментарий от anonymous

Действительно, совершенно вылетело из головы. Благодарю за идею.

bk_ ★★ ()

Файл с файловой системой, передаешь один файл, монтируешь и все что внутри доступно сразу.

anonymous ()

Что мешает разархивировать при инсталляции?

anonymous ()

zip, т.к. самый быстрый при распаковке и распространённый, доп. расхода места на диске нет - распаковываешь в буфер, грузишь звук/текстуру, повторно используешь буфер и т.д., есть метод store
tar.* в принципе не подходит, т.к. это один сжатый поток, т.е. для доступа к файлу в конце образа нужно будет его весь распаковывать

frame ★★★ ()
Ответ на: комментарий от deadNightTiger

Виндузятникам-геймерам не привыкать :-) монтируй через fuse

anonymous ()

Пропустить файлы через file2c или xxd и вставить получившуюся фигню в исходник.

Можно еще через .S файл делать

globl some_file1:
.incbin "some_file1"
globl some_file2:
.incbin "some_file2"
etc
и потом линковать его. Тогда это не будет завязано на Qt

SZT ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.