Как создать флоппи в скайриме

Обновлено: 26.04.2024

IdleMarker — что это такое, как создать новый и сделать модель поведения NPC в разное время суток.

Для работы ИИ (Искусственного интеллекта) в игре используется NavMesh. После создания навмешей для NPC требуются AI пакеты, которые сделают его «живым» (Вкладка AI Packages в меню Actor). Каждому NPC лучше прописывать определенный набор Default пакетов, наиболее важным из которых будет является Sandbox пакет (DefaultSandboxLocEditor1024 – например).

Приписав персонажу пакет, вы увидите, как тот бродит с места на место, пьет и закусывает. Для того, чтобы как-то разнообразить жизнь актера, используется фурнитура (WorldObjects/Furniture/. ) и набор маркеров, таких как IdleMarkers.

Для начала разберемся, что за зверь такой этот IdleMarker. В словоблудии уже говорилось, что эти маркеры позволяют разнообразить поведение NPC в какой-либо локации. Более того, они позволяют, не прибегая к скриптам и сценам создавать модель поведения NPC в разное время суток, но это уже зависит от AI-пакетов.

Именно благодаря IdleМаркерам стражники патрулируют улицы городов, а Драконий Предел ежедневно очищается от пыли и мусора двумя безустанными служанками. Сами по себе IdleМаркеры наследуют анимации, заложенные для каждого NPC. К сожалению, не все анимации пригодны для использования в маркерах, но самое главное не это, а то, что десятки анимаций так и небыли использованы разработчиками игры. Теперь, когда дело сказано, можно приступить к поэтапному разбору и созданию IdleMarker'a.

Создание IdleMarker'a на основе доступных анимаций

Откроем ObjectWindow > раздел Miscellaneous > IdleMarker. Здесь мы видим список из уже доступных маркеров:


Жмем правой кнопкой мыши по этому пространству и создаем новый IdleMarker. Перед нами появляется окно IdleMarker:


