Здравствуйте, друзья. Сегодня я решил начать с нуля строить свою карту на движке редактора карт Warcraft 3 The Frozen Throne. Для начала хочу кое-что уяснить. Это будет большой цикл разработки от сеттинга до ландшафта. Я постараюсь описать все самые интересные и сложные вопросы, которые могут возникнуть у любого разработчика карт. Мы не будем использовать язык разработки JASS и постараемся использовать стандартные возможности редактора. Поехали.
Проект trythisapp.ru – WarCraft 3 Своя игра
Что мы здесь будем делать? В этой статье разберем следующие моменты:
- Создание макета карты
- Создание областей для движения
- Триггер респауна воинов
- Триггер передвижения
Создание макета карты
Первое, что приходит на ум – а-ля дота. Пока не знаю какое будет название, пока не знаю, будет ли это все-таки дота (скорее всего нет), но могу сказать точно, что в WarCraft 3 меня привлекает развитие и повышение мобов. То есть их эволюция. Все, что сегодня я хочу сделать, это поставить 2 цитадели и сделать так, чтобы из них выходили мобы.
- Задача номер 1: Построить цитадели. Нарисовать примерную карту передвижения воинов.
Окей, создаю карту размерами 96х96. Мне этого будет вполне достаточно. Расставлю парочку цитаделей и нарисую пути. Пусть будет 3 дороги, по каждой из которых будут идти воины. Получилась прямо таки карта доты:
Ну и хорошо, это то, что мне нужно. В дальнейшем я все это причешу и сделаю так, чтобы было красиво и играбельно. Макет закончен.
Создание областей передвижения
Теперь я размещу по 3 области с каждой стороны, плюс размещу области для движения по линиям:
Сейчас я не буду заморачиваться над точностью расположения областей, конечно, в дальнейшем их нужно будет сделать зеркальными. Собственно из макета, мне больше ничего не нужно. Как никак это просто макет, который в дальнейшем будет модифицироваться и улучшаться. Надеюсь нашей аудитории будет интересно.
Создаем триггер респауна войск
Над балансом в WarCraft 3 говорят надо начинать работать с самого начала. Но для наглядности без расчетов я создам триггер, который будет создавать по 3 пехотинца для людей и по 2 бугая для орков. Открываем модуль “Редактор триггеров”. Для начала снесу стандартную инициализацию, и начну пилить свой триггер. Создам триггер с названием Init, это будет моя собственная инициализация. Пока не знаю, что там будет, но задумки как ни странно с ходу появились. Создам отдельную директорию Spawns и создам в ней триггер SpawnOrcsAndHumans. Хочу, чтобы триггер срабатывал каждые 30 секунд. Теперь го делать триггер:
- Правой кнопкой мыши на событии -> Новое событие.
- В открывшемся окне тип оставляем Все, строкой ниже из списка выбираем: “Время – Periodic Event“
- В описании, которое появилось ниже: Every 2.00 second of game time нажимаем на 2.00 и меняем на 30
- Нажимаем окей.
Супер! Событие в триггере создано, но еще не доделан триггер, теперь нужно для каждой области с одной и с другой стороны настроить респаун войск:
- Правой кнопкой мыши на Действие -> Новое действие.
- Далее из списка Тип выбираем “Боевая единица“
- Видим строку “Create 1 Пехотинец for Игрок 1 (Красный) at (Center of (Playable map area)) facing Стандартная ориентация зданий degress.” Из этого нас интересует кол-во: Меняем на 3. И в данной ситуации тыкаем на (Center of (Playable map area)). В открывшемся окне нажимаем на кликабельное место в строке Center of … В следующем окне нажимаем “Выбрать” возле указания области. Нам открывается карта, на которой выбираем область, которая находится посередине у людей.
- Нажимаем ОК.
- Еще раз ОК.
- И если все сделано правильно должно получиться примерно так:
- Нажимае ОК.
Хорошо, первый триггер создан. Но этого мало, создам еще 5 действий: оставшиеся 2 в других областях для людей, и 3 для всех областей орков. Просто клонирую имеющееся действие 5 раз и настраиваю их следующим образом:
Пожалуй уменьшу респаун до 15 секунд. Все таки полминуты очень много.
Создаем систему передвижения юнитов как в доте
Хорошо, респаун создан. Теперь необходимо организовать движение юнитов таким образом, чтобы при встрече с врагом они атаковали друг друга. Пожалуй создам отдельную директорию для подобных механик и назову ее functions. Создам несколько триггеров, так как у меня много областей, и я не хочу, чтобы юнит “ушел не туда”. В дальнейшем объединю это дело в одну систему.
- Создаем сначала новое событие, в котором Тип “Боевая единица”, и в выпадающем списке выбираем “Unit Enters Region”.
- В строке с регионом нажимаем на слово Region, переставляем маркер на вторую строку. Нажимаем выбрать – выбираем область респауна юнитов.
- Нажимаем ОК.
- И еще раз ОК.
- Теперь создаем действие.
- Тип – Боевая единица. Действие – Issue Order Targeting A Point. В появившейся строке оставляем Triggering Unit, в приказе выбираем – Перейти, нападая на противников, и в области выбираем самую первую область уже на самой линии, не у спавна! Если все сделано правильно, то должно быть примерно так:
- Нажимаем ОК.
- Теперь редактируем условие – Новое условие – Player Comprassion. В нашем случае оставляем все как есть и нажимаем ОК.
В итоге у меня получилось 8 триггеров для людей и 8 триггеров для орков. Только для орков в условии меняем Игрок 1 (Красный) на Игрок 2(Синий). В итоге имеется вот такая картина:
Возможно есть более лучшее решение, но моя задача сейчас вас научить создавать простые триггеры.
Теперь, когда все триггеры созданы, можно запускать карту! Нажимаем на красную галочку в панели инструментов – варкрафт и карта запустятся автоматически. Как ни странно баланс получился весьма хорошим, правда на верхней линии люди взяли верх, но это обусловлено тем, что неверно расположены области на верхней линии. А в центре орки прорвались сквозь пехотинцев. Обещаю все это дело поправить.
В этой статье вы узнали:
- Как создавать Событие/Условие/Триггер
- Как создавать движение крипов как в доте
- Как создать спавн крипов/воинов
В целом получилось весьма неплохо, юниты бегут куда надо, атакуют врагов и спавнятся раз в 15 секунд. Да забыл сказать ранее, в итоге Functions я переименовал в Movement, и уменьшил время респауна юнитов с 30 до 15. В дальнейших статьях я подниму еще старую разработку на движке WarCraft 3, и буду продолжать новую освещая для вас интересные вопросы в создании триггеров, обработки переменных, изменения моделей и много другого! Если зашло – ставь лайк! Есть вопросы – оставляй нам коммент!