Четверг, 19 Декабря 2024, 03:46

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Упаковка игровых ресурсов в 1 файл
NeZnayuДата: Понедельник, 24 Января 2011, 14:15 | Сообщение # 1
__танцуй!__
Сейчас нет на сайте
Снова здравствуйте, друзья!

В данный момент работаю над второй версией конструктора 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 листа с информацией, остальные такие-же как у оригинальных функций.

Вот в общем-то и все, если у вас есть вопросы или комментарии - пишите прямо тут wink
Надеюсь этот способ будет полезен.

Программа:

Пример:

Внимание! Считывание и запись файлов в ГМ работают не самым быстрым образом, не запаковывайте файлы весом более 2ух мегабайт (напр. mp3 звуковое сопровождение) - для защиты больших файлов есть другие методы.

Тем не менее этот способ идеально подходит для хранения спрайтов, фонов и звуков (*.wav, *.midi, *.ogg)


CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу


Сообщение отредактировал NeZnayu - Понедельник, 24 Января 2011, 14:23
TheApKoTДата: Понедельник, 24 Января 2011, 22:01 | Сообщение # 2
GML ProgrammeR
Сейчас нет на сайте
Quote (NeZnayu)
будет id листа с информацией

Можете объяснить, каким образом выяснить его ID?


Посоветуйте, где скачать VB6 :C
Glob1Дата: Понедельник, 24 Января 2011, 22:52 | Сообщение # 3
~~Айседор~~
Сейчас нет на сайте
NeZnayu, совет. Как я хотел сделать упаковщик файлов+шифрование.
Ищем две либы: одна для шифрования, другая для сжатия в 7zip архивы. В программе делаем сначало шифрование данных, а потом с помощью либы архивации всё это сжимаем, меняем ТИП на свой и всё. Получить архивация+шифрование. Конечно не суперское, но всё же.
FenMixДата: Понедельник, 24 Января 2011, 23:06 | Сообщение # 4
Независимый игровой журналист
Сейчас нет на сайте
Какой алгоритм упаковки и сжимания?:)
NeZnayuДата: Вторник, 25 Января 2011, 00:19 | Сообщение # 5
__танцуй!__
Сейчас нет на сайте
Quote (Apelsinoviy_kot)
Можете объяснить, каким образом выяснить его ID

Функция pak_load_data("filename") возвращает id листа с информацией о файлах.

Glob1, ну это собственно можно без дллок провернуть, я уже тут выкладывал пример шифрования, текущие функции несложно доработать - может займусь на днях.

Quote (FenMix)
Какой алгоритм упаковки и сжимания?:)

Там сжатия нет, только запаковка.


CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу


Сообщение отредактировал NeZnayu - Вторник, 25 Января 2011, 00:19
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг