Zone Of Games Replay Cafe RS Game Maker Территория C&C CnC-Generals.Ru Siberian Studio

 
Раздел статей

Статьи портала->->Руководство по ICE [ Поиск ]

Руководство по ICE
Название Руководство по ICE
Описание Редактирование скриптов через ICE
Уровень: для "атцофф"
Редакторы: ICE
Форматы: *bin (iscript)
Автор: Silen
Добавил silen

Для людей, уже работающих с ICE, не секрет, что это, наверное, самый тупой и корявый, но одновременно необходимый редактор ресурсов, без которого сложно создать полноценный мод или конверсию. Пока головы из Camelot System не выпустили более прогрессивную программу, мы обречены возиться с этой.






С чем работать?



ICE предназначена для редактирования файлов формата *.BIN, а именно "iscript.bin". Данный фаил лежит в папке "scripts" в архивах игры и его можно вытащить использую любой MPQ экстрактор.



Примечание: если у вас установлен только оригинальный StarCraft, то вынимать "iscript.bin" необходимо из "stardat.mpq", если же установлен BroodWar, то вскрывайте "broodat.mpq", а если вы устанавливали патч на игру, значит помимо этих стандартных mpq архивов, в директории появился некий "patch_rt.mpq", то работать необходимо именно с ним. Относитесь к этому серьёзно, так как не соблюдение столь примитивных правил редактирования может привести к возникновению ряда системных ошибок.






Зачем и как это работает?



Программа предназначена для составления скриптов (по-русски - сценариев) различных действий тех или иных игровых элементов. Здесь не обойтись без детального рассмотрения анимаций, ведь, оперируя ими, вы и должны будете указывать порядок действий. Анимации юнитов, зданий и прочих элементов в StarCraft записаны в формате *.GRP, но подробно останавливаться на их рассмотрении мы не будем, хотя желательно уделить время рассмотрении устройства аниманицй. Как правило, лучше один раз увидеть, чем сто раз услышать, так что советую скачать любой *.GRP просмотрщик и увидить концепцию системы анимирования своими глазами. Нужно знать, что каждый блок фреймов состоит из 17 картинок, которые отвечают за направление юнита (север, юго-восток и тд). В ICE именно такими блоками вам предстоит составлять сценарии.






Для приблизительного понимания системы работы скриптов, приведу пример. Вот скрипт, который проходит под номером "29933" и отвечает за передвижение Осадного Танка (в скобочках будет описываться действие фрагмента скрипта):



Play frame 0 (воспроизводится фрейм под номером 0)

Move graphic 4 unit forward (юнит передвигается на 4 клетки вперёд по выбранному направлению)

Wait 1 tricks (затормозить процесс анимирования на 1 единицу времени)

Play frame 17 (воспроизводится фрейм под номером 17)

Move graphic 4 unit forward (юнит передвигается на 4 клетки вперёд по выбранному направлению)

Wait 1 tricks (затормозить процесс анимирования на 1 единицу времени)

Play frame 34 (воспроизводится фрейм под номером 34)

Move graphic 4 unit forward (юнит передвигается на 4 клетки вперёд по выбранному направлению)

Wait 1 tricks (затормозить процесс анимирования на 1 единицу времени)

Go to offset 29933 (перейти к скрипту под номером

29933, то есть повторить всё заново)



Я думаю, что приблизительно структура работы скриптов стала понятна и можно перейти к детальному рассмотрению программы ICE.






Руководство по эксплуатации:



Разделим интерфейс программы на два поля (верхнее и нижнее) и разберёмся с каждым по отдельности.






Верхнее поле:



Main Headers:

Первое, что нас интересует, это закладка Main Headers на основной "рожи" окна программы.

Header: (в дальнейшем "заголовок") название игровой единицы, будь то юнит, здание, ракеты класса Halo, либо Червяк с огромной пастью, живущий на испепелённом Корхале.

Под полем Header находятся опции:

Create New Header: создать новый заголовок.

Delete Header: удалит заголовок (не советую удалять оригинальные игровые заголовки).

Rename Header: переименовать заголовок. Функция играет исключительно косметическое значение, но те кто, например, из Siega Tank сделали Devil Truck, могут, смеха ради, переименовать его и тут. За саму единицу отвечает идентификационный номер (ID Tag).

Кнопка Search by Header позволяет вам произвести поиск по идентификационному номеру (ID Tag), который у каждого заголовка индивидуальный.





GRP Preview:

