Будни вивисектора. Триггеры на картах Impossible Creatures

Будни вивисектора. Триггеры на картах Impossible Creatures

Мастерская — Будни вивисектора. Триггеры на картах Impossible Creatures
"...Но будь ваша карта даже шедевром дизайна, она вряд ли окажется интересной без грамотно расставленных триггеров..."
Игроманияhttps://www.igromania.ru/
Мастерская
Будни вивисектора. Триггеры на картах Impossible Creatures
   Редактор: Sigma Mission Editor
   Где взять: Устанавливается вместе с игрой
   Возможности: 95% игровых
   Сложность освоения: Средняя
   Документация: Устанавливается вместе с редактором

   В прошлом номере мы с вами научились создавать мультиплеерные карты для Impossible Creatures. Но будь ваша карта даже шедевром дизайна, она вряд ли окажется интересной без грамотно расставленных триггеров. Геймплей на "безтриггерной" карте всегда одинаков — создаем зверюг потолще да помощнее и уничтожаем лабораторию противника. С помощью триггеров же можно сделать по-настоящему оригинальный уровень.

Триггеры

44 Kb
   Редактирование триггеров происходит в окне Trigger Wizard, которое открывается через меню Info\Triggers.
   Большую часть окна занимает поле Triggers — здесь находится структурированный список триггеров. Структура списка следующая. Пункт trigger folder — корневой каталог списка. В нем находятся отдельные папки триггеров (по умолчанию есть лишь папка default; если вы хотите создать новую папку, выделите корневой каталог и нажмите кнопку New в правой части окна). В папках размещаются сами триггеры.
   Создать новый триггер можно, выделив одну из дополнительных папок и нажав кнопку New. В появившемся после этого окне (Player Select) укажите, для кого из игроков предназначен данный триггер, и нажмите кнопку Next. В следующем окне (Conditions) необходимо указать условия, при которых триггер сработает. Таким условием (или несколькими условиями сразу) может быть почти любое событие или явление в игре. Чтобы задать новое условие триггера, нажмите кнопку New в том же окне. Затем в очередном появившемся окне необходимо выбрать тип условия и настроить его.
   Установив все необходимые для срабатывания триггера условия, снова нажмите кнопку Next. Появится еще одно окно (Actions), в котором необходимо задать выполняемые триггером действия. Действия задаются точно так же, как и условия. Нажав затем кнопку Finish, вы завершите создание триггера.
   В нижней части основного окна находятся два параметра — Loop, позволяющий зациклить триггер, и Is Active (по умолчанию включен), отключив который, вы можете заблокировать выполнение какого-либо триггера.
   С теоретической частью мы разобрались, теперь давайте рассмотрим некоторые условия и действия подробнее.

Причина и следствие

   Ниже следует список условий, с помощью которых можно запускать триггеры, и действий, производимых этими триггерами. К сожалению, в редакторе не даны пояснения ни к условиям, ни к действиям, которые определяются условиями. К тому же разработчики не потрудились хоть как-то систематизировать их списки — подчас найти подходящий вариант в представленном многообразии довольно сложно. Поэтому мы приводим список наиболее важных условий и действий с комментариями.

