Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 04.09.2005, 01:35   #1
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,406
Написано 300 полезных сообщений
(для 985 пользователей)
Смех

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

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

как пользоваться этим чудом? сказал-бы просто, если бы это было так , но... прорвемся... итак поехали!

создадим скрипт запаковки ресурсов:

в блиц редакторе создаем новый файл ОБЯЗАТЕЛЬНО НОВЫЙ, ОТДЕЛЬНЫЙ *.bb ФАЙЛ

пишем прямо в начале CreatePakFile "Filename", Encryption Key, headerMask
где:
Filename - имя нашего пака

Encryption Key - ключ для шифрования данных (32 тиное число)
headerMask - ключ для шифрования заголовков файлов, чтоб при открытии допустим в блокноте не увидеть имен запакованных файлов (32 битное число)

ключи могут быть и нулями, тогда ничего не шифруется

и теперь самое кропотливое: пишем

AddtoPak "имя файла ресурса"

и так для всех ресурсов которые требуются для работы проекта. поскольку все мы делаем в папке нашего проекта, то пути нужно писать от текущей папки и далее допустим AddToPak "media\sound\step.wav"


Теперь закрываем пак командой CloseCreatedPak()


В результате у нас получился большой Пак-файл (он по размеру будет немного больше чем ресурсы на диске)... теперь давайте попробуем вытащить из него запакованные ресурсы.


закрываем наш новый файл и открываем проект, инклюдим в него файл из либы Bones.bb, как это выглядет думаю писать не нужно

далее инициализируем наш Пак:

PakInit "Имя_файла_пака", Encryption Key, "TMP", headerMask

Где:
Encryption Key - код для расшифровки данных
headerMask - код для расшифровки заголовков файлов

эти числа должны быть такими-же как и когда мы создавали пак

"TMP" - путь, куда будут распакованы файлы из пака, "TMP" означает, что файлы будут распакованны во временую папку Windows, тут можно и свой путь указать (при особом желании )

теперь опять самое кропотливое: ищем в проекте все команды которыми грузятся ресурсы... хоть LoadMesh, хоть LoadImage... и преобразовываем их сл. образом:

var=LoadMesh ("Имя_Ресурса",Имя_Родителя)

преобразуется в:

var=LoadMesh (Pak("Имя_Ресурса"),Имя_Родителя)

для функции Pak() есть еще один двойник DLPak(), отличие в том, что DLPak() перераспаковывает ресурс, даже если он уже есть в распакованном виде...


ВСЁ! компилим проект... запускаем... теперь все ресурсы берутся из пака...


Ну а теперь самое интересное, сливание пака с EXE файлом проекта... для этого:

в файле проекта ищем команду PakInit и в качестве пути к паку пишем имя EXE файла проекта

компилируем проект

если сейчас запустить EXE, то программа вылетит с ошибкой... все правильно...

открываем код, где мы создаем пак, там после команды закрытия пака нужно дописать еще одну команду: AppendToExe "Файл_проекта.exe","Пак_Файл".

запускаем на выполнение... таким образом после создания пак приаттачится к EXE, теперь можно пробовать запускать екзешник, должно все работать...


Примечания:

Не делать приаттачивания пака из выполняющегося екзешника, может косяк получиться
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо SubZer0 за это полезное сообщение:
LUK (17.02.2009), Samarik (12.10.2008)
Старый 04.09.2005, 01:37   #2
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,406
Написано 300 полезных сообщений
(для 985 пользователей)
для пущей ясности:

Файл для создания пака должен выглядеть примерно следующим образом:

CreatePakFile "PakFile.pak", 0, 0
AddtoPak "SomeFile.png"
CloseCreatedPak()
;AppendToExe "MyExe.exe","PakFile.Pak"; в случае добавления пака к екзешнику
в проекте:
Пак должен быть проинициализирован
Все пути к ресурсам должны быть изменены на вызов функции Pak()с этими путями...



По времени:

делаем сам проект!

создаем пак с ресурсами

в проект инклюдим bones.bb, изменяем пути на вызов Pak(), дописываем функцию инициализации пака..

компилим проект

тестим

если не работает повторяем создание пака и его инициализацию заново

в проекте изменяем имя файла в PakInit на имя екзешника проекта

компилим проект

в файле создания пака раскомментируем строчку AppendToEXE

за пускаем файл создания пака на выполнение..

ГОТОВО



__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо SubZer0 за это полезное сообщение:
LUK (17.02.2009), Samarik (12.10.2008)
Старый 01.10.2005, 21:34   #3
Amir
 
Сообщений: n/a
Вообще то все немножечко проще - есть такая прога от авторов пакера - Terrabit DataPaker - написана на VB - она пакует нужные вам ресурсы. В приницпе у меня даже где то валялись исходники пакера - выпросил у автора
 
Ответить с цитированием
Старый 01.10.2005, 21:57   #4
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,406
Написано 300 полезных сообщений
(для 985 пользователей)
Originally posted by Amir@Oct 1 2005, 11:34 PM
Вообще то все немножечко проще - есть такая прога от авторов пакера - Terrabit DataPaker - написана на VB - она пакует нужные вам ресурсы. В приницпе у меня даже где то валялись исходники пакера - выпросил у автора
хотелось бы почитать туториал, как может быть по проще... если будет, то с радостью напишу, как проще...

а программку поищи обязательно, и прицепи к сообщению...
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 31.08.2008, 14:05   #5
ELIAS
Знающий
 
Аватар для ELIAS
 
Регистрация: 30.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений
(для 6 пользователей)
Ответ: Все ресурсы в одном EXE

Извинитте... А не может никто перезалить эту либу???... pakmaker.ace
Ссылочка устарела(((
(Offline)
 
Ответить с цитированием
Старый 01.09.2008, 12:56   #6
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,012 пользователей)
Ответ: Все ресурсы в одном EXE

тут вроде есть:
http://forum.boolean.name/showthread.php?t=3024
(Offline)
 
Ответить с цитированием
Старый 23.10.2008, 18:29   #7
Alex_Noc
Разработчик
 
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений
(для 289 пользователей)
Ответ: Все ресурсы в одном EXE

я пользуюсь Moleboxpro - очень крутая и простая вещица как раз все в 1 екзе
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ресурсы для БМ Pixel BlitzMax 2 27.11.2007 23:26
Дым (в одном сурфейсе) - проблема H@NON 3D-программирование 2 20.05.2007 20:34
Объекты в одном сюрфейсе mr.DIMAS 3D-программирование 3 15.04.2007 18:13
Два в одном... WaReZ_MEN 3D-программирование 5 30.03.2007 09:10


Часовой пояс GMT +1, время: 06:02.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com