Учебный курс Bethsoft. GECK. Топология.
Содержание. |
Введение.
Топология — элементарная часть, фундамент любого уровня.На топологии основан весь процесс создания внутриигрового пространства. Топологию Fallout 3 сначала строят из элементов конструктора — набора взаимосвязанных изображений, которые соединяются друг с другом, чтобы построить бесшовную структуру. Это учебное пособие даст основы понимания топологии в контексте конструкторского набора убежищ (Vault kit). Пока конструкторы уникальны, хотя у них всех есть общие похожие общепринятые основные названия и функциональность, с которыми это учебное пособие поможет вам разобраться.
Создание нового Компонента.
Здесь можно посмотреть несколько видеоуроков: страница Bethesda Game Studios на YouTube. Всё что необходимо знать, вы изучите без них по материалам этого сайта. Однако, даже если вы являетесь приверженцами иных форм обучения, вы можете найти видеоуроки полезными, материал усваивается лучше когда он проиллюстрирован.
Видеоурок на YouTube. Топология. Часть 1.
Дублирование и переименование созданного Компонента.
Первое, что нужно сделать, это создать новый interior cell (внутренний компонент). Лучший способ сделать новый компонент — это продублировать уже существующий. Убедитесь, что в выпадающем списке "World Space" в окне "Cell View" (обозревателя компонентов) выбран пункт "Interiors" ("Внутренние") как показано на иллюстрации. В списке компонентов найдите "Vault108a" ("Убежище108а").
Чтобы сделать дубликат компонента, выделите внутренний компонент Vault108a, нажмите правой кнопкой на нём и из контекстного меню выберите "Duplicate Cell" ("Дублировать Компонент").
При дублировании компонента, лучше выискивать похожую тему и набор деталей на ту, что вам хотелось бы сделать. Это выгодно ещё и тем, что вместе с дублируемым элементом скопируются и все настройки с источниками света (Ambient Light) и тумана (Fog), а так же параметры постобработки ImageSpace.
Заметьте что вновь продублированный компонент был создан ниже оригинала и значение в поле EditorID равно "Vault108aCOPY0000" Давайте изменим значение EditorID.
Чтобы изменить значение, в EditorID выберите компонент и нажмите "F2", либо щёлкните на уже подсвеченном компоненте несколько раз. Это позволит вам переименовать значение EditorID. Замените его на Vault74a.
Давайте сделаем окончательные доработки нашего компонента с переименованным EditorID и изменим его имя, которое будет отображаться в игре
Название Компонента"Cell Name" — это имя, которое пользователь-игрок увидит на карте уровня. Иными словами, это вход в компонент. Название компонента так же появляется в меню загрузки как названия сохраненных этапов игры.
Чтобы сделать это правильно, нам нужно щёлкнуть правой клавишей на компоненте Vault74a и выбрать пункт "Edit" ("Редактировать") из контекстного меню. Этот же диалог можно вызвать из главного меню: World>Cells.
После выбора "Edit" ("Редактировать") "Cell" ("Компонент") развернётся окно Properties (Свойства). Щёлкните на закладке "Interior Data" ("Внутреннее содержимое") и измените "Vault 108 - Entrance" ("Убежище 108 - Вход") на "Vault 74" ("Убежище 74"). Нажмите "OK".
Удаление содержимого компонента.
Прежде чем мы сможен начать использование нашего нового компонента, нам нужно удалить из него ненужное содержимое, которое было перенесено при дублировании. Когда ваш новый компонент "Vault74a" загрузится, щёлкните по самой верхней ячейке в колонке списка объектов и нажмите сочетание клавиш "Shift+End", или прокрутите список вниз и щёлкните с нажатой клавишей "Shift" на самом нижнем объекте списка. Так будут выбраны все объекты в списке. Чтобы удалить все объекты нажмите клавишу "Del" или правой клавишей на подсвеченном объекте (они д.б. все подсвечены - прим.пер.) и из контекстного меню щёлкните по пункту "Удалить" ("Delete"). На экране появится запрос о подтверждении удаления. Подтвердите выбор нажав "Yes" ("Да").
Возможно, пока другие компоненты загружаются в окно Render (Окно отрисовки) у вас будут подсвеченные компоненты в окне Cell View (обозревателе компонентов). Чтобы быть уверенным в том, что вы не удалите нужные объекты из другого компонента, проверьте, что заголовок окна Render содержит текст "Vault74a"(главное окно редактора GECK, а не Render — прим. пер.).
Заметьте, что удалится всё за исключением путей следования неигровых персонажей. Удаление маршрутов в компоненте происходит особым способом. С загруженным Vault 74 выберите из главного меню Navmesh>Remove Cell Navmeshes (Удалить>Нависеть компонента). Обратите внимание, что объект Navmesh в списке объектов более не появляется, список совершенно пуст. (Оставить список совершенно пустым у меня так и не получилось. Там всё равно остаётся объект Navmesh —прим. пер.)
Содержимое компонента с объектом Navmesh могут не отображаться как удалённые, пока не перейдёшь на другой компонент и обратно.
Применение деталей конструктора и управление окном отрисовки.
Первое, что нам нужно в только что сделанном модуле, это
разместить несколько заготовок. В нашем руководстве мы используем
заготовки разрушенного убежища (Ruined Vault kit pieces). Извлечём
несколько взаимосвязанных заготовок и изучим как с ними обращаться.
Несколько заготовок, используемых для этого, называются Vault Ruined
Hall Small (Коридор разрушенного убежища малый). Чтобы найти эти части
просто перейдите к ветке дерева в окне "Object Windows" ("Окно
объектов"): "World Objects>Static>
Сетка привязки и сопряжение под углом.
Прежде чем начать размещать заготовки, давайте изучим наиболее важные кнопки редактора.
Это кнопка выравнивания по сетке:
Она включает-выключает режим привязки к сетке. Когда вы перемещаете
объект, размер сетки будет равен 256, 128, 64 или тот, который вы сами
зададите. Оставьте выравнивание по сетке до конца этой части
руководства. Время от времени, в зависимости от используемых элементов,
вам потребуется изменять настройки привязки. Для этой кнопки
предусмотрена клавиша-акселератор "Q". Не откладывая на потом,
убедитесь, что кнопка утоплена и выравнивание по сетке включено.
Настроим свойства сетки. Чтобы получить доступ к настройкам, нажмите правую клавишу мыши в окне render. Следующий шаг - выбор закладки Movement (Перемещение). В этом руководстве, в большинстве случаев, применяется 256-ая сетка как самая подходящая. В некоторых случаях, чтобы лучше подогнать заготовки, вам придётся уменьшить сетку. Вы так же можете изменить настройки Сопряжения под углом, если его значение ещё не установлено в 45.
Настройки привязки: http://sabercow.com/core/images/gridsnap
GECK использует собственную систему измерения, отличную от дюймовой или метрической. Она использует величины, кратные восьми. Во время расстановки, хорошей практикой является использование выравнивания по сетке с наибольшим возможным шагом. Большинство конструкторских наборов Fallout 3 хорошо работают с шагом 128.
Хорошо, если вы будете помнить при настройке шага сетки о том, что рост протагониста в игре равен 128 или около 6 футов.
Другой необходимейший инструмент это кнопка "Snap to
Angle" ("Сопряжение под углом"). Эта кнопка включает-выключает режим вращения на
заданный угол. Когда вы вращаете объект, то угол поворота будет равен
15, 45 градусов или тот, который вы сами зададите. Вновь проверьте,
чтобы до конца этой части руководства эта опция оставалась включена. Вы
можете оставить значение равным 45. Для этой кнопки предусмотрено
сочетание клавиш "Ctrl-Q". "Render Window" ("Окно отрисовки") должно
быть активным.
В GECK угол поворота изменяется от 0 до 360 градусов. Вы можете задать любое допустимое значение угла поворота. Чтобы избежать разрывов в геометрии уровня во время размещения деталей, не рекомендуется использование шага привязки менее 90.
Хорошим тоном при выравнивании является отсутствие перепадов. Небрежное позиционирование, особенно на ранней стадии приведёт к несметному количеству проблем, таких как нестыковка полигонов и разрывы в геоментрии уровня. Эти проблемы могут крайне затруднить отладку и устранение программных ошибок. Так что сосредоточьтесь на аккуратном размещении компонентов, чтобы избавиться от головной боли в будущем.
Большинство клавиш-акселераторов GECK, включая "Ctrl-S" (сохранить), работает в активном "Render Window" ("Окне отрисовки"). Чтобы сделать его активным, щёлкните по заголовку окна или внутри него.
Краткое руководство по клавишам-акселераторам: | ||
![]() |
"Выровнять по сетке" | "Q" |
![]() |
"Сопряжение под углом" | "Ctrl-Q" |
Использование 3D-камеры.
Убедитесь, что "Snap to Grid" ("Выравнивание по сетке") и
"Snap to Angle" ("Сопряжение под углом") включены. За тем, из
списка объектов перетащите заготовку "VHallSm1WayR01" в рабочую
область "Render Window" ("Окна отрисовки"). Теперь, когда в "Render
Window" ("Окне отрисовки") находится объект, мы можем произвести его
осмотр с помощью камеры. (Вы ничего не увидите, так как сначала нужно в
Cell View вызвать контекстное меню объекта Vault74a и выбрать пункт View
— прим. пер.) Следует удостовериться, что освещение так же
включено, кнопка нажата, или используйте для
включения клавишу-акселератор "A".
По поводу данных в GECK следует заметить, что вы создали "Ссылку" на объект VHallSm1WayR01. Вы должны чётко понимать важность различий между самим объектом и ссылкой на него. Когда мы изменяем объект, то в игре это затрагивает и все ссылки на него. В то время как в окне Cell_View_Window (Обозреватель компонентов), загружены ссылки на объекты, в Object Window (окне объектов) перечислены сами объекты.
Используйте колесо прокрутки мыши или удерживая клавишу "V" двигайте мышь вперёд-назад, чтобы приблизить-удалить изображение. Плавное масштабирование с клавишей "V" пригодится для точного перемещения, в то время как колесом прокрутки вы будете пользоваться чаще.
Удерживайте нажатой клавишу "Shift" и двигайте мышью, чтобы вращать камеру. Вы будете перемещаться вокруг выбранного объекта. Если ничего не выбрано, то камера будет оставаться на месте (камера будет вести себя так, как если бы были выбраны все элементы компонента — прим. пер.).
Чтобы переставить камеру в указанную точку нажмите и удерживайте клавишу пробел вместе со средней кнопкой мыши и переместите курсор мыши в нужное место.
Вы можете настроить чувствительность управления камерой, если она слишком стремительная или вялая.
Поставьте курсор над областью Render Window (Окна отрисовки) где нет расположенных объектов и из контекстного меню выберите пункт "Properties" ("Свойства"). Перейдите на закладку "Movement" ("Перемещение») и установите подходящее значение свойства. (Лучше установить в значение 3 — прим. пер.) Вы можете попробовать каждое изменение а за тем вернуть старые настройки. Запомните где находятся эти настройки, чтобы вы могли в будущем изменить их в применении к текущей задаче.
В GECK имеется экспериментальная опция — летающая камера. Чтобы задействовать её, нажмите клавишу "~". Клавиши WASD используются для перемещения, а движения мышью управляют видом от первого лица. Это может дезориентировать. Просто нажмите клавишу"~" , чтобы вернуться к нормальному управлению камерой.
Вы можете получить доступ к свойствам выбрав пункт в главном меню File>Preferences или нажав кнопкуна главной панели инструментов.
Создание коридора.
Видеокурс на YouTube. Топология. Часть 2.
Мы научились управлять нашим компонентом. В окне render
(отрисовки) имеется объект "VHallSm1WayR01". Давайте сделаем коридор.
Во-первых, выберите заготовку коридора в окне render и нажмите "T".
Это позиционирует камеру по центру над выбранным объектом. Теперь, с
включенным "Snap to Angle" , пока курсор расположен над деталью, правым щелчком и
перетаскиванием поверните её на 90 градусов. Левая фронтальная часть
объекта должна быть повёрнута направо, как показано на следующем
изображении.
По умолчанию, когда используется клавиша T для центрирования/приближения текущего вида, сверху экрана находится север. С помощью специального объекта NorthMarker с неизменяемым заголовком, можно переопределить где будет север.
Выберите эту часть Коридора и продублируйте её нажав сочетание
клавиш "Ctrl-D". Получится точный клон выбранного объекта(ов). Как будто
ничего не произошло, так как объекты перекрываются. Однако, если вы
посмотрите список объектов, то вы заметите две заготовки для
коридора "VHallSm1WayR01". Просто перетащите только что сделанную часть
коридора влево от текущего элемента. Убедитесь, что у вас включено
выравнивание по сетке ("Snap to Grid"), что
обеспечит точное соединение элементов мозаики. Посмотрите ещё раз на
второе нижеследующее изображение, чтобы понять как должны выглядеть
скреплённые детали.
Небольшое, но полезное усовершенствование редактора Elder Scrolls CS при дублировании объектов: по умолчанию, выделяется не объект-источник, а новый объект. При дублировании жёстких ссылок в скриптах или квестах, это становится важно.
Давайте добавим поворот влево от только что созданной части. Делается это так как было показано ранее. Выделите деталь, нажмите "Ctrl-D" и тяните новый объект до тех пор пока он не пристыкуется к концу предыдущего. Как показано на иллюстрации ниже, у нас получилось вряд три детали коридора.
Выберите самую левую деталь и нажмите "Ctrl-F". Это вызовет диалог "Найти и заменить" ("Search & Replace"). В поле "Replace with" ("Заменить на") в выпадающем меню выберите "VHallSm2WayR01" и нажмите ввод. Произойдёт замена выбранной части на угловую деталь.
Теперь поверните угловую деталь фронтальной частью вверх.
Запомните, что это делается с помощью правого щелчка по объекту и
перетаскивания. Проверьте так же, что включено. Ваша заготовка теперь должна выглядеть так,
как показано на иллюстрации.
Сейчас самое время изучить соглашения имён, принятые в этом конструкторе. Давайте проанализируем первый элемент VHallSm1WayR01:
Сокращение | Значение |
V | Убежище |
Hall | Коридор |
Sm | Малый |
1way | Прямой проход |
R | Ржавый |
01 | Первая версия |
Угловая деталь называется "VHallSm2WayR01". "2way" — единственное отличие. Это показывает, что деталь является простой угловой. Развилки на три и четыре прохода будут называться "3way" и "4way" соответственно.
Во время изучения соглашений имён может быть полезно поработать с Preview Window (Окном предварительного просмотра). (Вызывается из контекстного меню объекта, пункт Preview, или из главного меню View>Preview — прим. пер.) Разработчики уровней в Bethesda предпочитают описанную здесь последовательность выполняемых действий, что позволяет ускорить разработку и повысить коэффициент полезного действия, однако требуются твёрдые знания соглашений имён принятые в их продуктах.
За поворотом сделаем окончание коридора. Коридор будет заканчиваться заготовкой с дверным проёмом, которую мы поместим сюда, за которым может быть другая комната или проход. Это делается так же как и в случаях с другими элементами конструкции. Дублируйте угловой элемент "Ctrl-D" и переместите новую заготовку к незавершённому угу в конце. Нажмите "Ctrl-F" и замените на "VHallSmEndExSmR01". Сравните ваш вид с первым изображением ниже.
Теперь давайте добавим какую-нибудь лестницу на незаконченном конце коридора. Как и прежде, выберите существующий элемент и дублируйте нажав "Ctrl-D". Выберите новую заготовку, нажмите "Ctrl-F" и замените модуль на "VHallSmStairsR01". Переместите лестничный марш в конец незавершённого коридора и проверьте то что получилось в соответствии со вторым изображением ниже.
Большинство элементов конструкторских наборов нужно стыковать и выравнивать как по вертикальной оси Z, так и по осям XY. Это позволяет создать перекрывающиеся области без усечения границ заготовок.
На верх лестницы добавим угловой элемент. Казалось бы, что нам нужно дублировать лестницу, переместить и заменить её на угловой модуль. Взамен мы просто используем уже готовый угловой элемент который уже есть в компоненте. Выделите угловую заготовку "VHallSm2WayR01", нажав "Ctrl-D" и переместите её в конец лестничного марша. Следом мы поднимем угловой элемент пока он не пристыкуется к верху лестницы. Для этого, во время перемещения объекта, удерживайте клавишу "Z". Пока клавиша "Z" удерживается в нажатом положении, объект может перемещаться вверх и вниз вдоль оси Z.
Вы можете зафиксировать перемещение объекта по осям, удерживая нажатой как "Z", так и "X" или "Y".
Возможности GECK включают в себя предопределённые проекции, которые можно циклически переключать клавишей-акселератором "C", можно включить ортогональную проекцию нажав нуль. Попробуйте попереключаться между видами и проверить правильность сопряжений элементов компонента, избавьтесь от зазоров.
Давайте достроим незавершённую открытую часть, так как мы делали это прежде. Просто дублируйте имеющийся "VHallSmEndExSmR01" элемент и передвиньте его к угловому элементу. Не забывайте использовать "Z" чтобы поднять объект в нужное положение. Ваш компонент должен выглядеть так.
Закроем наш коридор дверями, которые будут стоять в дверных проёмах. Есть два способа сделать это. Первый -- сориентироваться в иерархии Окна объектов (Object Window). Двери, которые нам нужны находятся в World World Objects>Door>Dungeons>VaultRuined>VDoorSlidingRR001.
Здесь можно изучить доступные элементы. Второй метод, который мы обсудим подробно, касается именования рассматриваемого объекта и в меньшей степени типа объекта.
Для второго способа мы используем две новые возможности GECK. В "Object Window" ("Окне объектов") текстовое поле "Filter" ("Фильтр") и "*All" ("Все") категории. Если вы представляете как должны выглядеть объекты, то фильтрация значительно облегчит поиск. Во-первых, давайте убедимся что мы можем осуществить просмотр всех объектов в игре. Для того чтобы полностью развернуть дерево, которое выглядит как здесь, внизу списка должно быть выбрано "*All" ("Всё").
Фильтр GECK допускает использование группового символа *. Этот символ является управляющим и не трактуется как звёздочка. Например, я могу ввести "ghoul" в Object Window, который выведет большое число результатов. Чтобы сузить границы поиска, я могу изменить вводимое слово на "fer*ghoul", что уменьшит количество результатов, которые будут сначала включать в себя буквы "fer" в ID базы и буквы "ghoul".
Теперь, с выбранным "All" напечатайте "vdoorsliding". Всё что мы увидим "VdoorSlidingRR001". (Отобразится гораздо большее количество объектов — прим. пер.) У нас нет двери "Vault74", но сейчас мы её сделаем.
В Fallout 3 очень много объектов, поэтому с пустым полем фильтра, категория *All может загружаться медленно.
Перетащите дверь "VDoorSlidingRR001" в свой компонент. Потом переместите её в один из дверных проёмов. Дублируйте и перемещайте дверь в оставшиеся дверные проёмы. Ваш компонент должен выглядеть так как показано на иллюстрации ниже.
Окончание этой части руководства будет посвящено размещению заготовок на схеме уровня. В некоторых местах я даю объяснения как работают те или иные вещи, но основную работу вы сделаете самостоятельно. Вы можете внести в схему свои собственные изменения, но имейте ввиду, что остальное обучение будет основано на том что вы сделаете сейчас.
Доработка топологии компонента.
Краткая справка по клавишам-акселераторам.
Давайте разберёмся в основных частях этого чертежа. Чтобы построить обозначенные участки, возьмите за основу нижеследующую иллюстрацию. Помните, что подписаны не все элементы. Примените полученные знания о соглашениях имён, чтобы найти обозначенные заготовки.
Когда вы начнёте создавать более сложные конструкции, будет полезно выбирать несколько элементов за раз, дублировать и поворачивать их. Щёлкая или перетаскивая помеченные дополнительные элементы, с нажатой клавишей Ctrl, вы можете выбирать составные модули.
Вспомните, что большинство заготовок используют соглашения имён. Здесь вы найдёте немного больше примеров именования компонентов содержащихся в наборе Vault.
Сокращённое название | Описание |
V | Убежище |
U | Узел конструкции |
Rm | Комната |
Hall | Коридор |
Sm | Малый |
Wall | Часть комнатной стены |
Mid | Пол в комнате |
2way | Угловой элемент |
R | Ржавый |
01 | Первый вариант |
Вы можете разместить несколько временных источников света, которые придадут сцене больше глубины. Тему освещения мы охватим глубже в этой серии руководства в части посвящённой освещению.
Если вы не хотите отгадывать загадки, то не подписанный дверной узел, неплохо работающий для обеих стен, это RmWallExSmR01 и VURmBoothWallWindowR01, лестничный марш это VURmSunkenStairsR01. Для выравнивания двери Убежища следует установить шаг сетки привязки равным 64, а для двери в Пещеру – 32.
Гранки состоят из сходящихся к центру израсцов (ещё известны как тайлы — прим. пер.). Внешние элементы обоих напольных покрытий, похожи на те, что применялись в других комнатах убежища.
Иногда две разные комнаты приходится стыковать с различным шагом сетки.
В этом компоненте, пока не добрались до последней комнаты (Кабинет
Смотрителя), использовалась 256-я сетка. В комнате установлена 128-я
сетка, так что будьте внимательны при стыковке гранок. Обычная заготовка
коридора здесь не подходит. Так что придётся использовать "Plug Piece"
("Вставку"). В этом случае вам нужен "VHallSm1WayPlugR01".
Проверка работоспособности топологии в Fallout 3.
Таким образом, вы получили плагин с чем-то достойным внимания. Давайте испытаем его в игре.
Запустите Fallout 3 launcher и выберите пункт меню "Файлы" ("Data Files"). В появившемся списке файлов вы должны увидеть ваш .esp. Пометьте его и нажмите OK.
Если launcher не работает, то попробуйте создать новый файл "custom.ini" в вашем каталоге установки Fallout 3. Этот файл перекроет совпадающие с "Fallout_default.ini" настройки. Чтобы принудить игру загрузить наш плагин, нужно добавить строку:STestFile2=vault74.espв указанный файл, сохранить и закрыть его. Переименуйте vault74.esp если имя вашего плагина не совпадает с этим. Заметьте что ничего не произойдёт если соответствующий esp-файл не в каталоге Fallout 3/Data.
Как только вы загрузите игру, войдите в режим консоли, нажав клавишу "~" (тильда). Введите консольную команду "COC Vault74a" чтобы воспроизвести ваш новый компонент. (придётся вводить команду вслепую, так что будьте внимательны — прим. пер.)
GECK включает в себя специальный объект, называемый "COCmarker". Расположите этот объект там где пожелаете чтобы он появился, когда используется команда COC. На один компонент может быть установлен только один такой специальный маркер.
Хорошо, если вы после сохранения как можно чаще будете проверять в игре свой плагин.
Теперь, когда у нас уже есть простая законченная топология нашего Убежища, давайте Захламим его.