Сам себе генерал - часть вторая. Редактор карт для Command & Conquer: Generals

Сам себе генерал - часть вторая. Редактор карт для Command & Conquer: Generals

Мастерская — Сам себе генерал - часть вторая. Редактор карт для Command & Conquer: Generals
"...поговорим о картах для однопользовательского режима. Основное их отличие от мультиплеерных состоит в том, что при их создании невозможно обойтись без скриптов...
Игроманияhttps://www.igromania.ru/
Мастерская
Сам себе генерал - часть вторая. Редактор карт для Command & Conquer: Generals
   В прошлой статье цикла мы с вами научились делать несложные мультиплеерные карты. Сегодня же поговорим о картах для однопользовательского режима. Основное их отличие от мультиплеерных состоит в том, что при их создании невозможно обойтись без скриптов, с помощью которых можно размещать на уровне самые различные триггеры или сюжетные вставки на движке игры. Например, проиграть сценку приезда поезда с подкреплением, когда ваши войска прорвутся в тыл врага.
   Единственное, что не позволяют скрипты — создавать собственную кампанию и управлять "водными" объектами на уровне (разрушение и постройка плотин, наводнения).

Мир под кистью

Заготовка уровня делается так же, как и для мультиплеерной карты. Можете взять уже созданную по материалу прошлого номера карту и использовать ее в качестве основы.
   Если вас не устраивает стандартный набор текстур, можете активировать в наборах графики объект GermanPub01, в котором хранятся текстуры в стиле ландшафтов Западной Европы.
   При помощи пиктограммы Add Scorchmarks можно раскрасить места "былых боев" разнообразными следами взрывов и пожарищ. Можно добавить на уровень уничтоженные военные объекты (Object Selection Opts\Civilian\Debris).
   Вряд ли вы захотите помещать в одиночную миссию компьютерного оппонента с неразвитой базой. Логичнее заранее отстроить врагу хорошо оснащенную цитадель, тщательно выбрав для нее место, расставив заборчики и стены, проведя коммуникации. Такую базу брать приступом куда интересней.
   Заборы и стены можно поставить (в самой игре их построить невозможно), зайдя в папку Fence и перетащив мышкой соответствующие объекты из списка на карту.
41 Kb
   При изготовлении карты может возникнуть проблема. Предположим, вы построили базу в горах. Ни один враг не подберется. Если только на вертолетах. Но вы ведь не собираетесь вести одни лишь воздушные баталии. Нужно сделать пологий спуск с гор на равнину — такой, чтобы по нему могла свободно проехать ваша техника. Для этого существует пиктограмма Ramp. Вы создаете площадку спуска (вытягиваете сетку), задаете угол наклона поверхности (Ramp Width) и жмете кнопку Place Ramp.
   Как быть, если вы хотите поставить игрока и компьютер в равные условия, дать им возможность развиваться "с нуля"? Для этого в редакторе есть меню Build List Tool — список зданий для постройки. Сами здания заносятся в список простым перетаскиванием мышкой из меню Add Building. В меню Side вы определяете сторону, которой в игре будут доступны сооружения из списка.
   Здания будут строиться в том порядке, в каком вы занесли их в Build List Tool. Поэтому не стоит ставить электростанции раньше бараков. Ведь в этом случае карта получится несбалансированной. Компьютер можно будет уничтожить быстрой атакой — рашем — сразу после начала миссии.
   В меню Rebuilds с помощью бегунка вы сможете определить, сколько раз можно перестроить каждое здание (именно отстроить заново, а не отремонтировать), если его разрушит противник. Для всех строений, кроме основного здания базы, лучше выставить этот параметр на максимум.

Отряды рвутся в бой

