Создание NPC

Translation of this page is incomplete.

Это короткий туториал о том,как заспавнить НПС.




Подготовка


Создание сообщества (Community)


Для начала нам нужно Community, в которое мы будем помещать НПС.
- В Asset Browser кликаем ПКМ и выбираем: Create/Community.
- Далее давайте дадим название,например npc_community.
- Теперь делаем двойной клик ЛКМ по нашему созданному файлу.

Далее мы должны определить НПС и что они должны делать.

Подготовка персонажа


В Asset Browser, посмотрите на Entity Template citizen_poor в \templates\characters\appearances\crowd\citizen_poor
- Скопируйте Entity в свою папку с миром и кликните 2 раза по Entity:
  • Под вкладкой Appearances вы можете увидеть различные виды вашего персонажа. Найдите тот,который хотите использовать, например citizen_poor_01.
  • Под вкладкой Voicetag ,на первой строке(Voicetag = CITIZEN POOR FLOTSAM 01), выберите в колонне Appearances citizen_poor_01.
Теперь у вас есть НПС с видом citizen_poor_01 и голосм CITIZEN POOR FLOTSAM 01 .
- Кликните на NPC из левого окна. Во вкладке Node properties:
  • Дайте ему тег, например walter – напишите это в пустом поле после тега /
  • Дайте ему отображаемое имя, например Walter.
- Переименуйте ваш Entity файл, например в walter.

Подсказка: вы так же можете изменить поведение из Entity Template (invulnerable, aggressive и т.д.) в Node Properties, см.ниже.

Заселение сообщества


Под вкладкой Spawnset:
- Кликните ПКМ под таблицей Comment (в поле с синей линеей) и выберете Add Element,повторите задачу для каждого серого поля.
- Описание полей:
  • Entity ID: Необязательное поле,но может помочь при большом кол-ве НПС.ID назовем walter, но это для примера.
  • Entity Template: укажите шаблон Entity (walter) в Asset Browser и кликните по зеленой стрелке в этом поле для привязки.
  • Appearances: вид НПС, например citizen_poor_01.
  • Story Phase Name: название фазы истории,для первого времени используйте default_phase.
  • Timetable Name: имя timetable (таблица,в которой прописано что и когда должен делать НПС), например walter_tt.
- Отметьте галочкой "Start in AP" (смотреть Action-поинты).

Добавляем Action-поинты (APs) для НПС

В Asset Browser:
- Есть предопределенные действия в templates/environment/actionpoints.
Для примера, для анимации "болтовни" смотрите под папкой default папку gossip и выберите её .
- gossip-JobTree показывает превью action и его категорию. Дважды кликните на нем и перетащите ваш NPC Entity в правое окно, потом кликните ПКМ->Use selected entity. Нажмите на кнопку Play, она покажет вам анимацию.
- Закройте JobTree File. Подсказка: если есть ошибки,кликните на cancel, чтобы избежать последующих ошибок.
- Теперь,перетащите gossip Entity на новый слой в мире, например actionpoints.
- Дайте ему тег, например walter_ap.

Создаем таблицу timetable

Под вкладкой Timetable:
- Кликаем ПКМ под Name и выберите Add Element, повторите операцию для каждого серого поля.
  • Name: имя таблицы НПС , например walter_tt.
  • Time: когда NPC начнет выполнять что-либо. Это важно, когда npc делает что-либо в разное время. Стандартное значение: 00:00.
  • Layer name: укажите слой с АП (под панелью Scene) и нажмите на зеленую стрелку для связки.
  • Category: категория с АП, например default.
  • AP-Tags: тег для АП, например walter_ap.
- Сохраните и закройте Comunnity файл.

Теперь должно быть написано задание, чтобы активировать это сообщество.

Ссылка на квест


В Asset Browser:
- Кликаем ПКМ и выбираем Create/Quest, назовите наш квест, например myquest.
- Откройте файл, кликните ПКМ в правой панели и выберите Complexity management/Start, красная стрелка начнет отображаться.
- Кликните ПКМ и выберите Gameplay/Story Phase Setter.
- Привяжите стрелку Start иin часть "the Story Phase Setter".
- кликните на "Story Phase Setter" и из левого окна:
  • Кликните на + в поле рядом со Spawnsets.
  • Кликните на красную стрелку в новом поле и выберите CActivateStoryPhase.
  • Нажмите на поле рядом с новым полем Spawnset и привяжите ваш npc_community.
  • В Phase, укажите вашу фазу, например default_phase.
- Сохраните и закройте файл.

Теперь нам нужен quest entity для старта нашего квеста

Создание Entity квеста


В Asset Browser:
- Кликаем ПКМ и выбираем Create/Entity Template.
- Назовите это как нибудь, например myquest_entity и откройте.
- в верхнем правом окне кликните ПКМ и выберите Create ‘CQuestComponent’.
- кликните на новой Node.
- Во вкладке Node properties снизу привяжите ваш квест в поле Quest.
Подсказка: Quest log - поле для журнала с квестом, смотрите Quest Tutorial (basics).
- Сохраните и закройте это.

Теперь перетащите ваш Entity на новый слой, например queststuff_layer. Отсюда НПС должен работать.

Меняем поведение НПС


Для смены поведения НПС откройте его Entity Template через Asset Browser (убедитесь, что вы его скопировали!), кликните на вкладкеNode properties, потом кликните на НПС модели слева: вкладка стала заполненной.

Включение у НПС поведение non-attackable/invulnerable


Имея non-attackable NPC могут быть использованы для дизайна уровня. Вы так же можете дать им неуязвимость,чтобы не случилось каких-либо странностей

Создаем non-attackable НПС:
- isAttackableByPlayer - необходимо установить значение false.
- ''immortalityMode' - необходимо установить значение AIM_Immortal.

Подсказка: если опция isAttackableByPlayer выключена, стандартные НПС начнут драться на кулаках при попадании в них магией. Чтобы обойти это ,установите attackReactionRange на 0 (стандарт: 20).

Квестовые действия


Заставляем НПС ходить


Допустим,вам нужно,чтобы после диалога нпс ходил и это все было в вашем Quest файле,У нас есть 2 пути для этого:

- Использование путей:
1.Убедитесь,что функция Sprites включена в View/Filters _debug options.
2. Создайте путь для своего уровня(ПКМ/Navigation/Path). Добавьте ему тег.
3. Воспользуйтесь инструментом Vertex Edit под вкладкой с инструментами.
4.Редактируйте форму путей,перемещая/добавляя ноды (смотреть Vertex Editor).
5. в вашем квесте добавьте блок Script . Укажите QMoveAlongPathinScene как функцию.
6. Войдите в тег НПС, тег вашего пути и MoveType (Walk/Run).
Подсказка: вы можете редактировать параметр Speed.
7. В 'UpThePath установите направление,схожее со стрелкой Path и у FromBeginning'' установите значение True.
Если вы этого не сделаете,НПС будет в конец вашего пути по самому короткому маршруту.

- Использование вейпойнтов:
Вы можете использовать QMoveToObject если вам надо что-то простое и потом использовать Waypoint вместо Path.