Версия для печати
Вторник, 17 Ноября 2015 21:24

Алгоритм запаковки с помощью Exshell.

Автор
Оцените материал
(1 Голосовать)

sheeДа, я помню, что обещала рассказать, как же запаковывать проект с помощью новой утилиты от Статика. Очень здорово, что он мне помог с ней разобраться. И вот я решила законспектировать порядок действий. Так что если решите паковать свой проект с ее помощью, запаситесь терпением - мы начинаем!

Итак...

Алгоритм действий:

Этап 1: подготовка файлов.

1.1.   Создаем папку "__resources" в корне утилиты.

Примечание: Можно назвать папку и по-другому, я назвала ее так для примера.

exxx

1.2. Разделяем игру на папочки по принципу того, как вы хотите запаковать,

например:

1 - все карты и база данных

2 - звуки

3 - музыка

4 - графика

Каждая папочка будет у нас паком в последующем.

Как именно сортировать по папкам -  дело вкуса.  Но рекомендуется разделить отдельно звук, музыку, арт, файлы с логикой игры (карты, скрипты). Так будет проще работать, т.к. музыка, звук, арт, редко меняются, а баги с игровой логикой фиксятся куда чаще.

ВНИМАНИЕ!!!  ехе и dll не кладем для запаковки! А также файлы, что требуются для записи\перезаписи - конфиги, сейвы и т.п.

Примечание: Это не критично, можете и положить. В подавляющем большинстве случаев это ничего не изменит. Просто шелл не будет их оттуда грузить, так что это приведет просто к лишнему раздутию размеров.

Таким образом, в папке __resources у нас окажутся исходные ресурсы для игры.

Например,  в папках pack01, pack02, pack03, pack04 вот так:

resu

ВНИМАНИЕ!!! Рекомендуется сохранять структуру игры, то есть руководствоваться тем, что эти папки с паками находятся как бы в корне экзешника.

То есть,  например, для графики будет в папке пака будут лежать все папки с графикой:

 DVBN005


 

Этап 2. создание батника для запаковки и его запуск

1. В этой же папке с ресурсами создаем батник, назовем его publish

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

DVBN004

Если не любите батники, можете просто писать с командной строки.

2. Пишем команды:

CD %~dp0..

exshell -repack .\__resources\output\rdata.edp .\__resources\pack01 "" belo4ka

exshell -repack .\__resources\output\sound.edp .\__resources\pack02 "" belo4ka

exshell -repack .\__resources\output\music.edp .\__resources\pack03 "Music" belo4ka

exshell -repack .\__resources\output\graph.edp .\__resources\pack04 "" belo4ka

 Общий принцип таков:

exshell -repack <путь к будущему запакованному файлу с расширением edp> <папка, откуда пакуем> <название воображаемой папки> <ваш пароль паковки>

ВНИМАНИЕ !!! Утилита не любит русские пути в названиях файла. А также не переваривает, если ее запустить из под каталога с русским путём, так что не расстраивайте шелл по-напрасну.

ВНИМАНИЕ !!! Путь нужно указывать относительный, абсолютные пути шелл тоже не очень любит.

ВНИМАНИЕ !!! Если какойто аргумент содержит пробелы, то его надо писать в кавычках! К примеру, "C:\program files\my game", т.к. пробел используется для разделений аргументов и без кавычек - это будет 3 аргумента - C:\program          files\my         game

В данном случае для папки Music был указан этот параметр, потому что в самом паке мы поместили музыку без папки. Тем самым мы указываем, что пак должен обращаться к музыке через эту как бы виртуальную папку. Если вы всю структуру отразили правильно в ваших папках с паками, то можете просто ставить "".

3. Запускаем на исполнение.

 В результате программа поместит в папку output запакованные результаты.

exxxx


 

 Этап 3. создание дистрибутива с игрой

Собственно, теперь осталось сделать сборку для запуска.

       1. Формирование структуры.

Делаем папочку «__game»  в любом месте. Можете назвать как угодно, как нравится.

ВНИМАНИЕ !!! В принципе, вы можете и не раскидывать по папкам, как делали это мы, а просто поместить все в корень.

Рекомендую разделить на папки:

Exshell – туда поместить все содержимое папки с утилитой, включая экзешник

Gamebin – сюда помещаем файлы проекта, которые не запаковали по тем или иным причинам. Экзешнику рекомендуется изменить разрешение на bin или другое, чтобы игрок случайно не стал запускать с него – в этом случае ведь ничего работать не будет.

Package – сюда помещаем наши папки с запакованными ресурсами

esxxxxxxxxx

        2. Проставляем настройки для запуска.

Это делается в файле exshell.ecd. По сути – это простой текстовый файл, с определенным синтаксисом. По синтаксису есть справка в приложенном пдф-файле.

Находим там строчки и меняем на ваши данные:

Например, здесь это сделано для  «Дряньки»

$StartPEPath: ".\..\gamebin\RPG_RT.bin" ~это путь к экзешнику, который переименовали в бин

$StartPEArgs: "RPG_RT.exe NormalPlay ShowTitle Window" ~это чтоб пускался в оконном режиме

~$ApplCaption: { "TFormLcfGameMain", NO, 0, NO }     ~ Uncomment if this not cause problems

$Compatibles: #C0DE0001

$FScreenMode: { 320, 240, 555 } ~ режим, в котором работает игра, ширина, высота, битность палитры

~ далее идут пути к пакам с нашими файлами

~они будут грузиться по порядку т.е. если файлы в последнем паке будут совпадать с файлами в первом паке то при обращении к ~ним шел будет подсовывать игре файлы из последнего

$LoadPackage: "./../package/rdata.edp"

$LoadPackage: "./../package/graph.edp"

$LoadPackage: "./../package/sound.edp"

$LoadPackage: "./../package/music.edp"

~$LoadPackage: "./../package/pat01.edp"

$LoadPackage: NO

Примечание: Для мейкера ХР настройки будут другими:

$FScreenMode: { 640, 480, 555 },

А строчку  $Compatibles: #C0DE0001  лучше закомментарить, если вы используете ХР.

$        3. Запуск и настройки запуска.

По сути, теперь вы уже можете запускать игру с помощью exshell.exe. Если вы все правильно сделали на прошлых пунктах, то она будет работать. Но не каждый игрок догадается зайти в эту папку, чтоб запустить приложение. Так что делаем еще в корне VB скрипт, который пускает этот шелл:

Set WshShell = CreateObject("WScript.Shell")

WshShell.CurrentDirectory = WshShell.CurrentDirectory + "\\exshell"

WshShell.Run """exshell.exe"" NormalPlay ShowTitle Window",1

Также можно сделать экзешник, который запускает игру, как это сделал Статик по моей просьбе для нашего проекта.

На этом, вроде, всё. Можно наслаждаться, играя в запакованный проект, при этом меняя ему режимы экрана и отображения, играясь с настройками exshell.ecd. 

Заключение.

Да, я знаю, все непросто. Если какие вопросы, можете спрашивать, возможно, мы вам поможем разобраться.

И  давайте еще раз поблагодарим Статика за такую полезную программу. 

Прочитано 4360 раз Последнее изменение Вторник, 17 Ноября 2015 22:05
AnnTenna

Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript

Последнее от AnnTenna

Похожие материалы (по тегу)

3 комментарии

Авторизуйтесь, чтобы получить возможность оставлять комментарии