44 Kb
   Team — это отряд юнитов, способный при помощи скриптов выполнять различные действия. И группа автоматчиков, патрулирующая окрестности, и танковая армада, до поры до времени стоявшая в резерве, а потом неожиданно выезжающая на поле битвы на помощь противнику, — все это отряды. Без отрядов практически невозможно сделать увлекательную однопользовательскую миссию.
   Активируются отряды в меню Edit\Edit Teams, через опцию Add New Team. Когда отряд активирован, его еще нельзя поместить на карту. Сначала нужно его настроить. Основные характеристики определяются на первой закладке меню Edit Teams. Поскольку по контексту далеко не всегда можно догадаться, за что какая настройка отвечает, рассмотрим их подробно.
   Name — название отряда.
   Owned — опция, которая определяет владельца отряда.
   Priority — приоритет вызова отрядов на карту. Чем выше приоритет, тем раньше будет активирована данная группа войск.
   Maximum Quantity — максимальное количество отрядов одного типа, которые одновременно могут присутствовать на карте. Компьютер будет самостоятельно привлекать пополнение, заменяющее погибших бойцов.
   Home Position — данная настройка позволяет "привязать" активированный отряд к заранее созданному при помощи скриптов вэйпойнту. Достаточно выбрать имя вэйпойнта из списка.
   Condition — определяет условия создания отряда. Например, группа может быть высажена авиацией при атаке противником внешнего периметра вашей базы. Условия должны быть заранее прописаны в скриптах, после чего выбор условий появится в меню создании команд.
   Execute associated actions — галочка в этом квадратике означает, что новые команды будут создаваться в соответствии с указанным условием. Если галочку не поставить, то команда будет одноразовой и повторно создаваться не будет.
   В закладке Reinforcement можно определить, как отряды подкрепления доставляются на поле боя и как они ведут себя в различных ситуациях.
   Behavior — поведение бойцов в тех или иных условиях. Условия определяются выбором из списка заранее созданных скриптов.
   On Create — действия группы сразу после формирования. Например, отряд пехотинцев отправляется патрулировать периметр. Значения команд почти всегда понятны из контекста.
   On Enemy Sighted — что будет делать группа при встрече с противником.
   On All Clear — что делать группе, когда все обнаруженные враги уничтожены. Можно, например, сразу убрать подкрепление с карты.
   On Destroyed — какое действие нужно выполнить, когда уничтожена часть отряда (задается в процентах с помощью бегунка в нижней части экрана) или весь отряд. Можно, например, сделать так, чтобы тут же было вызвано подкрепление, или чтобы самолеты провели ковровую бомбардировку территории, где на ваши войска было совершено нападение.
   On Unit Destroyed — в этой закладке можно задать условия на случай, если уничтожен один из членов группы. Например, если до атаки действовало условие патрулирования, то при уничтожении одного юнита группа может открыть ответный огонь.
   Transports Return to Base After Unloading — если пометить данный пункт галочкой, то все транспортеры будут возвращаться на базу после высадки десанта. Если не ставить галочку, то техника будет оставаться у места высадки, и противник легко сможет ее уничтожить.
   Team Avoids Threat — галочка в этом квадрате означает, что отряд сделает попытку обойти любого встретившегося на пути врага с флангов, а не атаковать его, что называется, в лоб.
   Initial Team Behavior — начальное поведение отряда (агрессивное или пассивное).
   Attack — если активировать этот пункт, то на высоких уровнях сложности весь отряд будет атаковать одну выбранную цель.
   На закладке Generic можно выбрать еще один или несколько скриптов, определяющих действие отряда.
   Если вам не хочется писать скрипты на каждый случай самостоятельно, можете импортировать уже готовые из SkirmishScripts.scb (Data\Scripts). Это универсальный набор скриптов чуть ли не на все случаи жизни. Все команды нужно импортировать в папки скриптов для skirmish-миссий (пункт надо пометить галочкой до начала импорта), иначе скрипты будут лежать только в папках общих команд.

Пути юнита неисповедимы

   Встроенных скриптов в редакторе достаточно, но в ряде случаев их не хватает. Желательно научиться писать свои собственные скрипты. Для этого — заходите в меню Edit\Scripts.
   Тело скрипта состоит из нескольких частей: это свойства скрипта, условия его выполнения и действия, которые совершаются, если условие верно/не верно. В свойства скрипта входят: вид скрипта, выполняемость скрипта при различных уровнях сложности (Active In), частота выполнения скрипта (Evaluate Script).
