Категория:Сцены

Навигация

Материал из Creation Kit Русский
Перейти к: навигация, поиск

Symbol error.png Статья не закончена!


Обзор

Вкладка Scenes

Сцены обрабатывают поведение множества NPC в разговорах а также различные "катсцены"(cut scenes). Сцены включают в себя диалоги, таймеры, и пакеты. Сцены могут варьироваться от простого разговора между 2 случайными NPC до сложной, детально спланированной сцены для квеста.

Сцена содержит последовательный список фаз(phases). Каждая фаза является отдельным куском сцены - когда фаза 1 завершена, действие сцены переходит к фазе 2, и так далее. После того, как последняя фаза будет завершена, сцена закончится.

Каждая фаза содержит набор действий(Actions) для каждого актера, участвующего в сцене. Действия, происходящие в одной фазе идут одновременно - то, что каждый из актеров делает во время этой части сцены. Существует три типа действий:

  • Диалог (Dialogue)
  • Пакет (Package)
  • Таймер (Timer)

Ознакомьтесь с вкладкой Scenes Tab чтобы узнать подробнее о редактировании сцен в Creation Kit.

Действующие лица

Актер может быть одновременно задействованным только в одной сцене. В общем, когда сцена начинается и один или несколько её актеров уже использованы в другой сцене, новая сцена будет приостановлена, пока все её актеры не станут доступными.

Однако сцена, которая помечена как "прерываемая"(Interruptible) (см. ниже) будет остановлена (НЕ приостановлена), когда другая сцена, использующая тех же актеров, предполагает запуститься. Это позволяет более важным сценам не ожидать менее важных (например, случайные разговоры).

Действия пакетов сцены переопределяют любые другие пакеты, которые могут быть у актера. Но если актеру сцены в настоящее время не назначается пакетов действий, этот актер будет выполнять любой пакет из тех, которые могут быть запущены (the highest valid package on their package stack).

Принцип работы

Запуск сцены

Сцена может быть запущена двумя способами:

  • Сцены, помеченные как "Запускать при старте квеста"(Begin on quest start) автоматически начнут проигрываться при старте такого квеста.
  • Скриптовая команда Start_-_Scene вызываемая к этой сцене.

Когда сцена начата, "Начальный" (Begin) фрагмент будет запущен и сцена начнется с проверки условия начала фазы 1(Begin Conditions on Phase 1).

Начало фазы

Сцена проверяет, запустить ли данную фазу проверяя Начальные условия(Start Conditions) этой фазы. Если проверка условии вернет истину, то фаза запустится. Если же Начальные условия не прошли проверки, фаза пропускается (на это фазе никогда не запустятся фрагменты скрипта по Началу(Start) или Завершению(Completion)).

Если фаза запущена, то фрагмент скрипта "Start" тоже будет запущен, затем действия, начинающиеся этой фазе, будут привязаны к соответствующим актерам.

Завершение фазы

Сцена остается в этой фазе, пока последняя не закончится, это может произойти двумя способами:

  • Все действия, являющиеся последними на этой фазе успешно завершены, ИЛИ
  • "Условия окончания сцены"(End Conditions) на этой фазе удачно прошли проверку.

Действия будут завершены когда:

  • Действия пакетов выполнены, когда пакет достигает состояния "Done". Действия с пакетами, не имеющими состояния "Done" не завершаются никогда - фазы с таким родом действий должны использовать Completion Conditions (условия завершения) для того чтобы данная фаза кончилась.
  • Действия в диалоге считаются завершенными, когда актер заканчивает говорить строку текста.
  • Действия с таймерами считаются завершенными по истечении времени таймера.

Учтите, что любые действия на мертвом или отключенном (disabled) актере сразу считаются завершенными. (Мертвый/отключенный актер не разговаривает и не запускает пакетов.)

Когда фаза завершается, то перед переходом к следующей фазе выполняется скриптовой фрагмент из блока Completion script fragment. Далее сцена продолжается, проверяя начальные условия следующей фазы и так далее.

Концовка сцены

Scenes can end in several ways:

  • The final phase of the scene ends.
  • One of the actors in the scene hits a state that is marked to end the scene (see Actor Behavior flags below).
  • The scene is flagged as "Interruptible", and another scene starts that needs one or more of this scene's actors.
  • The scene's quest is stopped.
  • Stop is called on the scene.

