Здесь я расскажу как сделать монстров на карте Sven Co-op и дать им задание на атаку объекта.
Сразу скажу, что мой пример является далеко не единственным решением, возможно есть более рациональные решения.
Основная часть действий NPC уже написана разработчиками Sven Co-op, это AI. Нам, по сути, остается создать объекты на карте и указать им цели, дальше они будут действовать сами.
Термины:
Монстры, NPC - контролируемые компьютером игроки.
1. Создание карты
Для начала нам нужно создать карту, в примере это будет обычная коробка. Создаем такие объекты как свет и место появление игрока. Более подробно этот пункт, думаю, рассматривать не стоит.
Вложение:
01_create_map.png [ 378.2 КБ | Просмотров: 11040 ]
2. Создание необходимых объектов
Теперь нам нужно создать необходимые энтити, где будут появляться NPC и объекты-цели к которым NPC будут двигаться.
Вложение:
02_create_objects.png [ 402.79 КБ | Просмотров: 11040 ]
Создаем на карте следующие объекты:
squadmaker - это группа монстров, которые появятся на карте, цель которых будет атака объекта.
func_breakable - объект, который монстры будут атаковать.
info_monster_goal - цель монстров, сразу после респавна они направятся в эту точку. Разместить ее надо рядом с func_breakable.
info_node - узлы, необходимые для правильного передвижения монстров по карте.
3. Установка необходимых параметров объектам
Теперь нужно связать все созданные нами объекты, чтобы добиться желаемого результата.
info_monster_goalЭто цель для NPC, при появлении они будут двигаться к этому объекту.
Name - имя объекта. К этому объекту будет ссылаться squadmaker, чтобы монстры двигались к нему. Указываем например "goal01"
Priority - приоритет для монстров. Указываем наивысший "Stop only if can attack", NPC будут остановлены только если на них нападут, иначе они будут двигаться к этому объекту.
Movement Type - тип движения. Walk - ходьба, Run - бег. Указываем бег.
Вложение:
06_edit_goal.png [ 29.71 КБ | Просмотров: 11040 ]
Вложение:
07_edit_goal.png [ 30.51 КБ | Просмотров: 11040 ]
Вложение:
08_edit_goal.png [ 30.02 КБ | Просмотров: 11040 ]
squadmakerЗдесь нам нужно задать тип монстров, их количество и цель, для этого переходим в параметры entity и выставляем слудующие значения:
Name - имя объекта, если не задать, то монстры появятся сразу после загрузки карты. Если имя задано, то они появятся после активации другим объектом, например нажатием кнопки.
Monster Type - тип монстров. В данном примере указываем monster_robogrunt. Список монстров можно посмотреть на wiki -
Monster-объекты (Sven Co-op)Goal Entity - цель. Указываем имя объекта info_monster_goal, т.е. "goal01"
Вложение:
03_edit_squad.png [ 37.54 КБ | Просмотров: 11040 ]
Вложение:
04_edit_squad.png [ 37 КБ | Просмотров: 11040 ]
Вложение:
05_edit_squad.png [ 36.78 КБ | Просмотров: 11040 ]
func_breakableName - имя объекта. Задайте любое, например "break01".
Strength - прочность. Указываем 100 или любое другое значение.
Material type - тип материала.
Classification - классификация. Указываем "Player".
Вложение:
09_edit_breakable.png [ 37.59 КБ | Просмотров: 11040 ]
info_nodeЗдесь ничего указывать не нужно. Просто раскидайте узлы по карте, чтобы NPC могли нормально перемещаться.
Без этих объектов монстры двигаться не будут.
4. Готовые примеры
В качестве примера, приложу исходник следующей карты. На примере карты можно увидеть, как из создания простых объектов можно сделать неплохой сценарий.
Вложение:
10_example.png [ 360.48 КБ | Просмотров: 11040 ]
Здесь есть две кнопки, при активации первой кнопки будет создан отряд из 5 дружественных роботов, которые прибегут к игроку.
При активации второй будет создан отряд из 5 вражеских роботов, которые будут стрелять в стену, пока не сломают ее.
Если активировать две кнопки одновременно, то развернется бой между роботами.