Условия

   Always — простейшее условие, определяющее, что триггер выполняется при любых обстоятельствах.
   Army Size — триггер выполняется в зависимости от размера армии игрока. Щелкнув по строке Compared в настройках триггера, можно выбрать тип сравнения численности армии (меньше, больше), а в строке Quantity указать число, с которым сравнивается армия игрока. Можно сделать так, чтобы триггер срабатывал, например, только на малочисленные группы противника.
   Countdown — отсчет времени в секундах, по завершении которого запускается триггер.
   Countdown(random) — момент старта триггера определяется случайным образом в заданном временном промежутке.
   EntityDistance триггер стартует на определенном расстоянии от выбранного объекта на карте до указанной позиции (позиции можно указывать с помощью объекта Point в списке объектов в разделе Location). Объект задается параметром entity (необходимо выбрать объект из списка), а расстояние и тип сравнения — в уже знакомых comparedquantity.
   EntityHealth — выполнение триггера в зависимости от состояния здоровья указанного объекта.
   EntityNotAlive триггер стартует в случае, если указанный объект был уничтожен.
   HowMuchElectricity — триггер стартует в зависимости от накопленного игроком электричества.
   HowMuchScrap — триггер стартует в зависимости от накопленного угля.
   Keypress триггер включается нажатием определенной клавиши на клавиатуре.
   LabDead триггер включается, когда лаборатория игрока уничтожена.
   Player has research — триггер включается, если игрок закончил исследование указанной технологии.
   Player is researching — триггер включается, если игрок начал исследовать указанную технологию.

Действия

   Block research — блокирует возможность исследования какой-либо технологии у указанного игрока.
   Countdown action — начинает отсчет таймера.
   DeleteEntity — безвозвратно удаляет с карты указанный объект.
   Enable radar pulse — включает/выключает возможность использования радара в игре.
   Get entity group (all) — позволяет передать контроль над указанной группой одному из игроков. Существуют также "специализированные" варианты этого действия, например для зданий или рабочих. Группу объектов можно создать, выделив желаемые объекты на карте и нажав комбинацию Ctrl+G.
   GivePlayerElectricity — дает игроку указанное количество электричества.
   GivePlayerScrap — дает игроку указанное количество угля.
   GiveResearch указанная технология становится исследованной.
   IncGroupHealth — добавляет указанной группе объектов некоторое количество здоровья.
   IncFullGroupHealth — полностью лечит указанную группу.
   DecGroupHealth — наносит повреждения указанной группе.
   Lose — указанный игрок проигрывает игру.
   Order group to do command дает какую-либо команду (например, атаковать указанный объект) выбранной группе.
   Order group to location — приказывает группе двигаться к указанной позиции.
   TriggerState — позволяет сделать указанный триггер доступным к исполнению, если у него выключен параметр Is Active, или наоборот — заблокировать его.
   Show Message — отображает на экране в игре текстовое сообщение.
   Win — указанный игрок выигрывает игру.

Практика

   Давайте рассмотрим создание триггеров на практике. Создайте небольшую карту "на две персоны". Сперва добавим на карту пару локаций, которые дают занявшему их игроку различные бонусы. Пусть одна из них добавляет игроку ресурсы, а вторая — уменьшает здоровье лаборатории оппонента.
   Сначала необходимо создать несколько объектов. Добавьте на карту две декоративные постройки, не принадлежащие никому из игроков — именно они и будут "локациями". Затем добавьте персонажей — например, главного героя в двух экземплярах — по одному для каждого игрока. Персонажи будут служить "агентами", контролирующими локации. Запишите ID-номера созданных объектов (можно найти в окне Selection Info) — они понадобятся при создании триггеров.
Откройте окно Trigger Wizard и создайте новую папку для триггера. При создании самого триггера укажите в окне Select Player, что триггер относится к первому игроку.
   В окне Conditions необходимо указать два условия. Первое из них — EntityDistance — будет отвечать непосредственно за запуск триггера. Строка настроек условия должна иметь примерно такой вид: [персонаж игрока] is [less than or equal] [5] meters away from [локация] — это означает, что триггер сработает, если персонаж находится на расстоянии не больше пяти метров от объекта-локации. При указании персонажа и локации вам предложат выбрать желаемый объект из списка всех объектов, находящихся на карте. Проще всего в этом списке найти объект по его ID-номеру — здесь и пригодятся записанные заранее номера.