Это просмотр анимационного файла *.GRP, принадлежащего выбранному заголовку.

В окошке Main GRP мы видим изображение анимации заголовка, кадры которой можно прокручивать от начала до конца, используя горизонтальный скрол. Вертикальный скрол предназначен для крупных анимаций (например, ядерный взрыв), не помещающихся в окно. Возможность просмотра анимации заголовка необходима для корректного составлении скриптов при создании, ведь наугад работать сложновато.

Окошко Secondary GRP используется для поиска анимаций. Введите номер анимации в поле, находящееся слева от окна Main GRP, выберите тип анимации (Image или Sprite) и кликайте кнопку Prev. В окне появится найденная анимация, которой принадлежит введённый идентификационный номер. Возможность поиска используется при создании скриптов для присоединения теней и иных объектов, например, пушки к танку.

Кликнув 2 раза на элементе скрипта, содержашего в строке sprites.dat или images.dat, вы получите отображение анимации в окне Secondary GRP, учитывая указанное значение.







WAV Preview:



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

В окне можно запечатлеть путь и название к звуковуму файлу.

Управление производится посредством кнопок, находяшихся справа от окошка (списка).



Play WAV - воспроизвести звук.

Remove WAV - убрать звук из списка.

Add WAV - добавить звук в список, учитывая введённый номер звука, справа от кнопки.



Кликнув 2 раза на элементе скрипта, содержашего в строке sfxdata.dat, вы получите отображение анимации в окне Secondary GRP, учитывая указанное значение.






Нижнее поле:



Header Info:



Замечу, что для каждого заголовка значения, содержащиеся на этой закладке, разные.

ID Tag: Идентификационный номер заголовка.

Offset: Основа сценария действий заголовка.





Entry Header:



Здесь можно установить уже готовые скрипты на определённые действия заголовка. Если вы создали юнит, который, например, по анимации движения совпадает с уже готовым, то просто скопируйте номер скрипта.

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



Далее идут допустимые действия заголовков:

Initial Animation - действия обькта при нахождении в состоянии покоя.

Death Animation - смерть обьека.

Initial Ground Animation - атака по земле.

Initial Air Animation - атака по воздуху.

Return to Idle from Ground Attack - возврашение к состоянию покоя после атаки по земле.

Return to Idle from Air Attack - возврашение к состоянию покоя после атаки по воздуху.

Walking Animation - перемещение обьекта.

Return to Idle from Walking - возврашение к состоянию покоя после перемешения.

Repeat Ground Attack - повторение атаки по земле (всегда идёт после действия Initial Ground Animation).

Repeat Air Attack - повторение атаки по воздуху (всегда идёт после действия Initial Air Animation).

Special Ability Animation - ряд специальных функций, улавливать которые вам прийдётся самостоятельно, а проще копировать похожие скрипты из других заголовков.

Unknown - та же история, что и с Special Ability Animation. Даже создатели этой программы не знают значения данных действий, куда уж нам.





Animations Scripts:

Самое сложное происходит здесь...

Панель инстументов содержит кнопочки:

New - начать новый элемент скрипта.

Delete - удалить фрагмент скрипта.

Copy - добавить в буфер обмена элемент скрипта.

Paste - вставить элемент скрипта из буфера обмена.

Cut - вырезать элемент скрипта.

Hex - сюда лучше не лазить.

Up - переместить элемент скрипта на шаг вверх.

Down - переместить элемент скрипта на шаг вниз.

Jump - переход к следующему скрипту (внизу каждого циклического скрипта должен быть Go to offset, позволяющий устанавливать цикличесую последовательность и прочую мудрёную чертовщину. Опять же, один неверный шаг и всё полетит к чёрту). Позволяет редактировать скрипты внутри скрипта, так сказать.

Back - наоборот, вернуться к наружнему скрипту.




Теперь разберёмся с табло справа от панели инструментов.

Goto Offset: введите номер скрипта, кликните на кнопку Goto и, пожалуйста, действие приняло значение выбранного скрипта. Работает и с внутренними скриптами (но не работает с некоторыми действиями).

Script Offset: скрипт, используемый этим действием на данный момент.

Op Offset: для каждого элемента скрипта это значение различное. Возможно, при помощи этого можно определить длину.






Элементы скриптов:



Здесь приведены лишь самые необходимые элементы, которые используются при создании скриптов.

Play Frame X - проиграть определённый фрагмент (фрейм) анимации с номером X.

