Героический картострой, часть 2. Редактор карт Heroes of Might and Magic IV
Редактор: Устанавливается вместе с игрой Где взять: Запустить из папки с ярлыками игры Возможности: Соответствуют игровым Сложность освоения: Выше средней Документация: Отсутствует (в том числе и Help) Даже после выхода Heroes of Might and Magic IV мне доводилось встречать в Интернете статьи, в которых говорилось о наличии в игре "генератора случайных карт". Поиск этой таинственной части игры ничего не дал. Никакого "генератора" нет и не может быть. Компьютер просто не умеет просчитывать продвижение игроков в первые недели (а то и на всю карту), не умеет расставлять хитрые заподлянки, не умеет писать красивые тексты... А главное, что пока явно не сумеет сделать "генератор", — написать красивые скрипты. То есть нечто из разряда "перебить всех" он, возможно, и сотворит, а вот что-то красивое... О скриптах мы и поговорим ниже. Это просто? Да, раньше редактировать карты было проще за счет вполне однозначных решений с целями миссий: захвати город, убей героя, накопи 1000 бревен. Это было легко, но слишком стандартно. И вот в HoMM IV был сделан широкий жест в сторону сюжета. Теперь задания на миссию (кампанию) зависят только от размаха вашей фантазии. Их может быть сколь угодно много. Причем "смена заданий" решается как действительной сменой одними заданиями других, так и различными ограничениями в выполнении стандартных условий победы. Первый вариант обычно достигается "квестовыми домиками", выполнение задания в одном из которых ведет к получению нового квеста. При этом стандартные условия победы должны быть отключены. Второй вариант реализуется обычно таким образом. Один игрок с заранее просчитанной армией запирается в недоступном месте, и к нему требуется добраться. Но всевозможных вариантов хода сюжета более чем достаточно, поэтому придумывать их вам придется самим. Все это решается скриптами. Скрипты нужно использовать далеко не на всех картах. В многопользовательской игре будет странным другой вариант победы, кроме как разгром всех оппонентов. В то же время в кампаниях с несколькими картами будут только приветствоваться многочисленные красивые решения. Скрипты делятся... А делятся они в первую очередь на
глобальные и локальные. Глобальные — скрипты, расположенные в "Свойствах карты" (Map Properties), а локальные — в конкретных объектах карты. Категории глобальных скриптов: Timed, Triggerable, Continuous, Placed. Timed — происходящие по времени. Для этих скриптов необходима точная дата. Обычно это скрипты сообщений или "посылок". Triggerable — скрипты, которые активируются другими скриптами. Назначение их не очень ясно, поскольку они вполне успешно заменяются другими категориями скриптов. Continuous — скрипты, чья дата четко не обозначена. Проверяются все время, если это одноразовые скрипты, они должны самоудаляться после выполнения (то есть заканчиваться скриптом Remove Script). Могут начинаться с плавающей даты, зависящей от переменной. Placed — скрипты, выполняемые, только когда игрок достигнет определенной точки на карте. Эта точка — объект Event, носящий некое имя. Обычно такими объектами перегораживают дороги, чтобы пройти мимо события было невозможно. Выполняются такие скрипты только
один раз и после выполнения должны быть удалены. Категории локальных скриптов несколько менее упорядочены. Кроме уже известных Timed, Triggerable, Continuous появляются также Standard. А вот они разные для разных объектов на карте. Для стационарных объектов (город, шахта) это Attacked, Captured, Victorious, Entered. Для подвижных (монстры, герои) — Encountered, Defeated, Victorious. Эти события — триггеры, срабатывающие каждый раз (или однократно), когда свершаются соответствующие события. Для городов и шахт имеют значение скрипты Captured (они позволяют запускать скрипты, связанные с захватом их тем или иным игроком), а для подвижных объектов — Defeated (именно через них можно записать скрипт о проигрыше миссии при потере конкретного героя). Остальные скрипты имеют значение только в случаях очень изощренных сценариев. Построение скриптов для "квестовых домиков" будет рассмотрено ниже. По своей функции скрипты делятся на заглавия, условия, логические связки, последствия и переменные. Заглавие — скрипт, вызывающий группу дальнейших скриптов или сам выполняющий какое-то действие. Типичные примеры — Sequence и Display Message. Первый как бы является "веревочкой", на которую нанизываются группы прочих скриптов. Второй выдает игроку сообщение, но при необходимости к нему можно добавить действие или несколько. Условия — это скорее даже не самостоятельные скрипты, а части других скриптов. Они расположены в пункте If и включают в себя скрипты типа Has Certain Hero ("Если в армии есть указанный герой"), Player is Human ("Если игрок является человеком") и так далее. Условия необходимы для запросов "если — то — иначе", и при их выполнении/невыполнении включаются в действие скрипты-последствия.Логические связки служат для связи между условиями (если их несколько) и включают в себя Or, And, Not. Скрипты-последствия — это как раз то, что происходит при выполнении или невыполнении условий. Ими являются, например, Give Artifacts, Increase Skill. Переменные — части скриптов, которые несут в себе те или иные числовые значения. От переменных обычно зависят скрипты, начинающиеся в какой-то точный временной момент. Пример: с захватом игроком первого замка переменной присваивается значение текущего дня. В дальнейшем текущие события, ориентированные на день переменная + х (где х — количество дней с момента захвата замка), будут происходить согласно плавающей дате, зависящей от того, когда вы захватили первый замок. Переменные можно также использовать и как счетчик (если целью миссии является захват всех строений определенного типа). Частности Общее впечатление о том, что такое скрипты, получено. Осталось подкрепить общие сведения конкретными примерами. Приводить в примеры все — это потратить полжурнала только на перечисление скриптов и описание того, как каждый из них можно употребить. Поэтому придется ограничиться только общими примерами на все случаи жизни. Ну а уж руководствуясь ими, можно создать любой сценарий и любую кампанию. Причем при проявлении недюжинной фантазии у вас может получиться куда лучше, чем у создателей оригинальных кампаний. Условия побед Начнем примеры с того, чем
заканчивается любой сценарий, — с победы в нем. Чтобы победить в сценарии, надо его отыграть, но чтобы сделать карту, условия победы необходимо продумать заранее. Даже при огромном выборе средств для изменения условий победы видов окончательной победы не слишком много. Это: стандартные условия победы, уничтожение определенного героя, игрока или группы монстров, захват определенного замка (замков) или группы строений, набор определенного количества ресурсов, попадание на определенную территорию, владение определенным артефактом. Разумеется, что можно придумать еще много различных видов побед, но это будут уже проявления вашей фантазии. Если вы используете нестандартные условия победы, то лучше это продублировать скриптами. Для этого в Map Properties в разделе Timed Event задается новое событие (New), в котором прописывается скрипт Disable Standard Victory Condition и выбирается игрок, для которого этот скрипт действителен.
Стандартные условия победы Скучно и неинтересно. Они и так включены по умолчанию. Стоит оставлять только для мультиплеерных карт.
Уничтожение героя Тут есть один тонкий момент: с этим вариантом в игре контактирует вполне конкретный глюк, при котором чрезмерно развоевавшийся герой может пасть от грязных лап монстров, причем сценарий при этом не будет считаться выигранным вами. Поэтому при таком виде победы рекомендуется надежно "замуровать" нужного героя. То есть всеми возможными способами ограничить его подвижность. Для этого надо поставить на карту героя. В закладке Events выбираем Standard Event/Defeated. Скрипт Sequence, выбрать через New скрипт Win, а в его свойствах — игрока, который должен выиграть. Вы не обязаны ограничивать несчастного тем опытом и деньгами, которые у него были в начале. Он может расти в мастерстве, чтобы потом составить конкуренцию игроку. Для этого достаточно будет в Timed Events героя назначить событие, добавляющее ему опыт/деньги/войска (Increase Experience/Give Materials/Give Creatures) и тому подобное, указать день первого подобного события и частоту его повторения (если нужно) на закладке General. Все, целевой герой не столь уж и беззащитен.
Уничтожение игрока В Map Properties (закладка Campaign) выбирайте Events/Continuous Events. Создаем скрипт Conditional Action. В поле If вводим скрипт Player is Eliminated, выбираем нужного игрока. В поле Then вводим скрипт Win, также выбираем нужного игрока. Все, компьютерный игрок обречен стать жертвой грядущей охоты.
Уничтожение группы монстров Если в группе несколько "кучек" разных монстров, тогда лучше назначить эту группу отдельным игроком и реализовать это как уничтожение игрока. Если в группе всего одна "кучка" монстров, тогда лучше реализовать это как уничтожение героя.
Захват замка Проходит абсолютно аналогично уничтожению конкретного героя. То есть Standard Event/Defeated/Sequence/Win. Не забудьте только выбрать игрока-победителя.
Захват нескольких объектов Очень красивая задача. Проходим цепочку Map Properties/Events/Timed Events. Создаем переменную с названием Capture и присваиваем ей значение 0 (Sequence/Set Numeric Variable/Number). Теперь в Continuous Events создаем скрипт Conditional Action. В поле If вводим скрипт Capture=10 или уж сколько там у вас объектов (Equals/Variable и Number). В поле Then вводим скрипт Win, после чего выбираем победителя. Теперь начинается самая сложная часть. Ведь надо поименовать все захватываемые объекты. Лучше, если все объекты будут принадлежать к одной категории (все лесопилки, все шахты и так далее). В Events объекта проходим по пути Standard Events/Defeated/Sequence/Set Numeric Variable/Plus. После чего добавляем единичку к нашей переменной. Не забудьте снять галочки с компьютерных игроков в закладке General. Там же создаем еще одно событие, но уже для компьютерных игроков, причем заканчиваться оно будет скриптом Minus. При этом необходимо объединить компьютерных игроков в союз, чтобы они не перехватывали друг у друга важные сооружения. Правда, можно отметить и более удачный, хотя и более геморройный вариант решения этой же проблемы через присвоение каждому сооружению переменной True/False. Тогда победа будет засчитываться при True во всех сооружениях. В остальном принцип тот же.
Набор ресурсов Очень просто. Map Properties/Events/Continuous Events/Conditional Action. В поле If вводится скрипт Greater Than or Equals/Material Quantity, выбирается материал и игрок. Ну а дальше выбранному игроку присваивается победа.
Попадание на территорию Обычно заданием в таких сценариях является спасение определенного героя или персонажа, но реализуются они как раз через попадание на территорию. Конкретнее это реализуется через расстановку объектов Event (закладка Adventure Object/Miscellaneous) на пути следования к необходимой территории. То есть, если вы хотите воссоздать сцену встречи с искомым героем, то он должен быть окружен этими объектами. Все они должны носить одно имя. После этого в Map Properties/Events/Placed Events создается скрипт Win. Не забудьте выбрать игрока, и неплохо бы написать какой-нибудь текстик. Вроде как друзья встретились. Владение артефактом Тоже очень несложное условие победы. Map Properties/Events/Continuous Events/Conditional Action. В поле If вводится скрипт Has Artifact и указывается его вероятный владелец (не забудьте выбрать сам артефакт и расположить его на карте). Несколько условий победы Работает через те же самые Continuous
Events и Conditional Action. Только первым в цепочке будет скрипт And. Не стоит перегружать скрипт победы многочисленными And. Лучше пустить скрипты через цепочку, в которой окончание одного события запускает другое. Но победа путем осуществления двух разных событий — это приветствуется, особенно если вам удастся объединить их сюжетом миссии. В заключение главы о вариантах побед остается только упомянуть, что гораздо интереснее для игрока будет, если вы, выстроив цепочку из смен условий победы в миссии, не будете вываливать все условия победы сразу, а будете выдавать их по мере смены условий. То есть в заданиях на миссию не будет красоваться список из десятка пунктов, о большинстве которых игрок даже и не подозревает. Эти пункты будут заменять друг друга по мере выполнения предыдущих. Для этого служит скрипт Set Victory Condition Description. Укажите только игрока, который получит это сообщение и новый текст задания на миссию. Временные решения Для чего нужно время в игре? Еще в Heroes of Might and Magic II были миссии, проходимые на время. Наверняка вам хотелось сделать то же самое в редакторе. Теперь это возможно. Причем не только в таком ограниченном применении, как 30 дней на миссию, но и в виде открытия и закрытия "плавающих дат". Плавающие даты — даты, возникающие в связи с какими-то событиями. Например, необходимость в пятидневный срок закончить миссию в последнем сценарии кампании за Хаос. Причем это — конкретный вариант подхода к этому вопросу, а на самом деле с введением этой функции открываются широчайшие возможности в создании красивейших сценариев. Вариантов очень много, поэтому обойдемся примером. Допустим, что вам необходимо поставить условие, что замок Второй должен быть захвачен не позднее, чем через пять дней после замка Первый. Решается это следующим образом. В Map Properties/Events/Timed Events в первый день задается переменная Day, которой присваивается любое значение (лучше отрицательное) — Sequence/Set Numeric Variable/Number. После этого выбирается замок Первый, и в Standard Events/Defeated/Sequence присваиваем переменной Day (Set Numeric Variable) значение текущего дня (Current Day). Следующим скриптом в списке ставим Remove Script (вам ведь не нужно, чтобы это срабатывало каждый раз). Осталось только завершить эту цепочку скриптов. Для этого в Map Properties/Events/Continuous Events/Conditional Action впункте If пишем скрипт Current Day/Equals/Plus. В верхнем поле укажите вашу переменную, в нижнем — число дней до поражения. В поле Then будет скрипт Lose с игроком, который, не успев выполнить задание, проигрывает. В поле Else вновь пойдет скрипт Sequence. Он будет включать Conditional Action, условием для которого послужит Player OwnsCertain Town, в его полях надо указать игрока и город Второй. Then в этом условии означает Win. Вторым скриптом здесь будет Remove Script. Последовательность проверки такова. Проверяется дата, если она соответствует предельной, то игрок проигрывает. Если дата не соответствует (время есть), то срабатывает вторая проверка. Если город захвачен, то скрипт удаляется полностью и больше никогда не действует. Учтите, что этот пример не учитывает возможности захвата первого города противником и вообще очень упрощен. Но это только общий пример, и на его основе можно построить гораздо более разветвленные скрипты с многочисленными проверками. Получи задание Квесты — неотъемлемая
часть Heroes of Might and Magic IV. И не только их, но и редактора. Вы можете послать героя или игрока что-либо сделать (хотя выполнять квест в обязательном порядке ему и нет необходимости). Для этого существуют специальные "квестовые домики" (Quest Hut). Только сами "домики" имеют 16 вариантов внешнего вида. Способ же их применения — одинаков. Скрипты домиков очень похожи на все прочие скрипты. А вот что значит каждая из закладок. General — здесь вводится название "квестового домика" и сам квест в кратком изложении (то, что игрок будет читать, наведя мышку на "домик"). Triggered Script — скрипт, который срабатывает при первом вхождении в домик. Им можно проверить, есть ли во входящей армии конкретный герой, и только тогда произвести определенное действие. Proposal Message — сообщение при первом вхождении в домик. Иначе говоря — художественно оформленный текст задания. Progress Message — текст, который будет выдаваться игроку, если задание уже получено, но еще не выполнено. Quest Requirement —здесь идет скрипт задания. Но, в отличие от обычных скриптов, здесь как бы расположено поле If. Это значит, что здесь находится только условие, выполнение которого необходимо. А вот результат условия пишется в закладке Completion Script. Тут уже никаких условий не ставится — только бонусы, которые получает игрок за выполнение задания. Empty Message — используется для выдачи сообщения о том, что домик уже пуст (задание выполнено). Completion Question —обычно не используется. Скрипты в домиках можно применять разнообразные, от банальной выдачи ресурсов до открытия дверей или присоединения к вам армий союзников. Все зависит только от вашей фантазии. Проходи, не стесняйся И, наконец, двери и проходы. Я имею в виду не те простейшие ворота, для которых достаточно поставить сами ворота и палатку ключника, не забыв, что они должны быть одного цвета. Это слишком просто и уже давно есть. Имеются в виду более сложные варианты. А их, вариантов, два. Quest Gate серого цвета. И временные заграждения. Поподробнее о каждом. Quest Gate серого цвета бывают двух видов — одноразовые "заграждающие башенки" и многоразовые проходы. Структура закладок в их свойствах ничем не отличается от "квестовых домиков", разве что количество закладок поменьше. И если одноразовые башни — обычное место, где нужно выполнить условие, чтобы освободить проход, то в многоразовых можно реализовать проход только игроков выбранного цвета, а также проход только одного героя. Проход одного героя реализуется так: Quest Requirement/And. В одном поле выбирается пропускаемый герой — Has Certain Hero. Во втором происходит ограничение прохода остальным — Equals/Total Number of Heroes in Army — Number. Если нужно пропустить войска определенного типа — скрипт, согласно которому общее количество существ в армии должно соответствовать количеству существ определенного типа — Equals/Total Number of Creatures in Army — Number of Creatures in Army (выбрать тип существ). Заграждения — это объекты Editor.Bomb, расположенные в Adventure Object/Miscellaneous. Это преграды на пути игрока, убираемые скриптами после выполнения определенного задания. Задание может быть абсолютно любым, наилучшим вариантом удаления этих объектов является запись в поле Then — Delete Adventure Objects, после чего указывается имя объекта (если вы не забыли назвать объект, то оно будет в выпадающем списке). * * * Наш сегодняшний разговор о редакторе четвертых "Героев" закончен. Если появятся вопросы, смело пишите на dash@igromania.ru. В одном из ближайших номеров "Мании" мы вернемся к теме редактора HoMM IV. А пока — творите! А результаты творчества присылайте на orange@igromania.ru — лучшие работы попадут на наш компакт в "Работы читателей "Мании"".
1335 Прочтений • [Героический картострой, часть 2. Редактор карт Heroes of Might and Magic IV] [19.05.2012] [Комментариев: 0]