31 января 2008
Обновлено 17.05.2023

Тибериумные скрипты

Тибериумные скрипты - изображение обложка

В предыдущих материалах по редактированию Command & Conquer 3: Tiberium Wars мы познакомились с устройством редактора карт WorldBuilder и научились создавать достаточно сложные уровни для игры. За бортом этих статей осталась одна-единственная тема — скрипты.

Не будем скрывать, что на самом деле она очень нудная, сложная, да и вообще далеко не у всех хватает терпения, чтобы ее освоить. Единственное «но» — на скриптах в C&C3 основана вся игра: поведение юнитов на поле боя, строительство сооружений, огибание препятствий. Стоит вырезать все скриптовые модули из C&C 3: Tiberium Wars, как жизнь в игре остановится в мгновение ока — солдаты, транспортные средства и вообще все подвижные объекты замрут в самых неожиданных позах. Чтобы вновь оживить такую сцену, придется изрядно попотеть — написать новые модели поведения персонажей и транспортных средств, обозначить ряд целей и задач, определить тактику ведения боя и много чего еще.

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

Буки, веди

Запустите WorldBuilder из директории с установленной игрой. Для вызова редактора скриптов выберите пункт меню Edit/Scripts (Ctrl+Alt+R ). Появится форма, на которую вынесены кнопки для создания/открытия/проверки/импортирования и экспортирования скриптов, поиска нужного фрагмента в определенном документе.

Разработка новых скриптов для игры сводится к банальному конструированию блоков, а не программированию в чистом виде. При этом каждый блок имеет следующую незамысловатую структуру: IF (условие), THEN (действие-1) ELSE (действие-2). То есть сначала задается определенное условие — скажем, уничтожение пехоты оппонента. Если цель выполнена, обработчик выполняет скрипт, следующий за ключевым словом THEN, в противном случае происходит обработка кода после ELSE. Как видите, ничего сложного, те, кто знаком с тем же «Бейсиком», отлично представляют себе, как такие конструкции работают.

Чтобы создать новый скриптовый документ, щелкните по кнопке New Script в окне Scripts. Откроется окно конструктора скриптов. Новые программные модули для C&C 3 пишутся поэтапно. Сначала вам необходимо ввести имя скрипта в поле Script Nam e. После этого следует водрузить флажки напротив нужных пунктов в поле Active in — указать уровень сложности, на котором будет использоваться скрипт ( Easy — легкий, Normal — средний, Hard — сложный). Далее желательно (но необязательно) в поле под пунктом Script Comment написать краткий авторский комментарий к скрипту (что за модуль такой, для чего предназначен и так далее).

Когда основные параметры будут установлены, переместитесь во вкладку Script Conditions и обозначьте ряд условий, после успешного выполнения которых будут осуществлены действия, прописанные в блоке Actions IF True , а в случае их несоблюдения — команды из группы Actions IF False.

Чтобы задать новое условие, щелкните по кнопке New на форме редактирования скрипта, после чего в открывшемся окне Edit: Condition выберите определенное условие из списка, например Map/Area on fire (зона X находится под огнем). Вы увидите, что в поле под списком отобразится программный код условия и синим цветом (в стиле гиперссылок — подчеркнутый текст) выделятся различные атрибуты, в нашем случае — area ???. Чтобы изменить значение параметра, щелкните по нему левой клавишей мышки и в появившемся окошке выберите из списка нужное значение, скажем Water Grid.

Если вы хотите организовать проверку на невыполнение заданного условия, поставьте галочку напротив комментария NOT! в нижней области окна Edit Condition. Чтобы завершить создание условия, нажмите кнопку Ok.

Это важно знать

  • Разработчики умышленно ввели ограничение на максимальное число скриптов для одного сценария — 100 программных конструкций и ни одной больше. Превысите установленный лимит — не сможете скомпилировать уровень: редактор выдаст ошибку.
  • Если в поле условий Conditions for Script вы удалите условный оператор OR , то автоматически уничтожите все команды, прописанные после данного ключевого слова до следующего оператора.
  • Если напротив определенного скрипта в дереве файлов и папок менеджера стоит красный значок вопроса, это значит, что вами были определены не все базовые параметры.

Последствий много разных

В поле Conditions for this Script , в окне редактирования скрипта, после условного оператора IF появится команда — текст условия. Обратите внимание, условий может быть несколько. Например, вы можете попросить игрока одновременно выполнить задачи A и B , и лишь в этом случае будет осуществлено определенное действие. Добавить еще одно условие можно через кнопочку New , главное, следите, чтобы оно отличалось от первого: два одинаковых условия игра обработать не сможет.

Если вы хотите, чтобы выполнялось только одно из нескольких условий, то перед формированием второго условия встройте в тело скрипта условный оператор OR (логическое «или»). Для этого во вкладке Script Conditions (в окне создания скрипта) щелкните по кнопке OR. Чтобы сделать копию условия, выделите нужный компонент в поле Conditions for Script и щелкните по кнопке Copy на форме редактора скриптов. Если нужно вставить дубль, нажмите кнопку Paste. Для перемещения элементов, образующих единый блок, на одну позицию вверх/вниз, используйте кнопки Move Up или Move Down соответственно. Ну а чтобы удалить запись из списка условий, выделите ее, а затем кликните по кнопке Delete.

