Учебник Bethesda Scenes
| Учебник Bethesda Scenes | |
|---|---|
| Серия Промежуточный Дизайн Квестов, глава 4 | |
| Вернуться в Учебный центр | |
| Следующий учебник | |
Содержание
Обзор
Эта глава описывает новый функционал в Creation Kit - Сцены (Scenes). Сцены являются одним из основных новведений в сравнении с прошлыми движками от Bethesda, и предоставляют широкий спектр возможностей по управлению несколькими актерами, выполняющими скоординированные действия. Они полезны для сцен с диалогами, набора действий, а так же тогда, когда актер должен делать что-то более сложное, чем при выполнении одиночного пакет.
Вы узнаете:
- Как создать новую сцену.
- Добавление диалога, таймеров, и актеров в сцену.
- Запуск скриптов во время сцены.
Введение
На данный момент, мы научились управлять Бенду - выполнять простые действия благодаря пакетам, а так же заставили его говорить, как и игрока, и в общем пользоваться системой диалогов. И этого хватает до тех пор, пока не нужно добиться более сложного поведения. Скажем, пусть на Бенду разговаривает с Гильфри(Gilfre) (которая тоже живет на Лесопилке «Пирожок»), а потом отправится немного поколоть дрова -- что потребует сложного набора скриптов для обработки позиции, речи, времени, условий и т.д.
Или, мы можем описать все необходимые действия через сцену.
Откройте квест GSQ01 и перейдите во вкладку Scenes. она должна выглядеть так:
На вид похожа на вкладку Dialogue Views, здесь мы можем увидеть список всех сцен, находящийся в левой части окна, но текущие данные будут отображаться на большом холсте справа.
Щелкните правой кнопкой мышки в таблице слева и выберите "New" для создания новой сцены. Назовите её "GSQ01BenduGilfreScene". Щелкните по ней, чтобы она была выделена.
Кастинг. Действующие лица
Щелчок правой кнопкой мышки по холсту, затем выберите "New Actor." Появится список всех алиасов Reference Aliases созданных в пределах данного квеста. Двойной щелчок по Bendu, чтобы добавить его в сцену как действующее лицо. На данный момент у нас нет Gilfre как алиаса в данным квесте, но вы помните как создавать алиас и указывать им на конкретного актера? (Вкладка Aliases, New Reference Alias, Назовите "Gilfre", Unique Actor, Gilfre из выпадающего списка.)
Как только сделали новый алиас, возвращаемся ко вкладке Scenes, выбираем нашу сцену, затем щелчок правой кнопкой мышки и выбираем New Actor для добавления Gilfre как второе действующее лицо. Теперь сцена должна выглядеть похоже на:
Этим мы сказали игре, какие актеры будут играть роли в нашей сцене, но не их действия.
Фазы
В Creation Kit, сцена состоит из фаз (Phases), которые разделяют действия на отдельные части, так чтобы игра могла их обработать. ПКМ в области сцены и выберите "Add Phase at End" для создания фазы. (Мы добавляем эту фазу в "конец" сцены, но так как сейчас нет других фаз - это первая созданная фаза. Иногда пункты меню имеют глупые названия.)
Первым делом, мы хотим чтобы Бенду и Джилфри оказались где-то рядом друг с другом. Для этого есть куча вариантов, но пусть они встретятся около MapMarker'а для лесопилки. Мы сделаем так, чтобы они шли в одном направлении, а чтобы заставить актера идти: используем пакет.
Пакетные действия
ПКМ по прямоугольнику в сцене с надписью "Bendu", и выберите пункт "New Action -> Package" из контекстного меню. Это откроет окно Package Scene Action.
Таблица, занимающая большую часть окна представляет ещё один стек пакетов, который мы можем располагать над стеком актера, находящего в алиасе. Так что если вы следили за предыдущим учебником по пакетам, то в данном случае у нас есть пакеты сцены, находящиеся над пакетами алиасов, которые в свою очередь располагаются над базовыми пакетами актера. Поскольку игра рассматривает пакеты сверху-вниз, пакеты сцены всегда будет иметь больший приоритет (предполагается что они действительны).
ПКМ в списке пакетов, и выберите "New" для создания нового пакета. Мы создадим совершенно новое действие для данного момента в нашей сцене; это может показаться излишеством, но, поскольку сцены, как правило, очень специфичны, то использование более общих пакетов может быть затруднительным. В любом случае, назовите данный пакет "GSQ01BenduGilfreHitMarks." В выпадающем списке Package Template выберите "Travel" -- а затем укажите MapMarker как MixwaterMillExterior в качестве цели. Задайте ему разумный радиус, например в 250 единиц.
Файл:BenduGilfreTravelPackage.png
В окне Package нажмите OK, затем снова OK в окне Package Scene Action для возвращения к нашей сцене. Теперь, как можно заметить, в данной сцене под Бенду появился пакет.
ПКМ по Gilfre, чтобы так же добавить пакетное действие. Хотя в этот раз, вместо нажатия ПКМ и выбора "New" при создании нового пакета, мы будет повторно использовать только что созданный пакет, используя "Add" из контекстного меню. Появится список всех пакетов в игре. Используйте фильтр, что сверху, для быстрого поиска "GSQ01BenduGilfreHitMarks" а затем двойной щелчок по нему для добавления в сцену.
Когда сцена начинается, она запустится с данной первой фазы, располагая данные пакеты над стеком пакетов алиаса, и заставляет пересмотреть порядок пакетов (в в данном случае, выберет пакет, что мы добавили). Эта фаза будет рассматриваться, как завершенная, когда все её действия выполнены, что в случае с пакетами путешествий означает, что актер достиг цели.
Стоит повторить: сцена не продвинется дальше, пока не будут выполнены все действия в фазе. Есть некоторые типы пакетов (вроде Follow) которые технически никогда не выполняются, поэтому внимательно изучайте построение сцены, чтобы она не зависла навсегда!
Однако, мы не хотим чтобы сцена заканчивалась при встрече обоих персонажей, так что добавим ещё контента.
Вторая фаза
ПКМ в области сцены ещё раз, и снова выбираем "Add Phase at End" для добавления новой пустой фазы. ПКМ для создания нового действия в фазе (New action), но на этот раз выберите "Dialogue" вместо "Package."
Действия в диалоге
Большая таблица в нижней части окна Dialogue Scene Action отображает стек записей информации (infos), как и при редактировании топика для "нормального" диалога. Двойным щелчком здесь создайте первую строку диалога. Введите текст "Ох, гм. Здравствуй."
(Я предполагаю, что Бенду чувствует небольшую влюбленность к Джилфри, о чем она не знает. Вот, ребята, и немного драматизма.)
Когда мы пишем данный диалог для сцены, нам даже не придется напрягаться по поводу установки условий, поскольку игра достаточно умна в отношении настройки необходимого типа голоса из присоединенного алиаса, И эта речь никогда не будет использоваться для какого-то другого диалога. Так что после написания строки, мы с легкостью на душе нажимаем на "OK" пока не вернемся к самой сцене.
Добавьте новую фазу, и в этот раз создайте Dialogue action для Джилфри. И её речь "Ты, иди работай." (Бедный Бенду, не ценят его.) Теперь сцена должна выглядеть так:
(Число действий в вашей сцене может отличаться от картинки; не беспокойтесь на этот счет.)
Заставляем персонажей стоять
Если вы особенно наблюдательны, то возможно заметили проблему -- мы не добавили ни одного пакета в дополнительные фазы, поэтому при их достижении, оба персонажа вернуться к своему базовому стеку пакетов. Что сделает сцену... глупой.
ПКМ в секции фазы 2 у Бенду и добавьте в неё Package Action. Здесь мы можем использовать тот же пакет, поскольку хотим, чтобы Бенду бродил без дела в этой зоне. Для этого выберите GSQ01BenduGilfreHitMarks снова. Добавьте тот же пакет в фазу 2 у Gilfre.
Поскольку мы хотим, чтобы они стояли на месте большую часть сцены, вместо добавления дополнительных действий в фазу 3, мы можем растянуть эти действия по фазам. Если вы наведете мышь на правый край действия, появится курсор изменения размера, позволяющий вам растянуть действие во времени. Ратяните оба действия на третью фазу. Теперь сцена должна выглядеть так:
Помните, мы сказали что фаза не закончится, пока все действия в ней не будут выполнены? Хорошо, это применимо только к тем действиям, завершение работы которых по времени должно быть в пределах одной фазы, поэтому фаза 2 будет завершен, когда Бенду закончит диалог. Ловко!
Взгляд
Поскольку мы не знаем какой случайный путь выберут персонажи перед началом разговора, то не можем буыть уверены, что они будут смотреть друг на друга. Просто так этого не произойдет. К счастью, можно легко открыть окно Dialogue Actions (двойной щелчок по названию действия, но не по самому диалогу), и поиграйтесь со значениями в секции "Headtracking". В данном случае, мы хотим связать взгляд Бенду (Headtrack Target) с "Gilfre" для этого диалога, и взгляд Джилфри с "Bendu." Для обоих нужно так же установить галочку Face Target (смотреть на цель).
Мы так же можем заставить их смотреть в любую другую сторону, установив в цели их travel-пакета определенный маркер XMarkerHeading.
Действия по таймеру
Я считаю, что Бенду должен выглядеть более несчастным относительно всего этого, поэтому давайте сделаем, чтобы он бродил с тоской после того как Гилфри вернется к своему нормальному пакету. Добавьте ещё одну фазу в конец, и в этот раз растяните только пакетное действие Бенду через неё.
ПКМ в секции фазы 4 у Бенду, и добавьте New Action -> Timer. Это именно то, что вы думаете -- временная заглушка для изменения темпа сцены. В данном случае, это заставит Бенду немного постоять на месте, после того, как Гилфри уйдет от него. Установите таймер на 4 секунды (или, если учитывать точность игры, 4.000000 секунд), этого будет достаточно, чтобы понять, что ему разбили сердце.
Финальная сцена будет выглядеть так:
Проигрывание сцены
Мы можем проиграть сцену либо через скрипт (установив её, как свойство и вызвав на ней Start()), либо поставив галочку "Begin on quest start" на вкладке Scene.
Дополнительный функционал
Можно добавлять скрипты в начало и конец сцены, нажав "Edit Data" в верхней части вкладки. Можно так же сделать двойной щелчок мышью по заголовку фазы и добавить скрипты в начало и конец отдельной фазы. Как можно представить, это дает множество возможностей для более сложного поведения и функционала. На самом деле, в Skyrim есть квесты, которые являются большим, нежели сцены с запуском скриптов в нужных фазах.
И наконец, правило о "завершении всех действий до окончания фазы" может быть нарушено. Так происходит по-умолчанию, но если посмотреть в окно сцены, то можно заметить, что ещё возможна установка условий, которые могут завершить нужную фазу.
Предостережения
Актер может одновременно находиться только в одной сцене, и если вы попробуете запустить сцену с актером, который занят в данный момент в другой сцене, то эта сцена будет приостановлена, пока не будет завершена первая. Это может приводить к конфликтам и странному поведению, поэтому нужно внимательно использовать сцены. Хотя при правильном использовании, это очень мощный инструмент.
Домашнее задание
Можете сделать, чтобы Бенду приветствовал Джилфри фразой "Доброе утро," "Добрый день," или "Добрый вечер," в зависимости от времени суток?
| |
Вернуться в Учебный центр | Следующий учебник | |