37 Kb
   Скрипты могут быть нескольких видов: Subroutine (для проверки различных условий и, как правило, запускающие другие скрипты), Active (скрипты, начинающие работать с запуском миссии; могут быть включены или отключены другими скриптами) и Deactivate Upon Success (отключающиеся после выполнения скрипты). Скрипт может одновременно принадлежать к нескольким видам. Так, скрипт, активирующий апгрейд, будет принадлежать к активным и отключающимся после выполнения скриптам.
43 Kb
   В самом простом случае скрипт состоит из условия (Script Conditions) и действий, которые будут происходить при выполнении или невыполнении этого условия — Actions if TrueActions if False.
   Размещение скриптов на карте лучше начинать не со скриптов обороны базы, а со скриптов ролика или брифинга. У некоторых скриптов есть специальные пометки, определяющие их группу. Например, скрипты группы Camera управляют камерой, Multimedia — отвечают за создание визуальных и звуковых эффектов, Scripting — задают условия, в зависимости от которых будут запускаться ролики во время игры.
   При определении переменных обычно приходится выбирать одно из нескольких предлагаемых значений — в поле Player, если переменная нечисловая, или в поле Money, если значение переменной определяется числом. В некоторых случаях переменную можно привязать к имеющемуся на карте объекту.

Скриптовые переменные

   При создании скриптов не обойтись без использования переменных. Давайте разберемся, как их правильно задать.
   Переменная Flags используется для проверки условий типа "истинно/ложно". Для создания переменной нужно написать скрипт вида [Scripting]Set Flag to Value. Проверка значения на истинность/ложность происходит через активацию скрипта [Scripting]Flag Compared to a Value.
   Переменной Counters задаются различные числовые параметры. Например, счетчик уничтоженных юнитов или зданий определенного типа. Для создания новой переменной применяется скрипт [Scripting]Counter — Set to a Value. В условиях, как правило, используется скрипт [Scripting]Counter Compared to a Value. Изменить значения переменных можно скриптами типа [Scripting] Counter Increment[Scripting] Counter Decrement (соответственно — увеличение и уменьшение числового значения переменной).
   Переменная Timers отвечает за счетчики, которые бывают двух типов: по времени (Second) или по кадрам (Frame). В одной секунде — 30 кадров, но на медленных машинах значение кадров может быть меньше, поэтому лучше определять значения через секундные счетчики, которые задаются при помощи скрипта [Scripting] Seconds Countdown Timer Set. "

Создание скрипта

44 Kb
   Теперь, когда теория скриптописания и определения переменных изучена, давайте разберем алгоритм несложного скрипта, разрешающего апгрейд ракет для танка "Скорпион".
35 Kb
Апгрейд танка "Скорпион"
   Возможно, на миссии игрок не построит ни одного "Скорпиона", поэтому, чтобы зазря не проводить апгрейд, сначала скрипт должен проверить, есть ли у игрока танки (например, апгрейд становится возможен при наличии у игрока трех танков). Допустим, танков больше трех. Теперь скрипт должен проверить, хватит ли на апгрейд денег. И только когда оба условия верны — скрипт совершит модернизацию (скрипт изображен на скрине).
   "Скорпионы" игрока стали сильнее.
   Мы только что написали так называемый базовый скрипт. Помимо основного условия срабатывания скрипта, можно задать несколько дополнительных, поменять минимальное количество танков и денег, необходимых для апгрейда "Скорпионов", отдать приказ на атаку определенного типа вражеских юнитов сразу же после проведения апгрейда. Чтобы модифицировать скрипт, достаточно просто выбрать из списка другое условие или сразу несколько условий.

* * *

   Все письма с вопросами присылайте на ящик dash@igromania.ru. Если наберется большое количество интересных вопросов, мы опубликуем FAQ (ответы на часто задаваемые вопросы).
Комментарии
Загрузка комментариев