24 Kb
Это — "локация"...
   Второе условие триггера будет "ограничителем", останавливающим триггер, если количество угля у игрока превышает какой-то предел. Это условие HowMuchScrap. Строка настроек этого условия должна выглядеть следующим образом: if [Player 1] has [less than or equal] [500] scrap. То есть триггер будет выполняться только тогда, когда у игрока не больше 500 единиц угля — чтобы бонус не становился читом.
   Установив причины, переходим к следствию — действию триггера. Действие необходимо лишь одно — GivePlayerScrap. Строка настроек действия должна быть такой: give [Player 1] [1] scrap — действие будет добавлять игроку единичку угля за раз. Завершив создание триггера, выделите его в основном окне и включите параметр Loop, иначе триггер будет одноразовым. Можете создать такой же триггер, добавляющий электричество. Эти триггеры необходимо продублировать для второго игрока, иначе воспользоваться локацией сможет только первый игрок.
24 Kb
...а это — "агент". Парню явно холодно.
   Теперь рассмотрим триггер, повреждающий лабораторию противника. В качестве условия можно использовать тот же EntityDistance. Действием же будет DecGroupHealth. Особенность этого действия в том, что оно повреждает не какой-то конкретный объект, а группу объектов (пусть даже группа содержит всего один объект). Чтобы создать для лаборатории игрока группу, выделите ее на карте и нажмите комбинацию Ctrl+G. Затем откройте меню Layer\Group List. Здесь можно задать имя новой группе, чтобы потом не путаться в их номерах при настройке действия. Строка настроек действия должна выглядеть так: decrement health of [группа] by [1]. Этот триггер также необходимо зациклить с помощью параметра Loop, и его также необходимо создать для всех игроков отдельно.
   Можно добавить к триггеру действие, сообщающее игроку, что оппонент начал подтачивать его лабораторию, чтобы "потерпевший" мог принять соответствующие меры. Иначе и собственное поражение проморгать можно. Необходимое нам действие — Show Message. В строке настроек щелкните по пункту Message и просто впишите текст сообщения.
   Кроме разных бонусов, с помощью триггеров можно задать альтернативные условия победы на карте. Это может быть потеря оппонентом какого-либо персонажа, накопление игроком некоторого количества ресурсов, доставка какого-либо юнита на указанную позицию — вариантов очень много. Можно сделать и так, что для победы нужно будет последовательно выполнить сразу несколько условий, причем в определенном порядке.
   В качестве условия победы можно указать захват в плен вражеского "агента" (того, что контролирует бонусные локации) и последующую доставку его на базу — так сказать, для проведения дознания. Данная цепочка состоит из двух триггеров, и начинать ее создание удобнее с последнего звена. Условие выполнения этого звена — EntityDistance с настройками: [агент оппонента] is [less than or equal] [5] meters away from [лаборатория игрока]. Действие — Win. Закончив создание этого триггера, заблокируйте его, отключив параметр Is Active.
   Создадим триггер, определяющий способ пленения агента. Пусть агент попадает в плен, когда его здоровье уменьшается до 50 единиц. Тогда условием триггера можно сделать EntityHealth. Строка настроек условия — if [агент оппонента] health is [less than or equal] [50]. Передать агента под контроль игрока можно с помощью действия Get entity group (all) (не забудьте создать отдельную группу для каждого агента). Настройки действия — set [группа] to all entities owned by [player]. Осталось добавить действие TriggerState, чтобы связать триггеры между собой. В пункте trigger в строке настроек необходимо указать созданный нами чуть выше триггер, а в пункте state включить параметр On/Off.
   Несмотря на то, что вы создали новое условие победы на карте, старое условие — уничтожение лаборатории противника — тоже будет в силе. Но это легко обойти — достаточно сделать данное условие невыполнимым.

* * *

   На этом мы завершаем обзор триггеров. Теперь ваших знаний достаточно, чтобы сделать интересную карту с нестандартными заданиями и условиями победы. Ну а лучшие из ваших карт имеют все шансы попасть на наш компакт, если, конечно, вы не забудете выслать их по адресу gamezone@igromania.ru.
Комментарии
Загрузка комментариев