Тут стоит остановиться на каждом из параметров окна:

  1. Поле Marker Model – его трогать не стоит. Модель маркера уже заложена и будет использоваться в окне рендера;
  2. Child Can Use – могут ли дети использовать маркер;
  3. Ignored By Sandbox – будет ли маркер игнорироваться актерами (применимо в ситуациях, когда маркер выполняет специальную анимацию для какой-либо сцены в каком-либо квесте;
  4. Do Once – маркер будет использован один раз;
  5. Поле Idle Timer Setting – настройка времени выполнения данного маркера. Не все маркеры могут быть настраиваемы этим параметром;
  6. Пункты Random и Run In Sequence отвечают за случайное или последовательное выполнение IdleАнимаций в случаях, когда ваш маркер содержит сразу несколько анимаций;
  7. Этими стрелочками можно регулировать порядок распределения маркеров в списке, соответственно изменять последовательность их выполнения (не забываем про пункт 6).

Разобравшись со свойствами окна, переходим к добавлению новой анимации в наш маркер. Нажимаем на пустое поле правой кнопкой мыши и выбираем New. Перед нам окно Select Idle. Мы видим список всех IdleАнимаций, доступных для использования в IdleМаркерах, кроме того есть поле выбора актера и окно просмотра:


Выберем себе актера, для которого нам нужно получить список анимаций. Обратите внимание, при смене актеров меняется и список. Вы можете упорядочить список по имени или ID. По умолчанию список упорядочен по дате:



Я выбрал Ульфрика Буревестника и получил список доступных анимаций. Обязательно учтите следующее:

  • Список анимаций идентичен для всех играбельных рас, в том числе детей. Для всех пауков, к примеру, будет одинаковый список состоящий из нуля доступных анимаций.
  • В данном списке содержатся где-то 250-300 анимаций. В IdleМаркерах применимы лишь 150. Как правило все они начинаются со слова Idle.
  • Многие анимации не будут проигрываться актерами. К этому нужно привыкнуть и смириться. Вероятно, это есть баг самой системы IdleМаркеров.
  • Все анимации добиваний (около 80) можно найти в этом списке. К сожалению при их исполнении актеры не используют оружие из инвентаря. Они просто машут руками.
  • Не возвращайте окно выбора Актера в позицию NONE – это приводит к вылету редактора.
  • Вероятно, в превью-окне должен был работать рендер самой анимации, дабы вы не включали по 100 раз игру для тестирования. Увы, что сломано, то сломано.
  • Некоторые анимации имеют начало, зацикленную часть выполнения и конец. Используйте либо начальную, либо срединную фазу (в названии анимации слова Start\Enter и Instant).
  • Некоторые анимации наследуют объекты, такие как кинжалы, бутылки, чашки, метла. Добавлять их в инвентарь самому персонажу не нужно. Однако, например анимация чистки меча наследует оружие из инвентаря актера.

Для примера я выбрал анимацию IdleAstrid (Финальная миссия за Темное Братство, обгоревшее тело Астрид «распято» на полу). Далее жмем OK. И выбираем место для своего маркера:


По быстрому я собрал прототипную ячейку, не забыл про сетку путей, Ульфрика и сам маркер:


В результате Ульфрик подходит к маркеру и растягивается на полу:


Не находите это немного скучным и не обыгранным? Так давайте изменим окружение под этот маркер:


И вот сцена преобразилась, она уже может поведать какую-то историю. Ульфрик Буревестник стал жертвой имперского произвола, либо у Авентуса Аретино появились новые заказы для Темного Братства. Первый этап пройден.

Расширение списка доступных IdleАнимаций для использования их в системе IdleMarker

А что если нам мало стандартных анимаций? А есть ли другие анимации? Давайте разбираться. На верхней панели найдите Gameplay, далее Animations:


Перед нами окно Idle Animations. Здесь мы видим каталоги с анимациями для разных типов существ, в том числе для фурнитуры и активаторов:


Запомним это место. Теперь нам необходимо выбрать анимацию, которую мы хотим использовать в качестве IdleМаркера. Для этого откроем в окне Object Window наших NPC. (Actors > Actor):


Находим своего актера, открываем, переходим на вкладку Animation (список анимаций также доступен через Preview Window):


Тут работает рендер анимаций. Все, что нам нужно - это выбрать себе анимацию по вкусу. Естественно лучше искать среди анимаций, начинающихся со слова Idle. Изначально я выбрал анимацию шатающейся пьяной походки (А такая есть и нигде не используется, сюрприз да?), но она не сработала на IdleМаркере. Поэтому возьмем анимацию написания письма пером в сидячем положении (Два сюрприза за день – да вы везунчик!):


Теперь запомним ее название. В моем случае это IdleWriteTableChairIdle.hkx. Название нужного нам AnimEvent’a будет примерно таким же. Возвращаемся к окну Idle Animations. Итак, нам нужен набор анимаций для «разумных рас». Это каталог Actors\Character\Behaviors\0_Master.hkx:


Тут мы видим много подкаталогов с различными действиями для игрока. Ничего не трогаем, листаем вниз до папки LOOSE:


Открыв эту папку, мы видим до боли знакомую картину – тот самый список анимаций, доступных при создании IdleМаркера (разве что сортировка алфавитная). Жмем куда-нибудь в это место правой кнопкой мыши > Insert Child. Получаем новую анимацию, без имени. (отображение вверху списка), придумываем ей ID:


В самом окне имеются дополнительные параметры:

  • Sequence, Blocking, No attacking не трогаем. Они не используются в данном разделе.
  • Looping Seconds используется для задания цикличности выполнения действия.
  • Replay Delay – задержка перед повторным выполнением анимации.
  • Conditions – пропишите условия для выполнения анимации. Тут вы ограничены только свей фантазией. Можно поставить зависимость от чего угодно (погода, пол, раса, уровень и еще десятки условий – все зависит от вас).
  • AnimEvent – само окно для выбора анимационного события:


Начинаем искать нашу анимацию. Мы видим действие IdleWriteTableChairEnterInstant. То, что нужно. Кстати, там еще есть анимации для разных типов кресел: будь то с левосторонним «входом» или правосторонним. Нам же не принципиально. Заметьте, название AnimEvent'a и Havok Анимации не совпадает, но очень похоже:


Выбираем нужную анимацию, нажимаем Close. Открываем свой IdleMarker. Нажимаем New. Получаем список доступных анимаций. Находим там свою IdleАнимацию:


Дважды кликаем по ней, сохраняем маркер и если он у вас уже где-то размещен – смотрим результат в игре:



И вот вроде бы все хорошо. У Ульфрика появилось письмо, он старательно выводит на нем пустоту что пишет. Но. Где стул? А где плавная анимация посадки на этот стул? Непорядок. Давайте разбираться:

Как видите, иногда приходится «помогать» IdleАнимациям нормально выглядеть. Можно было бы подставить какую-нибудь табуретку или камень для Ульфрика, но это не профессиональный подход.

Итак, нам нужно заставить Ульфрика проиграть IdleАнимацию тогда, когда он сядет за стул. Определенный стул, а не кровать или скамейку:


Для этого нам нужен сам Ульфрик. Открываем его как Reference самой локации, переходим на вкладку Scripts и создаем новый скрипт (Add > New > «Вводим название» > OK). Затем правой кнопкой по нему > Edit Source:


Открывается текстовое окно, там мы видим только: Scriptname (Имя вашего скрипта) extends ObjectReference

Сменяем ObjectReference на Actor и полный скрипт выглядит так:

В данном случае, как только Ульфрик использует фурнитуру (OnSit), при условии, что наша фурнитура - нами выбранное кресло (Chair), проигрывается наша IdleАнимация (AnimIdle). Нажимаем File > Save. Скрипт скомпилирован. Остается дать скрипту знать, какую фурнитуру ему нужно учитывать, и какую анимацию проигрывать:

Дважды кликаем левой кнопкой мыши по имени скрипта / правой кнопкой мыши по названию > Edit Properties. Выбираем наше AnimIdle. В окне Pick Object мы видим тот самый список анимаций, доступных только для IdleМаркеров, в который мы занесли новую. Затем в Chair выбираем наше кресло.


Проверим в игре:


Ульфрик садится в кресло, достает пергамент и начинает писать. Великолепно! Сцена обыграна логично (Стол выберете сами).

Гениальность системы искусственного интеллекта Скайрима в том, что он не станет заставлять NPC 100% выполнять вашу анимацию, если его не попросить. Как видите пока один Ульфрик пишет, второй закусывает, а третий запивает:


Минутка словоблудия

В Скайриме зашито множество анимаций, пригодных для использования IdleМаркерами. Почему разработчики их не использовали? Мы не знаем, но ничто не мешает вам использовать эти анимации не только для скриптовых сцен, но и для обычных ситуаций и локаций так, чтобы они стали необычными.

Вот небольшой список (далеко не полный) Havok Анимаций (просмотр во вкладке Actor), которые не найти в повседневном Скайриме, либо их использовали единожды (Даю начало названия, каждая анимация имеет два-три варианта или стадий исполнения):

Диалоги: Основа

Чтобы начать работу с диалогами, найдем наш квест (GSQ01) и дважды щелкнем, чтобы открыть окно квестов. Затем перейдем к закладке "Dialogue Views". Ваше окно должно выглядеть следующим образом:



Для создания нового диалога щелкните правой кнопкой мыши в таблице в левой части окна и выберите "Новый". Вам будет предложено дать ID этому диалогу, и он автоматически получит квестовый ID в качестве префикса. Выберите этот "GSQ01BenduView". Нажмите на него в таблице, чтобы выбрать его.
Перед нами предстал скучный белый простор. Щелкните правой кнопкой мыши в этом пространстве и выберите "Создать отрасли". Вам будет предложено назвать отрасли, которые мы назовем "GSQ01MeetingBenduBranch". Еще одна строка для обозначения темы (Вы можете просто принять значение по умолчанию "GSQ01MeetingBenduBranchTopic"), и, нажав Enter, вы увидите серию прямоугольников, которые, вероятно, ничего не значат для вас.

Прежде чем мы продолжим, мы узнаем некоторые термины, которые лично меня ввели в заблуждение, и мы должны их запомнить:


Это все требует очень много терпения, и мы сделаем отрасль, которая автоматически создаст тему для квеста.Тема в настоящее время не содержит информации.

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

Откройте ваш квест обратно, дважды щелкнув по нему в списке объектов. Нажмите на кнопку "Quest Stages", чтобы перейти (что неудивительно) на закладку Quest Stages
.
Здесь мы будем делать макет квеста. В таблице слева (в столбце "Index"), где этапы будут перечислены, щ елкните правой кнопкой мыши и выберите "New".

У каждого этапа есть свой номер. Оставьте первому "0"

Щелкните правой кнопкой мыши на таблице и выберите "Новый", чтобы создать еще один этап. Назовите его "10" - обычно начинают с шага 10, потому что это дает возможность вернуться и добавить дополнительные промежуточные этапы, если нужно.

Продолжим создание этапов с номером 20, 30 и 40.

Ваш вкладка "quest stages" теперь должна выглядеть примерно так.


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


В Object Window перейдите к Character -> Quest в списке категорий. Щелкните правой кнопкой мыши в списке заданий и выберите "Новый".

Это вызовет окно:


Каждый объект в игре имеет свой ID, так что это должно быть уникальным. Распространенным методом является использование префикса для одного квеста - так легче увидеть все соответствующие ему объекты.На этом уроке мы будем использовать префикс "GSQ".

Размещение персонажа

То, что мы сделали здесь, это лишь "душа" актера, чтобы матерелизовать его в игре, нам нужно создать ссылку на него.

Мы собираемся поместить Бенду в любую существующую локацию.В Mill Mixwater, есть заброшенный дом рабочих.Давайте поселим туда Бенду.


(У вас это окно может быть поменьше)


Убедитесь, что в выпадающем меню справа от "World Space" написано "Interiors", затем выберите "MixwaterMillWorkersHouse" из списка.
Дважды щелкните, чтобы загрузить его.


Навигация в окне визуализации:
-Масштаб- прокрутка колесика мыши
-Панорамное перемещение- зажать колесико мыши
-Прочие движения камерой- SHIFT

Перед нами возникло пространство. Даже не пытайтесь двигать незнакомые объекты (чревато последствиями)
Уменьшим немного, так? чтобы можно было видеть больше внутреннего пространства.
Теперь перенесем Бенду (GSQBenduOlo) прямо в окно визуализации:


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

Давайте начнем с идеи квеста.Это будет простой квест, так что вы сможете получить представление о том, как создавать квесты, построенные в Creation Kit.Если у вас есть, что внизу, то это просто вопрос деталей.

Игрок встречает Бенду Оло, темного эльфа, у которого недавно амулет был украден вором, который прячется в соседней пещере.Он заплатит вдвое больше, чем амулет стоит, если он возвращается к хозяину.

Так что мы можем разделить всю задумку в набор последовательных этапов истории:

  • Предварительный этап: игрок никогда не встречал Бенду Оло.Амулет находится в пещере, вместе с вором.
  • Этап 1: Игрок встретился Бенду Оло и была поставлена задача получить амулет.
  • Этап 2: Игрок убил вора.
  • Этап 3: Игрок получил амулет.
  • Этап 4: Игрок вернул амулет обратно Бенду Оло и получил свою награду.

Мы будем использовать эти этапы, чтобы определить, какие варианты диалога непись предлагает игроку, установить цели и отслеживать ход выполнения задания.

Размещение врага

Есть не так много незанятых подземелий Скайриме, самое подходящее для нас (правда далекое) находится в Гнезде Ветров Предела.Загрузите "ReachwindEyrie01" и разместите вора так же, как мы поместили Бенду в Дом Рабочих.


Видите эту зеленую фигню? Это наш вор. Так сделано, потому что он может быть практически кем угодно (от каджита 5 lvl до вампира-мастера и даже круче).

Подпишитесь, чтобы загрузить
FLOPPY!!<^>


Ever feel like Gravity's holding you down?
FIGHT THE SYSTEM! With FLOPPY!!

For only one click of the subscribe button YOU!
YES YOU!!
Can fly freely and FLOPPYly across the vast mystical land of SKYRIM!

BUT WAIT THERE'S MORE!!
order TODAY and not only you but EVERYONE IN SKYRIM will flop with you!! EVEN NAZEEM just ask him!
"Do you get to the cloud district very often? hm, who am I kidding of corse you don't."
(On behalf of AF industries and TomBombadilthe3rd CO. we offer our apologies for Nazeems attitude)

ORDER YOUR FLOPPY TODAY!!

(may need Dragonborn and Dawnguard to run)

PS. the fiary wings arent mine those are from
(LubaSkyWings) by; galy3

Создание врага

Теперь мы собираемся сделать вора, который украл амулет у Бенду.Создайте нового актера, как мы делали раньше, и дайте ему ID "GSQThief и Name "Грязный вор".

Теперь все становится немного интересней.Вместо указания всех данных вора, мы используем шаблон.В левом нижнем углу окна Actor вы можете увидеть "Шаблон данных".


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

Таким образом, из выпадающего списка ActorBase выберите "LvlBanditMelee1H".

  • Lvl: Этот актер использует уровневый список. Когда игрок становится более мощным, этот актер будет увеличиваться в трудности.
  • Bandit: появление этого актера и его снаряжения соответствует архетипу, и он будет отображаться как "бандит" в боевом интерфейс игрока.
  • Melee: Этот актер будет ближний бой, а не магические атаки.
  • 1H: Этот актер будет использовать одноручное оружие.

Даже у шаблонного NPC может быть множество вариаций.Вы можете получить одного бандита Каджита, а другого женщину норда.


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

Мы не должны беспокоиться о выборе расы, инвентаря, бухла, или чего-нибудь еще, так как мы все это движок берет из шаблона!

Нажмите "OK" для сохранения вора.

Подтверждение

Айсура

m_izar

m_izar

нуууу, яйки там подпрыгивают только в той ссылке, что я дала, но там хер до колен )))))
я до сих пор под впечатлением. таким членом только драконий курятник пугать подойти к Алдуину и, сняв трусы, сказать: "Сейчас я тебя своим посохом магическим оприходую, ящерица!" и бамс ему меж рогов. Гейм овер.

