Как создать свою локацию в скайриме
Давайте начнем с идеи квеста.Это будет простой квест, так что вы сможете получить представление о том, как создавать квесты, построенные в Creation Kit.Если у вас есть, что внизу, то это просто вопрос деталей.
Игрок встречает Бенду Оло, темного эльфа, у которого недавно амулет был украден вором, который прячется в соседней пещере.Он заплатит вдвое больше, чем амулет стоит, если он возвращается к хозяину.
Так что мы можем разделить всю задумку в набор последовательных этапов истории:
- Предварительный этап: игрок никогда не встречал Бенду Оло.Амулет находится в пещере, вместе с вором.
- Этап 1: Игрок встретился Бенду Оло и была поставлена задача получить амулет.
- Этап 2: Игрок убил вора.
- Этап 3: Игрок получил амулет.
- Этап 4: Игрок вернул амулет обратно Бенду Оло и получил свою награду.
Мы будем использовать эти этапы, чтобы определить, какие варианты диалога непись предлагает игроку, установить цели и отслеживать ход выполнения задания.
Создаем свой мир в Skyrim
1 GU (Game Unit) = 0,5625 дюйма = 1,42875 см.
1 THU (TES Height Unit) = 8 GU = 4,5 дюйма = 11,43 см. – шаг изменения высоты рельефа.
1 HP (Height Point) =128 х 128 GU = 182,88 х 182,88 см. - базовая величина, фрагмент поверхности ландшафта приходящийся на один пиксел карты высот.
1 Cell (Ячейка игрового мира) = 32 х 32 HP.
Максимальный размер играбельного мира составляет 128 х 128 Cell, 4096 х 4096 HP, или приблизительно 7 491 х 7 491 метр.
Кое-что о карте высот
Существует миф о том, что Skyrim считывает изображения с оттенками в интервале 0-76%. Это не так. Я скомпилировал градиентную карту с оттенками от черного до белого цветов, и получил ландшафт соответствующей высоты – от -3 745 м. до +3 745 м., без каких либо ограничений.
Использование же таких глубин и высот на практике маловероятно. К примеру мир Tamriel содержит 3808 x 3008 HP, а разница по высоте между самой высокой и самой низкой точками ландшафта составляет 1063 метра. В 3D это выглядит так
Jднако существует некоторое ограничение на разницу высот соседних HP, которая должна лежать в диапазоне от -128 до +127 THU. Если это правило будет нарушено, то соответствующие пикселы карты высот будут исключены при компиляции и на ландшафте получим неприятные артефакты в виде отверстий или вертикальных стен. О наличии подобных ошибок мы узнаем по итогам компиляции, отчетная информация будет содержать следующие строки
Цифры, естественно, будут иными. В этом случае надо доработать карту высот, яркость любых двух соседних пикселов которой не должна отличаться более чем на -128 или +127 шагов градации серого. Это применимо в основном к 16-ти битной карте и лечится, к примеру, снижением яркости изображения (как следствие снижение глубины рельефа) либо применением каких-нибудь сглаживающих фильтров в графическом редакторе (что повлечет сглаживание детализации) или в Geo Control, что даст более интересный результат.
Создание объекта квеста
В Object Window перейдите к Character -> Quest в списке категорий. Щелкните правой кнопкой мыши в списке заданий и выберите "Новый".
Это вызовет окно:
Каждый объект в игре имеет свой ID, так что это должно быть уникальным. Распространенным методом является использование префикса для одного квеста - так легче увидеть все соответствующие ему объекты.На этом уроке мы будем использовать префикс "GSQ".
Диалоги: Основа
Чтобы начать работу с диалогами, найдем наш квест (GSQ01) и дважды щелкнем, чтобы открыть окно квестов. Затем перейдем к закладке "Dialogue Views". Ваше окно должно выглядеть следующим образом:
Для создания нового диалога щелкните правой кнопкой мыши в таблице в левой части окна и выберите "Новый". Вам будет предложено дать ID этому диалогу, и он автоматически получит квестовый ID в качестве префикса. Выберите этот "GSQ01BenduView". Нажмите на него в таблице, чтобы выбрать его.
Перед нами предстал скучный белый простор. Щелкните правой кнопкой мыши в этом пространстве и выберите "Создать отрасли". Вам будет предложено назвать отрасли, которые мы назовем "GSQ01MeetingBenduBranch". Еще одна строка для обозначения темы (Вы можете просто принять значение по умолчанию "GSQ01MeetingBenduBranchTopic"), и, нажав Enter, вы увидите серию прямоугольников, которые, вероятно, ничего не значат для вас.
Прежде чем мы продолжим, мы узнаем некоторые термины, которые лично меня ввели в заблуждение, и мы должны их запомнить:
Это все требует очень много терпения, и мы сделаем отрасль, которая автоматически создаст тему для квеста.Тема в настоящее время не содержит информации.
Как создать свою локацию в скайриме
Создание своего домика в Скайриме с нуля
Автор: Фантом
Заходим в Cell View(Просмотр ячеек) и выбираем WhiterumWorlid из списка
Выбираем координаты 5,-3 что бы очутится в городе.И так вот он наш Вайтран
рис.2
Полюбовались городом а теперь заходим в раздел Static > Architecture
Я выбрал домик WRHouseShack01
рис.3
Я разместил свой дом здесь.Чем отличается скайрим от обливиона?Не только графикой,но и тем что в городах реально нет свободного места для других домов)
Если в Анвиле куча мест где мы можем поместить 40 домов,то в Вайтране дефицит на места.
рис.4
Теперь нам нужна дверь.Найти её можно в разделе WorldObjects > Door
Я взял дверь WRShackDoor01
рис.5
Перетаскиваем её во вход дома.Готово.У дома теперь есть дверь.
рис.6
Далее щёлкаем два раза по двери.Появится вот такая табличка:
рис.7
Пока не закрываем её,она ещё понадобится.Теперь переходим в раздел Cell View(Просмотр ячеек)
Если не помните,посмотрите первый скрин,только вместо WhiterumWorlid мы уже выбераем Interiors(Интерьеры) - они в самом верху.
Жмём по любому из списку интерьеру правой кнопкой мыши щёлкая и жмём Edit
Нас перекинет в окно Cell.Жмём опять же по любому из списка правой кнопкой мыши: New
Вписываем ID.Я вписал: aaaFantomikTestDomik001
Теперь нашему домику нужно название.Справа выбираем interior Data
И вписываем Name(Название)
Я назвал: Ветхий домик Фантома
Рис.8
Жмём ОК и выбираем его в списке щёлкая по нему 2 раза.Мы загрузились в эту ячейку.Тут темно. ОЛОЛОЛО.Что ж.Вспомним мой урок:
2.Разбор простейших функций редактора(Горячие клавиши)
Что надо сделать?Правильно,нажать "A"
Да будет свет!
И так сперва перетаскиваем сюда дверь.Вы помните где дверь?Нет?Точно?Ха.
Ладно,Помните то окошко что я просил вас открыть и не закрывать.Оно должно быть где то за этими всем окнами.Вот оно.Отыскал наконец то.Что ж.Теперь смотри,там где раздел
Teleport
Ставим галочку на Телепорте и жмём кнопку Select Reference бла бла бла
Рис.9
Выбираем нашу одинокую дверь в пустом мире и щёлкаем по ней когда кружочек станет белым. при наведении на неё.Жмём ОК
И О БОГИ!Появилось нечто!Это НЛО)))
Нет господа это маркер,да да,это маркер.Если нечего нет,то сходите к умывальнику и протрите глаза.Или же нажмите "М" на своей клавиатуре.
Так или иначе появится маркер.
Рис.10
У этого маркера есть клювик)))Этот так называемый "клювик" определяет куда будет направлен ваш взгляд когда вы переместитесь в эту ячейку.А сам маркер это ваше
расположение.Вы как бы появляетесь внутри него.
И так опять вспоминаем урок:
2.Разбор простейших функций редактора(Горячие клавиши)
Щёлкаем по маркеру и зажав правой кнопкой мыши вращаем так что бы клювик был направлен от двери.В общем крутим,вертим,что бы получилось так:
Рис.11
Далее проверим наш маркер по ту сторону.Щёлкаем два раза по маркеру.Вылезает табличка:
Рис.12
Она спрашивает вас: Хотите ли вы удивительных,незабываемых ощущений?
Что вы скажите. ДА. ХОТИМ. ХОТИМ ХЛЕБА И ЗРЕЛИЩ.
А вот и нет,она просто спрашивает,хотите ли переместится ко второму маркеру?
Жмём да.И мы видим вот такую уродскую картину.(Как обычно)
Рис.13
Делаем всё по фэншую.Крутим,вертим,перемещаем.И советую вам не всегда использовать F.А иногда и зажимание Z и двигание мышкой,что бы случайно не запуздырить что нибудь очень глубоко)))
Вот готово.Вот так называется по фэншую:
Рис.14
Всё.Пока разобрались со всем.Теперь пора сделать дом.Возвращаемся в нашу пустынную комнату путём телепортации.Теперь самое нудное,собирание дома по частям.Начнём с того на чём крепится дверь:Это раздел статик и архитектура. где в общем был сам внешний дом.
WRShIntStrDoor01
Ставим по фэншую:
Рис.15
Теперь делаем пол.Ну что за дом без пола!
Пол там же,WRlntFloorMid01
И запомните.Всё должно быть по фэншую!Высота пола должна быть одинаковой.Для этого воспользуемся разделом 3D Data.Для этого щёлкаем по полу и смотри там где координата Z,она отвечает за высоту.У меня высота -103.5230
Значит я копирую её,закрываю окно и щёлкаю по другой части пола вписывая туда эту Z.И пол будет ровнее и вам проще.Так же не стесняемся и пользуемся другими координатами такие как X и Y
Рис.16
Что ж,доделаем пол до конца.
Вот пол и готов:
Рис.17
Что дальше спросите вы?Крыша?
Нет. всё по порядку.Потом стены.Находим кусочек: WRShintCor01WinL
И ставим вот сюда:
Рис.18
Круто да?)Но это пока цветочки. затем по левую сторону ставим:
WRShintCor01WinROpenR
Уже самостоятельно.Сложно найти?Используем фильтр в окне объектов:
Рис.19
И так.Не забываем про фэншуй.X,Y,Z и я наши лучшие друзья))
Так ставим стеночку с бока WRShintAlcover01Win и фэйшуйную подставочку WRintFloorMidHalf01
Рис.20
Дальше ставим стеночки.Я их распишу по цифрам
1.WRShintCor01OpenL
2.WRShintStr01Win
3.WRShintCor01
Что ж,если вы шли учениям фэншуя всё получится так:
Рис.21
Теперь крыша.С начало я поставлю по середине.
WRShIntRoofStr01Chimney
вот примерно так
рис.22
и по бокам
WRShIntRoofCorL
WRShIntRoofCorR
В редакторе есть хороший приём.Хотите выделить сразу несколько вещей?Зажмите Ctrl и щёлкайте мышкой по нужным предметам.Далее мы делаем точно так же с другой стороны
В общем вот что у нас должно получится:
Рис.23
Там где не хватило крыши мы вставляем маленькую крышу: WRShIntAlcoveRoof010001
А так же 2 перегородки,на которых держится крыша:WRShIntBeam512 и WRShIntBeamSupport01
Что ж,на этом всё,вот так у нас получилось:
Рис.24
И так,начинаем обустраивать дом. заходим в раздел static > clutter
Я возьму от туда макет для тренировок: PracticeDummy02,на входе коврик: Rug09,рядом с макетом коврик: Rug08 и ещё один коврик Rug12 в маленькой комнатке.По середине столик: UpperTable01,в маленькой комнатке столик: UpperTableSquare01,добавим голову медведя: WallMountedBear01,тут у нас будет и статуя центуриона SteamCenturionStatic,только чуть уменьшим её,а так же поставим к стенке статую Вермины StatueVaermina01.У нас будет так же шкафчик: RuinsShelfSmallFull,да и не один: RuinsShelfSmallHalf,на нём будет стоять красивая ваза: RuinsPot06Static_LightSN.В свободном углу у нас будет погасший светильник: RuinsFloorCandleLampMidOff,а рядом с вазой будет бюст Серого Лиса LoadScreenGrayFoxBust.
Что ж,давайте уже стулья поставим и кровать!Все они находятся в разделе: WorldObject > Furniture.У нас будет один стул: CommonChair01LR и одна кровать: NobleBedSingle01R.Вот и
всё,есть где поспать,есть где поесть.Теперь добавляем чуть света.Раздел WorldObject > Light /Добавляем 2 маркера света: LightForgeFire01 и в доме становится светло.Ах да не забудьте нажать "А" отключив искусственный свет.Так. что ж теперь добавим книг и всякой фигни в шкаф.Это всё в разделе items > Book и там же: ingridient и MistItem.В общем сверху ингредиенты,в середине книги,внизу разное.Добавлю метёлку и кучу всего.В общем украшаем на свой вкус.
Вот что у меня получилось:
Рис.25
Всё,наш дом готов.
Урок написан Фантомом.Любое копирование информации только с разрешения данного пользователя
Как создать свою локацию в скайриме
Автор: ФАНТОМ
И так это мой новый уже четвёртый урок по созданию НПС.
Наша цель,создать добротного Непися.Для этого открываем на любимый редактор.
Заходим в раздел Actors>Actor
Это раздел в котором собраны все НПС.НПС означает Не игровые Персонажи.
Жмём по любому из списка правой кнопкой мыши New
Появилось окно создания НПС.Оно большое и там много букв. Ок,давай
ID - уникальный id персонажа,как и вконтакте =)
Я написал: aaaFantomTestNPS001
Name(Имя персонажа).Name есть во всем разделах,оружие,скрипт,но английский
язык очень разнообразный.Так что давайте называть вещи своими именами.Если
там оружие,то Name переводится как Название,а если НПС(Человек),то Имя.Думаю
понятно))
Я назвал его тестовый НПС.
Short Name-Короткое имя.Ну к примеру если его зовут Орсинусофусолт Вултс,то
Пишем Вултс,это будет его короткое имя.Если ваше Имя не такое уж большое,то
короткого и не требуется.
Теперь разберём всё что ниже. да..это не легко.
Is CharGen Face Preset - Если поставлена галочка, лицо, созданное для этого НПС,доступно для игрока, выбирается при генерации персонажа.
Essential - Обычно ставится на квестового НПС,которые нужны живыми по квесту.Если поставить флажок на этом параметре,то как только здоровье НПС снизится на 0,он упадёт на колени ползая и чуть востановив здоровье,вновь встанет.В общем убить его будет невозможно.
Protected - Защищенный НПС имеет иммунитет ко всем повреждениям, кроме тех которые наносит игрок(ГГ). Игрок(ГГ) единственный кто может убить защищенного НПС.
Respawn:После того как умрёт,появляется через некоторое время вновь на том же месте где был поставлен.
Unique: Это самый важный параметр,который даёт знать движку,что в мире должен быть именно один такой актёр. Только одному модификатору этого НПС позволяется существовать.
Summonable: Если стоит эта опция,то НПС можно использовать в магическом эффекте призыва.
Is Ghost: Если поставить,то на НПС не будет действовать проходя сквозь него,ни оружие,ни магия,ни что.Да же если он будет подходить к ловушкам,они не будут срабатывать.В общем он становится физически,как призрак,но в таком же облике.
Invulnerable: Не какие повреждения не действуют на НПС,но если его атаковать,он может атаковать и вас.
Doesn't Bleed: Если поставить,то если вы будете его колошматить мечом,кровь не будет брызгать с его тела.В общем опция для тех кто боится крови)))
Simple Actor: Отключение анимации и эффекта морфинга(Если незнаем что такое морфинг пишу:Морфинг — это видеоэффект, заключающийся в плавном перетекании одного изображения в другое. Иногда морфингом называют эффект наплыва, когда одна сцена затемняется или затуманивается, а вторая в это время проявляется все резче и сменяет первую. Однако лучше разделять эти понятия. В отличие от наплыва, морфинг обеспечивает соответствие характерных (наиболее привлекающих внимание) точек и контуров начального и конечного изображений.Например, преобразование одного лица в другое, при котором задается соответствие положения характерных точек глаз, носа и т.д. ). Также отключен Менеджер Историй,события смерти и нападения.
Doesn't effect Stealth Meter : Если стоит галочка,то когда НПС видит игрока(обнаруживает), показатель скрытности не реагирует и не изменяется.Типично используется для невраждебных актеров, таких как лисы, кролики, олень и т.д.
Destructible Object: Разрушаемые части данного объекта,если они к примеру есть.Используется крайне редко.
Dialogue: Открывает окно диалогов связанных с этим НПС.
Идём дальше.Справа мы видим раздел Traits(Черты)
Первое:Race
Открыв список выбираем рассу для НПС.Я выбрал imperialRace(Имперец)
Правее ставим флажок на Female,если вы конечно хотите что бы вас персонаж был женщиной.Если нет,до убираем или не ставим.Изначально его там нет.
Skin- Кожа для НПС,заметте,что расса НПС должна быть сходна с кожей иначе модель не будет отображаться нормально.
Height: Регулировка роста НПС, по умолчанию 1.0. Даже небольшие изменения здесь на (0.01) очень заметны.
Weight: Регулирует вес НПС, по шкале 0-100.Чем меньше вес то НПС более тощий,чем больше тем здоровей.
Ниже мы видим Far Away Model.Здесь мы регулируем на каком расстоянии ГГ будет видеть НПС.По умолчанию стоит дистанция: 0.0000
Voice Type - Выбираем из стандартного списке тип голоса для нашего НПС.
Только не так что если он мужчина то говорит женским голосом.Так,как это будет выглядеть некрасиво.
Weapon List: Не используется
Alignment: Не используется
Disposition Base: Не используется
Ещё нужная опция Death Item-Если конечно вам нужно то выбираем из списка тот предмет который появится у этого НПС,после того как его убьют.Вы или кто либо другой.До его смерти этого предмета не будет в его инвентаре.
Opposite Gender Anims - Дословно переводится как Анимация противоположного пола.Т.е если это женщина можем ставим галочку и в её походке будет больше покачивание тазом.
В самом низу мы видим: Preview(Предварительный просмотр актёра в окне которое очень не удобное и находится справа)
Full - Полный просмотр
Head - Просмотр головы
Со всем в Traits разобрались,вернёмся к тому что слева
Scripts - Сюда мы добавляем скрипты которые будет использовать НПС.
Смотрим ниже:
Template Data
Скажу сразу,Template Data это так таковой шаблон данных НПС,в котором можно расставить пакеты,инвентарь по другому НПС.
Для этого просто выбираем из списка базы НПС ActorBase нужного и расставляем галочки.Я объясню их значение:
Use Traits: Использовать черты НПС.Т.е сделать его внешне как тот же НПС.Раса,цвет волос,вес,рост,всё будет соответствовать ему.
Use Stats: Статистика или как принято называть статы.Делает статы НПС как у указанного для шаблона НПС.
Use Script: Всё просто,этот НПС теперь использует его скрипты.А добавленные вами ему скрипты будут игнорироваться,так как в вами же вбито что НПС должен
использовать такие же скрипты как и тот НПС которого вы указали в ActorBase
Use Factions: Этот НПС теперь пренодлежит к той же фракции что и НПС в
ActorBase и к нему так же будет применятся система преступлений указанная во
фракции.
Use AI Data: Использование НПС такого же стиля борьбы и установленных
характеристик,такие как агрессия,мораль и прочие.
Use AI Packages: Использование НПСом таких же пакетов как и у НПС из ActorBase
Use Def Pack List:Использование переопределения списка пакета с хожих с НПС из
ActorBase
Use Attack Data:Использует такие же атаки как НПС из ActorBase
Use Spelllist:Использует схожие с НПС из ActorBase перки и заклинания.
Use Inventory:Аналогичный инвентарь,как и у НПС из ActorBase
Use Base Data:Использует базовые данные НПС из ActorBase,такие как имя и другие
базовые настройки.
Use Keywords:Использует аналогичные ключевые слова.
Что,ж вот мы и закончили.Давайте перейдём к статам.Раздел Stats.
С самого верха мы видим: Leveling Data(Данные уровня НПС)
Level - уровень НПС.Максимальный уровень: 32767
PC Level Mult: Определяет, будет ли этот НПС иметь зафиксированный уровень
(если галочка снята) или рост уровня,ориентируясь по уровню ГГ(Игрока) (если установлена).
Если галочка не установлена то НПС не развивается вместе с игроком.
Level Mult:Умножается уровень ГГ на данное число и защитывается как уровень
НПС.
Calc Min: минимальный(стартовый) уровень NPC.
Calc Max: Максимальный уровень NPC.
Слева находится раздел: Auto calc stats - Если включено, атрибуты актера и навыки будут автоматически рассчитаны основываясь на классе и уровне. Если флажок не установлен, вы можете установить навыки по желанию.
Рассмотрим этот раздел и что он изменяет:
Я бы разделил этот мини-раздел на три раздела:
(первый я бы назвал Health)-Здоровье
Health Offset(Заданное количество здоровья)
Base Health(Базовое количество здоровья НПС)
Calculated Health(Здоровье в результате,т.е редактор плюсует Health Offset + Base Health = Calculated Health )
(второй раздел.Magicka)-Магия
Magicka Offset(Заданное колличество магии)
Base Magicka(Базовое количество магии НПС)
Calculated Magicka(Магии в результате)
(Третий раздел относится к.Stamina)-Выносливость
Stamina Offset(Заданное количество выносливости)
Base Stamina(Базовая выносливость НПС)
Calculated Stamina(Выносливости в результате)
Всё,с этим разобрался.Далее смотрим правей,там где Speed.
Speed-это скорость НПС.Анимация синхронизирована только со скоростью 100%,если же изменить её,то возможно отклонения в анимации данного НПС.
Bleedout Override:Если флажок установлен, это значение используется вместо BleedOut по умолчанию указан в классе.
Class:класс НПС, который определяет его навыки и развивающиеся атрибуты.
И так с окном Stats,далее идёт окно Factions.
Здесь находится окно всех фракий в которых состоит ваш НПС,что бы добавить просто нажмите new и выберете из списка.Или добавте из Окна Объектов.
Фракции находятся в разделе: Character>Faction
Урок по созданию своей фракции смотрите выше.
Assigned Crime Faction - Назначенные преступления фракции.
Каждый участник фракции,может иметь закон преступлений действующий на членов этой фракции, который определяет то, как он реагирует на преступление,будучи свидетелем,или когда преступление совершается против него, и, как другие НПС реагируют на преступления, совершенные против него.Так же в окне фракций НПС мы можем изменить его ранг(место в фракции),нажав на нужную фракцию щёлкнув мышкой по цифре под надписью Rank.
На этом я закончу первую часть полного разбора создания НПС.
Урок написан Фантомом.Любое копирование информации только с разрешения данного пользователя.
Создание врага
Теперь мы собираемся сделать вора, который украл амулет у Бенду.Создайте нового актера, как мы делали раньше, и дайте ему ID "GSQThief и Name "Грязный вор".
Теперь все становится немного интересней.Вместо указания всех данных вора, мы используем шаблон.В левом нижнем углу окна Actor вы можете увидеть "Шаблон данных".
Использование шаблона позволяет типового актера.Это здорово для любого актера, а наш будет боевой, и мы можем легко использовать существующие уровневые списки и статистику, изменяя только те параметры, которые нам нужны.
Таким образом, из выпадающего списка ActorBase выберите "LvlBanditMelee1H".
- Lvl: Этот актер использует уровневый список. Когда игрок становится более мощным, этот актер будет увеличиваться в трудности.
- Bandit: появление этого актера и его снаряжения соответствует архетипу, и он будет отображаться как "бандит" в боевом интерфейс игрока.
- Melee: Этот актер будет ближний бой, а не магические атаки.
- 1H: Этот актер будет использовать одноручное оружие.
Даже у шаблонного NPC может быть множество вариаций.Вы можете получить одного бандита Каджита, а другого женщину норда.
Выбрав шаблон, нам нужно выбрать, какие аспекты этого шаблона мы хотим использовать, ставя галочки в соответствующие поля в области шаблона. Поставьте галочки везде, за исключением "Использовать сценарий" и "Использование базы данных".
Мы не должны беспокоиться о выборе расы, инвентаря, бухла, или чего-нибудь еще, так как мы все это движок берет из шаблона!
Нажмите "OK" для сохранения вора.
Переходим к практике
Создаем карту высот
Самое сложное – это создание карты высот, которая дала бы нам в итоге желаемый рельеф и без ошибок. Можно рисовать её в каком-нибудь графическом редакторе, можно воспользоваться специализированным софтом, предназначенным для генерации ландшафтов, а можно совместить эти два варианта – наброски сделать в редакторе, а необходимую детализацию добавить с спец-софте. Для данного туториала я воспользовался программой Geo Control 2. После запуска программы будет активна вкладка Generation и в настройках General устанавливаем Terrain Size – 4096 (разрешение карты высот), Width – 7491 (ширина ландшафта), Height – 600 (желаемая максимальная высота рельефа), Amount of details – 16 (детализация генерируемых искривлений поверхности), переходим в настройки Filter и добавляем парочку фильтров с настройками как на скриншоте:
Нажимаем кнопку Generate и ждем завершения генерации, смотрим в режиме 3D, устраивает ли нас результат. Если не очень – то генерируем заново, до достижения приемлемого рисунка, каждый раз рельеф будет разный. При получении желаемого рисунка можно отметить чекбокс Keep Seed – это предотвратит изменение рельефа при последующей перегенерации, которая может понадобиться при настройках или изменениях фильтров. У меня получилось вот так:
Если освоить программу и изучить настройки фильтров, то можно делать весьма приличные ландшафты. К тому же (если например нужно определенное расположение гор) можно импортировать изображение с набросками рельефа, и доработать до приемлемого качества.
Закончив генерацию ландшафта переходим на вкладку Project, и устанавливаем параметры Projectsize 4096 и Max Altitude 600 (высота рельефа, как в настройках Generation, но можно и другую выставить) и 0 в полях Point at и Cut соответственно. После чего нажимаем Rebuild и ландшафт реконструируется. При этом он станет почти плоским, это нормально. Проект можно сохранить и экспортировать результат в формате RAW 16 bit или TIFF 16 bit.
Полученную карту высот открываем в Photoshop и отражаем по вертикали, так как TESAnnwyn при обработке RAW формата отражает изображение, таким образом восстанавливая исходное положение, и применяем размытие по Гауссу с радиусом 1 пиксел, для сглаживания угловатостей в рельефе подобных этим
Сохраняем результат в формате RAW. На всякий случай настройки открытия и сохранения RAW формата в Photoshop
Компилируем .esp
TESAnnwyn – это консольная утилита, которая на основе карты высот компилирует esp файл с ландшафтом. Для своего ландшафта я использовал следующие параметры
Подробности о программе и параметрах её запуска можно изучить в прилагаемой к ней документации. Остановлюсь лишь на параметре –h, который отвечает за уровень самой нижней точки ландшафта относительно уровня воды, который в свою очередь задаётся в параметрах Worldspace в esp файле создаваемого мира, по умолчанию равен нулю, и я его не менял, за отсутствием видимого смысла. Эта цифра измеряется в GU и зависит от особенностей рельефа и необходимого уровня воды.
Компиляция завершилась успешно
Ошибок не возникло, разница высот около 600 метров, что и ожидалось. Копируем полученный esp в папку data в директории игры (можно переименовать) и переходим к следующему шагу.
Создание лодов
Для создания лодов воспользуемся программой Oscape. Лоды можно создать и с помощью Creation Kit, но это долго, чревато вылетами конструктора и отсутствием контроля над процессом. После запуска программы первым делом в меню Game выбираем режим работы Skyrim.
Во вкладке Active Plugins отмечаем наш esp файл с ландшафтом, если вы его не переименовали, то он будет называться tesannwyn.esp. По слухам Oscape работает только с esm файлами, но у меня он и с esp прекрасно справился. Далее нажимаем кнопку Fill и в выпадающем слева списке выбираем наш мир, название которого задавали в параметре –w при создании esp. Отмечаем чекбоксы feature-map и surface-map. Выбираем место и имя файла вывода, и жмём Extract.
После извлечения необходимых файлов программа переключится на вкладку Preview, где мы увидим нашу карту высот, и области заполненные водой, обозначенные синим цветом. Если уровень воды отличается от ожидаемого, то нужно перекомпилировать esp с корректировкой параметра –h. Затем повторить извлечение карты высот в Oscape.
Oscape имеет одну неприятную особенность – ячейка с координатами 0, 0 не обрабатывается при извлечении карты высот, что выражается черным квадратом на карте размером 31 х 32 пиксела и соответствующим провалом в лодах. Лечится вставкой в извлеченную карту аналогичной области из исходной карты, с корректировкой яркости, так как карты отличаются. Результат до и после.
Параметры сохранения текстур
UPD. Проблема с ячейкой 0, 0 обусловлена отсутствием регионов в esp файле. Добавление хотя бы одного региона с помощью Creation Kit, даже без назначения на какие либо ячейки, перед запуском Oscape, устраняет проблему пустой ячейки с координатами 0, 0 в лодах.
После исправления карты высот нажимаем кнопку Accept в программе Oscape и попадаем во вкладку Generator. Выставляем параметр Target of max. Resolution отвечающий за полигональность генерируемых мешей. Слишком высокое значение приводит к ошибке при генерации лодов, поскольку количество полигонов в мешах не может превышать 64 К на один меш. Для моей карты подошло значение 800 000. Отмечаем чекбоксы как на скриншоте и жмём Generate. После завершения генерации программа переключит нас на вкладку Installer, где проверяем правильность директории инсталляции (папка data в директории игры), отмечаем все чекбоксы и жмём Install.
Теперь можно подключить наш esp в лаунчере игры и переместиться в созданный мир с помощью консольной команды cow testworld 0 0. Testworld – название вашего мира, координаты ячейки могут быть другими, в диапазоне размеров вашего мира.
В качестве дополнения к туториалу хочу показать ещё один вариант создания карты высот.
На этот раз мы не будем генерировать рельеф случайно, а попробуем создать его по своим параметрам, на основе заготовки.
Заготовочку для примера я сделал разрешением 2048 х 2048 пикселов, и довольно примитивную. Можно сделать её с большим количеством слоёв, и более разнообразным рельефом. В моём случае это будет остров с большой горой. Нарисована она из восьми слоев разного оттенка серого, от 30% до 95%. Первые три слоя (самые темные) имеют между собой меньшую разницу в оттенке, нежели последние, этим обеспечивается необходимый угол наклона поверхности. После сведения слоев применяем размытие по Гауссу, в моем случае с радиусом 20 пикселов.
Импортируем в Geo Control
и начинаем экспериментировать с фильтрами. Здесь ни каких конкретных советов дать не могу, сам только учусь. После часа экспериментов у меня получилась вот такая картина
Дальше всё по туториалу, компилируем esp, если возникают ошибки возвращаемся в Geo Control, меняем настройки фильтров, и пробуем ещё раз. Если ошибок не много, то можно уменьшить высоту рельефа в параметре Max Altitude на вкладке Project. У меня рельеф генерировался с высотой 1500 м., а Max Altitude я установил в 1000 м. Высота после компиляции получилась 964 м. над водой, и 29 м. под водой.
Дополнение
Выше было рассмотрено создание ЛОДов земли для нашего мира. Но ЛОДы - это не только земля на расстоянии, но также и отдаленные объекты и деревья. Стоит отметить, что на сегодняшний день существует много различных утилит по генерации ЛОДов для объектов и деревьев, но мы же их тут рассматривать не будем. Предполагается, что вы будете использовать для этого редактор Creation Kit. И сейчас мы поговорим об одном очень неприятном подводном камне, с которым вы наверняка столкнетесь в процессе работы.
Дело в том, что алгоритм работы Oscape и Creation Kit (далее СК) - разный, и частенько бывает такое, что ЛОДы объектов/деревьев, созданные с помощью СК, не будут работать с ЛОДами земли, сгенерированными через Oscape. Как результат вы либо будете видеть только ЛОДы деревьев/объектов и отсутствие ЛОДов земли, либо наоборот, либо же чересполосицу земли (полоса светлая, полоса черная). Мы же сейчас обсудим как нам "сшить" эти ЛОДы так, чтобы они вместе корректно работали. Ну что ж. немного о том, в чем технически заключается данный конфликт.
Итак, Oscape-у все равно, какие ячейки у вас задействованы, он спокойно сгенерирует ЛОДы земли для всего мира. а СК же создает ЛОДы только для активных ячеек, т.е. для тех, которые задействованы (видоизменены, отредактированы) у вас в плагине. Таким образом, какая-нибудь ячейка "Пустоши -30 -30" на отшибе вашего мира вряд ли подвергалась редактированию и, следовательно, не будет затронута при генерации ЛОДов через СК. Поэтому нам нужно сделать ее активной вручную. Суть конфликта вроде бы объяснил, теперь к решению. Сделать ячейку "активной", можно поредактировав там ландшафт или поместив в нее какой-то объект. Но не спешите, это несколько не то, что я предлагаю. Значит, мы открываем в СК вкладку "World", идем в раздел "Regions" и создаем новый регион для своего мира. Причем создаем не абы какой, а строго определенный. Квадрат с координатами в крайних ячейках нашего мира. Например так:
- левый нижний угол (-32; -32)
- левый верхний угол (-32; -31)
- правый верхний угол (31; 31)
- правый нижний угол (31; -32)
И отмечаем регион как "Border region" - т.е. граничный. Это не обязательно, но, сами понимаете, за ним все равно ничего нет, а подобная галка не позволит игроку зайти за край мира. Все ячейки, которые затрагивает регион, стали "активными". Теперь их видит наш esp. Все, такой вот нехитрой операцией мы решили упомянутую проблему несостыковки ЛОДов. Теперь можно спокойно генерировать ЛОДы объектов/деревьев в СК и не бояться того, что с ЛОДами от Oscape-па что-то случится.
Да, немаловажное замечание! Сохраните свой плагин и перезапустите СК, в момент генерации ЛОДов ничего не должно быть подгружено в Render Window, иначе беда - поломается ландшафт, и вы запорете себе плагин. Поэтому не забудьте перед генерацией сделать бэкап, ну и, желательно, сконвертировать свой esp в esm и генерировать ЛОДы уже из esm.
Создание этапов квеста
Откройте ваш квест обратно, дважды щелкнув по нему в списке объектов. Нажмите на кнопку "Quest Stages", чтобы перейти (что неудивительно) на закладку Quest Stages.
Здесь мы будем делать макет квеста. В таблице слева (в столбце "Index"), где этапы будут перечислены, щ елкните правой кнопкой мыши и выберите "New".
У каждого этапа есть свой номер. Оставьте первому "0"
Щелкните правой кнопкой мыши на таблице и выберите "Новый", чтобы создать еще один этап. Назовите его "10" - обычно начинают с шага 10, потому что это дает возможность вернуться и добавить дополнительные промежуточные этапы, если нужно.
Продолжим создание этапов с номером 20, 30 и 40.
Ваш вкладка "quest stages" теперь должна выглядеть примерно так.
Размещение персонажа
То, что мы сделали здесь, это лишь "душа" актера, чтобы матерелизовать его в игре, нам нужно создать ссылку на него.
Мы собираемся поместить Бенду в любую существующую локацию.В Mill Mixwater, есть заброшенный дом рабочих.Давайте поселим туда Бенду.
(У вас это окно может быть поменьше)
Убедитесь, что в выпадающем меню справа от "World Space" написано "Interiors", затем выберите "MixwaterMillWorkersHouse" из списка.
Дважды щелкните, чтобы загрузить его.
Навигация в окне визуализации:
-Масштаб- прокрутка колесика мыши
-Панорамное перемещение- зажать колесико мыши
-Прочие движения камерой- SHIFT
Перед нами возникло пространство. Даже не пытайтесь двигать незнакомые объекты (чревато последствиями)
Уменьшим немного, так? чтобы можно было видеть больше внутреннего пространства.
Теперь перенесем Бенду (GSQBenduOlo) прямо в окно визуализации:
Создание персонажа (Бенду Оло)
В Object Window перейдите в Actors -> Actor в списке категорий. Щелкните правой кнопкой мыши в списке актеров и выберите "Новый".
К счастью, большинство полей в окне "Actor" говорят сами за себя. Тем не менее, есть приличное количество установок, которые нам придется указать.
- ID: То же, что и ID квеста, это должно быть уникальным для игры.Дайте ему ID GSQBenduOlo.(Обратите внимание, что идентификатор не может иметь пробелов или специальных символов.)
- Name: имя, которое будет видно игроку."Бенду Оло" в нашем случае.
- Short name: Как другие NPC будут ссылаться на перса..А сейчас просто называют его "Бенду".
- Unique: Это только флажок нам нужен сейчас.Это позволяет движку знать, что это единственный актер этого типа в мире (в отличие от животных, например).Убедитесь, что это проверено.
Есть несколько вещей, которые мы должны установить с правой стороны.
- Race: Довольно очевидно.Выберите "DarkElfRace" из выпадающего меню.Теперь Бенду будет иметь вид и расовые бонусы Темных Эльфов.
- Voice type: Это определяет, каким голосом будет говорить актер.Установите его в качестве MaleDarkElf.
Наконец, идем на вкладку Инвентаризация.Здесь мы дадим ему одежду, чтобы он не просто бегал в трусах.
То, что актер предпочитает носить, определяет его снаряжение.На данный момент дадим ему костюм со шляпой, выбрав "FarmClothesOutfit01WithHat" в выпадающем меню "Экипировка по умолчанию".
Убедитесь, что вы нажали "ОК", а не "Отмена"!
Размещение врага
Есть не так много незанятых подземелий Скайриме, самое подходящее для нас (правда далекое) находится в Гнезде Ветров Предела.Загрузите "ReachwindEyrie01" и разместите вора так же, как мы поместили Бенду в Дом Рабочих.
Видите эту зеленую фигню? Это наш вор. Так сделано, потому что он может быть практически кем угодно (от каджита 5 lvl до вампира-мастера и даже круче).
Читайте также: