• Добро пожаловать, Гость. Войдите или зарегистрируйтесь.

Автор Тема: Basic_npc_patrols_tutorial  (Прочитано 679 раз)

Описание:

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Garin

  • *
  • Сообщений: 1564
  • Репутация: 5
  • Пол: Мужской
    • ICQ клиент - 244260055
    • Просмотр профиля
    • tiarum.com
Basic_npc_patrols_tutorial
« : 09 Декабрь, 2006, 00:02:26 »
0
Basic NPC Patrols Tutorial - перевод by LiLu, rev 1.0
Основы патрулирования NPС
Содержание:
  • Введение
  • Установка пакетов
  • Как это работает
  • Использование шаблонов
  • Тестирование и отладка
Введение

Патрули могут оказать огромную помощь при передвижении по местности без использования fasttravel. Этот учебник поможет Вам быстро создать патрульный отряд с маршрутом из двух точек и добавить его в игру. Вы должны представлять себе, что такое NPC, пакеты и редактирование сетки путей.



Установка пакетов

Сначала нужно создать NPC, который будет использовать наши пакеты. Скопируйте NPC "BanditMeleeMale2" с новым ID "MyPatrolTemplate01" (он находится в ветке Actors/NPC/Khajiit окна объектов). О том, зачем нужно сменить ID, будет написано позже. А теперь откройте панель AI у нового NPC. Стандартные пакеты можно удалить, но хорошей практикой считается оставлять внизу списка пакет Wander (бродить). Это повысит отказоустойчивость. Итак, удалите пакеты BanditSleep4x4 и BanditGruntWanderExterior, сохраните изменения, закройте меню и откройте окно пакетов (Character -> Packages).

Найдите пакет "GuardPatrolBeginPatrol". Это стандартный пакет, который служит основой для всех патрулей, создаваемых нами. Прежде чем мы начнём что-либо делать, нужно определиться с местом, которое будет патрулироваться. Не знаю почему, но мне так захотелось и я разместил патруль в Vilverin, так что я разрешаю вам исправить возникающие ошибки самим. Загрузите эту ячейку и загляните в главное помещение. При выборе маршрута патрулирования нужно учитывать несколько нюансов. Не прокладывайте путь через ловушки и опасные места. Сила патруля должна быть сопоставима с силой предполагаемых врагов. Кроме того, маршрут должен быть достаточно длинным, чтобы солдаты не бегали, как мячики от пинг-понга. Это будет нереалистично.

Путь нашего патруля будет отмечен двумя статичными объектами - маркерами xmarker. Для простоты я назвал их "MyPatrolBegin" и "MyPatrolEnd" и разместил их так, как показано на картинке. Конечно, без пакета они бесполезны, так что давайте его создадим.

Иллюстрация с уменьшенным разрешением

Наш предсказанный маршрут патруля

Кликните правой кнопкой в окне пакетов и нажмите "new", а затем сделайте следующее: задайте ID "MyPatrolPackage", установите его тип в "travel" и поставьте галочку "Must Reach Location".

Кроме того, нужно указать пункт назначения. Перейдите на закладку "Location", пометьте "Near Reference" и кликните "Select Reference in Render Window" (Создать копию в окне рендера). Затем кликните дважды по маркеру "MyPatrolEndMarker". Откройте закладку "Conditions" (Условия), кликните правой кнопкой по списку и создайте новое условие. Выберите "GetDistance" в нижней части ниспадающего списка и в параметрах функции установите "MyPatrolBeginMarker". Оставьте стандартное сравнение "<" и увеличьте величину до 512.

Помните нашего "MyPatrolTemplate01" NPC? Давайте добавим ему пакеты "GuardPatrolBeginPatrol" и наш "MyPatrolPackage" в его список. Убедитесь, что они расположены в следующем порядке:
  • MyPatrolPackage
  • GuardPatrolBeginPatrol
  • BanditGruntWanderInterior
Обычно я оставляю объект "Torch02" в инвентаре патрулирующих NPC, чтобы они привлекали к себе внимание светом. Добавить другие типы поведения очень легко. Просто добавьте нужные пакеты. Например, пакеты "sleeping", "reading" и т.д. разнообразят поведение патруля в зависимости от времени суток. Ваши NPC будут выполнять эти пакеты в первую очередь, а патрулировать только тогда, когда больше ничего делать не остаётся.

Вы можете разместить NPC на уровне и начать тестировать, но очень важно то, в каком месте Вы расположите их по отношению к MyPatrolBeginMarker. Давайте проанализируем, как это работает.

Как это работает?

Небольшой анализ настроек пакета может паказать, как они устроены. Если Вы заглянете в пакет "GuardPatrolBeginPatrol", то ничего не увидите, но он предписывает NPC вернуться в его исходную локацию т.к. установлен флаг "Must Reach Location" flag. Там нет условий, так что этот пакет выполняется каждый раз, когда оказывается в верхней части списка.

Тем не менее, "MyPatrolPackage" находится вначале списка и выполняется первым. Условие, проверяющее расстояние до MyPatrolMarker, сработает в первом же кадре, в котором будет загружен NPC, так как "MyPatrolBeginMarker" является точкой загрузки этого NPC. Условие будет продолжать выполняться, пока NPC не удалится на 512 единиц длины от его места появления. Почему же он не повернёт назад, как только это произойдёт?

Да потому, что установлен флаг "Must Reach Location". Это означает, что даже если NPC и "хочет" повернуть назад, он не может этого сделать, пока не достигнет MyPatrolEndMarker и не проанализирует свой список пакетов заново.

Эту технологию можно расширить для надёжного создания "многоточечных" патрулей, создавая пакеты между первой точкой патрулирования и пакетом GuardPatrolBeginPatrol.

Использование шаблонов.

Часто нам нужно много разновидностей специфических NPC, патрулирующего подземелье всегда. Шаблоны позволяют достигнуть этого без трудоёмкого создания нескольких новых NPC или существ и внесения их в уровневый список.

Often we want more variety than a specific NPC always on patrol in a dungeon, however, and templates are a way to acheive this variety without the labor of creating several new NPCs or creatures to feed into a specific leveled list.



Взамен мы можем создать собственную версию уровневого списка, используемого нашим NPC как шаблон. Списки наследуют следующие признаки у шаблона:
  • AI
  • Фракция
  • Скрипт
  • Death Item
  • Стиль боя
  • No Persuasion Flag
За основу возьмём список LL1BanditMelee100. Откройте его и измените ID на "MyPatrolList". Выберите "MyPatrolTemplate01" в качестве шаблона. Кликните ОК и создайте новый объект. Поместите его около MyPatrolBeginMarker, удалите NPC, если Вы успели его создать ранее.

Тестирование и отладка

Тестирование заключается в запуске редактора и наблюдении за поведением NPC в ячейке. Наиболее распространённая ошибка - это выбор неправильных маркеров в "Conditions/Location". Запомните также, что если Вы поменяете маркеры местами, NPC или список будут стоять на месте или пакет сломается. Если у Вас проблемы с тем, чтобы заставить NPC следовать по нужному маршруту, помните, что вы можете использовать кнопку <alt> для создания привилегированных узлов пути.

Используя этот метод, Вы можете быстро и просто создать патрули NPC в подземельях и не только. Удачи!
Награды За огромный вклад в развитие Румора

Теги:
 

Поиск

 
Top
SimplePortal 2.3.5 © 2008-2012, SimplePortal