Play Frame X according to teleset. May require a LOS file - проиграть определённый фрагмент (фрейм) анимации с номером X непосредственно на местности. Это относится к различным анимационным обьектам карты. Необходим совместимый LOS фаил.

Shift graphic position X vertical unit - сдвинуть анимацию по вертикали учитывая значение X. Используется для летающих юнитов, что бы создать иллюзию парящего объекта.

Wait X ticks - заморозить выполнение скрипта на X единиц времени.

Wait eather X or Y ticks (random) - заморозить выполнение скрипта на, хаотично выпадающий, промежуток от X до Y единиц времени. Используя эту функция мне, например, удалось сделать молнию, появляющуюся, как бы, в разных местах, в разное время.

Go to offset X - на этом промежутке осуществится переход к другому скрипту. Это позволяет сделать циклический скрипт, дублируя во внутреннем скрипте главный.

Place active overlay (images.dat) X at vertical offset Y - разместить активную анимацию (типа image) с идентификационным номером X, сместить по вертикали учитывая значение Y.

Place active underlay (images.dat) X at vertical offset Y - разместить активную тень объекта, которую сам объект будет скрывать (при наличие объекта в скрипте, а точнее предыдущего элемента) с идентификационным номером X, сместить по вертикали учитывая значение Y.

Place overlay (images.dat) X at vertical offset Y. May require a LOS file - разместить активную анимацию (типа image) с идентификационным номером X, сместить по вертикали учитывая значение Y. Необходим совместимый LOS фаил.

Place independent overlay (sprites.dat) X, over below this anim level, at vertical offset Y - разместить независимую анимацию (типа sprite) с идентификационным номером X, сместить по вертикали учитывая значение Y. Значение не точное, так как здесь имеет роль некий anim level, настраиваемый через Arsenal 3.

Place independent underlay (sprites.dat) X at vertical offset Y - разместить независимую тень обьека (типа sprite), которую сам обьект будет скрывать, с идентификационным номером X, сместить по вертикали учитывая значение Y.

Display overlay (sprites.dat) X with unknown var Y. May require a LOS file - лучше забейте на использование этого элемента. Порой, совершенно хаотично в моде появлялись какие то обьекты, после чего всё зависало. Моя теория заключается в том, что именно этот элемент виновник. Он содержит неизвестное значение, видимо в нём то и всё дело. Зависала игра, потому что небыло у этих элементов LOS файлов, как требует элемент скрипта.

Play sound (sfxdata.dat) X - воспроизвести звук под номером X.

Randomly play a sound (sfxdata.dat) between entires X and Y - воспроизвести хаотично звук под номером X или Y.

Attack with X (1 = Ground, else Air) - атаковать по земле, при X=1, либо атаковать по воздуху при X=2.

Attack with appropriate weapon - атаковать оружием, которое присвоено юниту, используя его установки.

Cast Spell - применить магию, которая присвоена юниту, используя его установки.

Use weapon (weapons.dat) X - использовать оружие с идентификационным номером X.

Move graphic X unit forward - юнит переместится, учитывая значение X. Для справки: Танк и Медик двигаются со скоростю 4; Мина-Паук бегает со скоростью - 16.

Begin unbreakable code section - обьект не может пошевелиться, хотя скрипт продолжает действовать.

End unbreakable code section - элемент Begin unbreakable code section дезактивируется.

Play specific frane X - показать какой-нибудь один фрейм, игнорируя систему построения анимации с 17-ю фреймами.






Замечания:



Существует только три рабочих значений смещения тени для настройки vertical offset. 0 - юнит использует тень из отдельного *.GRP файла. 1792 - тень находится немного ниже от расположения юнита (например, как у Probe или Vulture). 10752 - тень для самолётов, находящаяся значительно ниже юнита. Цифровые значения используются только для теней, анимацией которых является анимация самого юнита.






Вот и всё, буду надеяться, что это обучение хоть как то вам поможет.

GRP просмотрщики можно найти нашем файловом архиве.

Голосов Голосов: 4 - В среднем: 4.25

Добавить комментарий Оценить
Комментарии

Статистика
На данный момент 51 статей в Базе Данных
Лидер просмотров: Создание новых юнитов
Лидер по оценкам: Создание новых юнитов

Всего пользователей в разделе статей: 20 (0 Зарегистрированных пользователей 20 Гостей и 0 Анонимных)
Известные пользователи: 0
 

Воспроизведение материалов с данного сайта без разрешения редакции запрещено.
Реклама на нашем сайте.
Red System © 2001-2016 - All Rights Reserved