No matter how the scene ends, the scene's "End" script fragment is called.

Повторяющиеся сцены

Если у сцены отмечен флажок "Repeat while true" (повторять пока значение истина), то произойдет "повторная" проверка условий по окончанию сцены - если там true, то произойдет перезапуск сцены. Обратите внимание, что скриптовые фрагменты начала и конца сцены (Begin и End) запускаются всего один раз при первом старте сцены, и её фактическом окончании. Они НЕ запускаются каждый раз при повторении сцены.

Случайные разговоры

The game sends two types of events when actors try to initiate conversations with each other: Actor Hello Event and Actor Dialogue Event.

Quests placed in the appropriate node of the Story Manager are used to respond to these events. (This replaces the conversation system used in Fallout and Oblivion.)

As a way to streamline this process, scenes can be marked "Begin on quest start" (which initiates the scene automatically when the quest starts), and "End quest on scene end" (which stops the scene's quest when the scene ends).

Actor Hello Event

This event is sent when a moving actor (when allowed by the "Random Conversations" flag) pass close enough to a non-moving actor.

Once the event is sent, the AI code does nothing to change or control the actors' behavior (unlike the Actor Dialogue Event - see below). Any AI behavior needs to be handled by package actions within the triggered scene.

Actor Dialogue Event

This event is sent when actors (when allowed by the "Random Conversations" flag on their package) find a valid conversation target.

If the event triggers a scene, the AI code controls both actors with "interrupt behavior":

  • The actor that initiated the event walks towards the conversation target actor.
  • The target actor stops moving - but will continue to use an Idle Marker or Furniture.
  • The triggered scene will be paused in "Phase 0" (prior to Phase 1) until the initiating actor reaches fAIMinGreetingDistance (150 units).

Управление случайными разговорами

Random NPC conversations are controlled by the following gamesettings:

Gamesetting Value Description
fAISocialRadiusToTriggerConversation 2000 Actors outside this radius will not try to initiate conversation with each other (exterior)
fAISocialRadiusToTriggerConversationInterior 1000 Actors outside this radius will not try to initiate conversation with each other (interior)
fAISocialchanceForConversation 25 Percent chance that the actor will choose to initiate a random conversation
fAISocialchanceForConversationInterior 25 Percent chance that the actor will choose to initiate a random conversation (interior)
fAItalktosameNPCTimer 120 How long until you can talk to the same actor again (seconds)
fAISocialTimerForConversationsMin 30 Min value for timer for the next time this actor will look to start a random conversation
fAISocialTimerForConversationsMax 60 Max value for timer for the next time this actor will look to start a random conversation
iAISocialDistanceToTriggerEvent 120 How close actors want to get when initiating a random conversation
fAISocialTimerToWaitForEvent 0.5 How long an actor will wait for the Scene Manager to return a random conversation scene after firing the Actor Dialogue Event

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

  • This NPC will not send the event if they are already in a scene, if the player is already engaged in an important conversation, or if the global "complex scene" flag is set.
  • The NPC's package must be flagged to allow "Random Conversations."
  • The NPC will look for valid targets (see below) within the "social radius"
    • The default "social radius" is fAISocialRadiusToTriggerConversation in an exterior or fAISocialRadiusToTriggerConversationInterior in an interior.
    • If the NPC is in a Sandbox package, the "social radius" is replaced by the NPC's Sandbox radius.
  • If there is a valid target, roll for the "social chance" (fAISocialchanceForConversation/fAISocialchanceForConversationInterior)
  • If the roll is successful, the NPC walks over to the target NPC. When within (iAISocialDistanceToTriggerEvent) distance, send an Actor Dialogue Event and wait for (fAISocialTimerToWaitForEvent) seconds to see if a Scene is initiated.
  • When the scene is finished, roll for a timer between (fAISocialTimerForConversationsMin and fAISocialTimerForConversationsMax).
  • When that timer expires, start the process again from the top.

Valid conversation targets:

  • Actors must have the "Random Conversations" package flag checked.
  • Can't talk to the same actor within fAItalktosameNPCTimer seconds.
  • Actors must not be in interrupt behavior.

Эта категория в данный момент пуста.