m_izar

Айсура

Ты сможешь еще сегодня со мной потупить, вернее я буду тупить, а ты нет )))))

m_izar

Айсура

Короче квадратики я победила, но у некоторых NPC диалоги стали на английском и если это пока только у не имеющих большого значения НПС, то хз что будет дальше, вдруг что-то подобное случится по основному квесту и тогда я даже не пойму какую строку в диалоге выбрать ))))

У меня получилось прикрутить скриншоты, но в стиме показывает путь один в папку хранения, а на деле они в другой, я бы в жизни не нашла )))) хорошо в стиме есть кнопочка показать папку ))))

По-быстрому создался какой-то Кен, только Барби не хватает. Ржу. Нужно тебе показать, я прям до икоты.

Мудя качаются, кстати, что тоже доставляет, так бы и бегала голышком по травке ))))

Создание персонажа (Бенду Оло)

В Object Window перейдите в Actors -> Actor в списке категорий. Щелкните правой кнопкой мыши в списке актеров и выберите "Новый".

К счастью, большинство полей в окне "Actor" говорят сами за себя. Тем не менее, есть приличное количество установок, которые нам придется указать.


  • ID: То же, что и ID квеста, это должно быть уникальным для игры.Дайте ему ID GSQBenduOlo.(Обратите внимание, что идентификатор не может иметь пробелов или специальных символов.)
  • Name: имя, которое будет видно игроку."Бенду Оло" в нашем случае.
  • Short name: Как другие NPC будут ссылаться на перса..А сейчас просто называют его "Бенду".
  • Unique: Это только флажок нам нужен сейчас.Это позволяет движку знать, что это единственный актер этого типа в мире (в отличие от животных, например).Убедитесь, что это проверено.

Есть несколько вещей, которые мы должны установить с правой стороны.

  • Race: Довольно очевидно.Выберите "DarkElfRace" из выпадающего меню.Теперь Бенду будет иметь вид и расовые бонусы Темных Эльфов.
  • Voice type: Это определяет, каким голосом будет говорить актер.Установите его в качестве MaleDarkElf.

Наконец, идем на вкладку Инвентаризация.Здесь мы дадим ему одежду, чтобы он не просто бегал в трусах.

То, что актер предпочитает носить, определяет его снаряжение.На данный момент дадим ему костюм со шляпой, выбрав "FarmClothesOutfit01WithHat" в выпадающем меню "Экипировка по умолчанию".


Убедитесь, что вы нажали "ОК", а не "Отмена"!

Читайте также: