Снова здравствуйте, друзья! В данный момент работаю над второй версией конструктора Noobster, встал вопрос упаковки всех игровых ресурсов в единый файл, плюс на днях один из пользователей прислал мне сообщение с просьбой помочь с защитой игровых данных.
Я создал программу, которая записывает несколько файлов в 1.
После того как все запаковано, с помощью специальных скриптов можно на лету "выдергивать" из архива необходимые ресурсы и загружать в игру.
Пример состоит из двух частей:
1) Программа для запаковки ресурсов
2) Собственно пример того как загружать их в игру
Программа работает следующим образом:
Сначала она записывает всю информацию из списка файлов в бинарник, затем по очереди открывает исходные файлы и записывает их туда же.
В итоге получается один толстый *.pak файл, содержащий в себе все ресурсы и информацию о их количестве, рамере и названиях.
Чтобы загрузить ресурсы в игру необходимо сделать следущее:
Загрузить информацию из *.pak файла при помощи функции pak_load_data("имя файла")
Она возвращает id листа, содержащего всю информацию.
Затем в любой момент игры, когда вам нужно загрузить ресурс - просто используйте одну из фунций:
pak_background_replace(pack_id,back,fname,remove,smooth);
pak_sprite_replace(pack_id,sprite,fname,imagenumb,remove,smooth,xorig,yorig);
pak_sound_replace(pack_id,sound,fname,kind,preload);
Первым аргументом всегда будет id листа с информацией, остальные такие-же как у оригинальных функций.
Вот в общем-то и все, если у вас есть вопросы или комментарии - пишите прямо тут
Надеюсь этот способ будет полезен.
Программа:
Пример:
Внимание! Считывание и запись файлов в ГМ работают не самым быстрым образом, не запаковывайте файлы весом более 2ух мегабайт (напр. mp3 звуковое сопровождение) - для защиты больших файлов есть другие методы.
Тем не менее этот способ идеально подходит для хранения спрайтов, фонов и звуков (*.wav, *.midi, *.ogg)