C постановкой условий разобрались. Создадим действие, которое активируется, если игрок успешно справится с обозначенной задачей. Перейдите во вкладку Actions IF True в окне менеджера скриптов. Чтобы добавить новое действие, щелкните по кнопке New. Появится окно со списком различных действий. Давайте, например, выведем на экран окно статистики и завершим текущую миссию. Выберите из списка элемент Win & Loss/Announce Victoryи нажмите Ok. Заметьте, что в своем сценарии вы можете использовать не одно, а несколько различных действий. А что если игрок провалит задание? Как наказать нерадивого? Очень просто: достаточно заглянуть во вкладку Action IF False и по аналогии с созданием условий определить действия, которые осуществятся в случае невыполнения игроком поставленной задачи. Когда закончите, кликните по кнопке Ok , чтобы сохранить изменения и вернуться к менеджеру скриптов.

Теория менеджмента

Управление созданными скриптами осуществляется через окно Scripts. На панели в левой части данной формы содержатся инструменты для создания папок, скриптов, поиска текста и другие полезные функции. Правое поле менеджера разбито на три прямоугольные области, две нижние содержат информацию (комментарий) о скрипте и его содержимое, а третья (та, что занимает большую часть окна Scripts ) представляет собой дерево папок и файлов (скриптов).

Названия большинства каталогов в данном поле соответствуют именам игроков, которые присутствуют на карте. Если вы уже сделали несложный уровень и поместили на него объекты, то с большой вероятностью встретите в дереве каталогов четыре директории — Neutral , PlyrGDI , PlyrCivilian , PlyrNeutral. Это свидетельствует о том, что на уровне определено несколько противоборствующих сторон, в данном случае четыре. Так вот, созданный скрипт нужно поместить в один из перечисленных каталогов — закрепить его за игроком, чьи подразделения должны выполнить задание.

Изначально скрипт может оказаться в любой из упомянутых директорий. Чтобы переместить документ в нужный каталог, ухватитесь за него левой кнопкой мышки и, не отпуская ее, перетащите файл в нужную папку. Для создания копии скрипта выделите его в дереве файлов и на панели инструментов окна Scripts кликните по кнопке Copy. Дубль будет помещен в папку с оригинальным скриптом. Для удаления какой-либо директории или файла предназначена кнопочка Delete. Обратите внимание, что кнопка Delete на клавиатуре ее не дублирует — неудобно, но тут уж ничего не поделаешь.

Чтобы экспортировать написанный скрипт (для использования его в других сценариях), выделите его и щелкните по кнопке Export Script на панели в левой части окна Scripts. В открывшемся окне настройте параметры сохранения скрипта (на начальном этапе модифицирования менять экспортные характеристики не рекомендуем) и нажмите Ok. Ну и, наконец, чтобы отредактировать написанный ранее скрипт, щелкните по нему дважды левой кнопкой мышки и нажмите Edit на панели инструментов.

Модотворцам на заметку

  • При написании сложных скриптов, которые активируются при пересечении игроком определенной территории, зачастую приходится прибегать к использованию идентификационных инструментов Waypoint Tool (горячая клавиша W, о нем мы уже рассказывали вам в прошлом выпуске «Игростроя») и Polygon Tool. Polygon Tool применяется для создания так называемых триггеров — невидимых зон, активирующих определенное действие. Срабатывает такой компонент, когда игрок или NPC оказывается в области его захвата. Триггеры могут использоваться, например, для проигрывания музыкальных треков, телепортации между локациями, активации режима боя.
  • Скрипты, действие которых распространяется на всех игроков, необходимо поместить в каталог Neutral. К ним прежде всего относятся файлы, ответственные за инициализацию уровня и условия выигрыша/проигрыша сторон. Модули для конкретных игроков следует распределить по директориям, названия которых соответствуют именам противоборствующих сторон. Скажем, если вы хотите, чтобы скрипт X выполнялся только для игрока PlyrCivilian , положите его в директорию /PlyrCivilian. После того как распределите скрипты по каталогам, вы можете упорядочить их внутри определенной директории по папкам.
  • Не пытайтесь удалить базовые каталоги, соответствующие названиям игроков, в окне менеджера скриптов: зря потратите время. Они создаются автоматически в процессе формирования карты и не могут быть удалены вручную.
  • Учите английский язык, друзья. Дело в том, что в редакторе WorldBuilder почти все скриптовые команды (условия, действия, переменные) сопровождаются развернутыми комментариями разработчиков на английском.

* * *

Как видите, в написании и редактировании базовых скриптов для С&C 3: Tiberium Wars нет ничего сложного. Нужно всего лишь дать скрипту имя, обозначить базовые условия и задать действия, которые осуществятся при выполнении или невыполнении поставленной задачи.

Трудности начинаются, когда нужно написать многоуровневый скрипт со множеством условий и несколькими вариантами реагирования на каждое из них. Если тема вам интересна и вы планируете создавать сложные скриптовые конструкции, то вам прямая дорога на наш DVD, в раздел «Игрострой». Там вас подстерегает подробная статья, где максимально доходчиво изложен механизм объявления переменных, основные принципы работы с таймерами, счетчиками и другая полезная информация по теме.

На этой трогательной ноте мы завершаем цикл статей по редактированию C&C 3: Tiberium Wars. Не стесняйтесь присылать свои работы (в том числе и скриптовые моды) на электронный ящик «Игростроя» — gamezone@igromania.ru: лучшие из них будут опубликованы на нашем диске.

Ну а все вопросы, которые у вас возникнут в ходе освоения редактора WorldBuilder, присылайте по адресу gamedev@igromania.ru. На самые интересные из них мы непременно ответим в рамках игростроевской « Горячей линии ».

Комментарии
Чтобы оставить комментарий, Войдите или Зарегистрируйтесь