Я недавно сделал базовый клон Space Invaders в C ++, используя платформу Allegro 5. После того, как я закончил, я понял, что у меня было около 10 спрайтов и 13 МБ DLL; у некоторых игроков даже не было mingW DLL, что делало игру очень запутанной.
Как мне упаковать все мои ресурсы таким образом, чтобы я мог легко добавлять и удалять данные в моей игре, а также уменьшать размер ресурсов, размещая их в одном месте? Я использую кодовые блоки.
zziplib
чтобы хранить все мои обычные ресурсы в zip-файле, а затем загрузить их в мою игру через специальный конвейер контента для движка. В начале вы в основном ищете способ загрузки файлов из zip-файла в память, чтобы иметь возможность использовать их в своей игре. Что касается библиотеки DLL это довольно сложно , потому что они , как правило , должны быть в той же директории, что и исполняемый файл илиWindows
илиSystem32
реж который НЕ рекомендуется! Как насчет архива SFX, который нужно извлечьTEMP
и запустить оттуда?Ответы:
Кажется, что здесь есть две проблемы: распространение и упаковка активов.
распределение
Упакуйте все ваше приложение в каталоги по своему усмотрению, затем поместите каталог верхнего уровня в ZIP-файл. Распространите этот файл .zip. Когда ваши пользователи распакуют архив, у них будет папка со всем необходимым для запуска игры.
Как вы размещаете свои файлы?
Я обычно делаю что-то вроде этого:
Упаковка активов
Вы можете использовать какую-то библиотеку сжатия (zlib, lzo), чтобы сжать все ваши игровые ресурсы (указанная выше директория res \) в один файл. Затем вам нужно использовать ту же библиотеку сжатия для извлечения содержимого ваших ресурсов в режиме реального времени, чтобы загрузить свои ресурсы в вашу игру.
Что происходит, когда вы хотите исправить свои активы? Затем вы должны либо: скомпилировать целый новый файл ресурсов и распространить его среди своих пользователей (чтобы они по сути заново загружали то, что у них уже есть, плюс несколько добавлений), либо вам нужно создать программу обновления (другую программу для поддержки). ) и иметь дело с тем, что что-то может пойти не так, и ваш файл активов будет поврежден ...
Честно говоря, это не совсем тривиально, и я не вижу отдачи в вашей ситуации. Простого каталога должно быть достаточно для инкапсуляции ваших 10 спрайтов, и гораздо проще добавлять и исправлять вещи: просто нужно загрузить их в правильный каталог и все готово.
Сборка установщика
Предполагается, что вы ориентируетесь на Windows ... после того, как вы выполнили вышеперечисленное, вы можете приступить к созданию установщика для вашей игры. Я бы во что бы то ни стало избегал методов ClickOnce, которые поддерживает Visual Studio. Это не ваш типичный установщик Windows и поставляется с собственным набором причуд.
Взгляните на этот вопрос StackOverflow - он содержит набор полезных ссылок на пакеты установщика, которые вы можете использовать. Многим людям сегодня нравится WiX . Я никогда не использовал это сам. Кроме того, AdvancedInstaller и InnoSetup являются популярными вариантами.
источник
Возможно, вы сможете статически связать некоторые библиотеки вместо того, чтобы включать библиотеки DLL. Если и как отличается для каждой библиотеки, хотя.
источник
Вы можете использовать программное обеспечение, такое как Enigma, чтобы упаковать ваши файлы и сохранить их в один .dat. Вам нужно будет изменить папку вашего лаунчера.
источник