09 апреля 2008
Обновлено 17.05.2023

Кризисное редактирование. Создание уровней для Crysis, часть 2

Кризисное редактирование. Создание уровней для Crysis, часть 2 - изображение обложка

В прошлой статье по созданию новых уровней для Crysis мы познакомились с редактором Sandbox 2 , изучили основы создания несложных карт, научились генерировать и модифицировать ландшафт, наносить текстуры на полученную заготовку, добавлять на уровни растительность и некоторые другие декорации (здания, транспортные средства, динамические конструкции).

Сегодня мы двинемся дальше и займемся доработкой карты — проложим несколько дорог, настроим параметры освещения, поупражняемся в создании своих собственных моделей в Sandbox 2, изменим уровень гравитации в некоторых зонах, создадим мини-карту игровой территории.

Скажи «нет» бездорожью

Начнем с дорожного строительства. Чтобы создать участок дорожного полотна в Sandbox 2, придется изрядно попотеть. Дело в том, что все дороги и тропинки в Crysis — не типовые двумерные текстуры, а полноценные 3D-объекты. То есть создать текстурный слой, содержащий изображение дороги, и пройтись кисточкой по определенным фрагментам ландшафта не получится. Процесс создания новой дороги в редакторе проходит в несколько последовательных этапов — формирование базовой заготовки (3D-модели дороги), подгонка под ландшафт и текстурирование.

Приступим. На панели RollupBar в правой части редактора перейдите во вкладку Objects (первая по счету) и в поле Objects щелкните по кнопке Misc. В появившемся свитке Object Type (тип объекта) кликните по кнопке Road (дорога). Настройте параметры дорожного полотна в свитке Road Params. Например, вы можете модифицировать ширину дороги и бордюра (параметры Width и BorderWidth ), изменить размер шага (характеристика StepSize ) или длину тайла (атрибут TileLength ). Закончив, перейдите в окно 3D-вида и щелкните левой клавишей мышки по тому участку на карте, где хотите обозначить базовую контрольную отметку — позицию, с которой начнется формирование дорожного полотна.

После этого передвиньте мышь вправо или влево на несколько позиций и щелкните левой кнопкой мышки по выбранному фрагменту ландшафта, чтобы сформировать участок дороги заданной длины. Чтобы присоединить к полученной дороге еще одну секцию, снова переместите мышь на новое место и кликните левой кнопкой мышки на уровне — будет сформирована еще одна ключевая отметка. По аналогии добавьте еще несколько звеньев. Для завершения создания дороги (определения последнего чекпойнта) щелкните дважды левой кнопкой мышки по карте.

Как видите, ничего сложного. Всего несколько контрольных кликов — и модель готова. Вот только полученное дорожное полотно практически не пригодно для езды — картину портят многочисленные ямы, рытвины, ухабы, небольшие горки и впадины. Решить проблему можно двумя способами: изменить ландшафт вручную при помощи терраформеров или же программно, используя инструмент Align Height Map. Мы пойдем по второму, наиболее удобному пути. Не снимая выделения с дороги, на панели RollupBar в правой части редактора перейдите в свиток Road Parameters и в поле Heightmap щелкните по кнопке Align Height Map. Программа автоматически выровняет местность, через которую проходит дорога, — сгладит резко выраженные поверхности, ликвидирует горные цепи и низменности (овраги, ухабы, ущелья и т.д.).

Итак, дорога готова для движения транспорта. Последние штрихи — осталось нанести текстуры на заготовку. Выделите дорогу на сцене щелчком левой клавиши мышки. Затем выберите пункт меню View/Open View Pane/Material Editor. Откроется окно редактора материалов. На панели директорий и файлов в левой части подпрограммы выберите любую текстуру из каталога Materials/terrain/roads , например, road_concrete_one_stripe. Можно поэкспериментировать с настройкой параметров текстуры — изменить степень свечения (характеристика Glow Amount ), применить к изображению один из эффектов постобработки (атрибут Post Effect Type ), тип поверхности (параметр Surface Type ) или, скажем, задать уровень прозрачности картинки ( Opacity ).

Чтобы присвоить выбранный материал дороге, кликните по кнопке Assign Material to Selection на панели инструментов в верхней части окна Material Editor (первая по счету). Если вы все сделали правильно, увидите, как дорога покроется текстурой с одной сплошной разделительной полосой.

Чтобы подправить расположение контрольных отметок дороги на карте, выделите любую в окне перспективы, после чего на панели RollupBar в свитке Road Parameters щелкните по кнопке Edit. Активируйте режим Select and Move на панели инструментов, кликните левой кнопкой мышки по одной из «дорожных» отметок (она подсветится) и передвиньте объект по одной из осей.

Запаситесь терпением (процесс небыстрый) и обозначьте на карте трассы, тропинки и дороги. Закончив, протестируйте уровень в игре ( Ctrl + G ).

Накладные картинки

Чтобы украсить и повысить детализацию уровня, добиться плавных текстурных переходов между объектами, надо покрыть их специальные 2D-артами, которые размещаются поверх основного текстурного слоя.

Поучимся добавлять элементы данного типа на карту. Прежде всего, щелкните по кнопке Follow Terrain на панели инструментов, чтобы все размещаемые нами элементы не висели в воздухе, а прилегали к ландшафту. На панели RollupBar перейдите на закладку Objects. В поле объектов щелкните по кнопке Misc и выберите из списка Object Type строку Decal. Перейдите в окно 3D-вида и щелкните левой кнопкой мышки по тому участку на уровне, куда хотите добавить объект.

На данный момент «накладная» картинка представляет собой невзрачную серую плоскость. Чтобы применить материал к созданной заготовке, на панели в правой части редактора загляните в свиток Decal и щелкните по кнопке напротив комментария MTL. В открывшемся окне редактора материалов выберите произвольную текстуру из каталога \decals , скажем, blood_splat10 , и кликните по кнопке Assign Material To Selection на панели инструментов в верхней части окна Material Editor , дабы закрепить материал за объектом.

Для изменения свойств добавленной на уровень «накладной» картинки выделите ее и модифицируйте характеристики в поле Decal Params на панели Rollup Bar. Рассмотрим предназначение основных атрибутов из данного свитка. Параметр Projection Type определяет способ проецирования изображения. Данная характеристика может принимать любое целое значение в диапазоне от 0 до 5 (1 — текстура будет спроецирована на поверхность любого объекта, 2 — непосредственно на ландшафт уровня, 3 — комбинация первого и второго типов проецирования, при использовании данного метода арт будет спроецирован частично на ландшафт, а частично — на заданный объект). Характеристика ViewDistRatio определяет дистанцию прорисовки элемента, то есть расстояние, на котором игрок будет видеть данную текстуру.

Перемещение, поворот, масштабирование «накладных» картинок производится в специальном режиме Reorientate (переориентация). Для его активации на панели RollupBar в правой части редактора перейдите в свиток Decal и щелкните по кнопке Reorientate. Чтобы изменить местоположение арта на карте, щелкните по нему левой кнопкой мышки, зажмите клавишу Ctrl и передвиньте мышь. Для закрепления новой позиции элемента нажмите левую кнопку мышки. Дабы повернуть картинку на определенный угол, зажмите клавиши Ctrl + Alt и перетащите мышь на новое место. Масштабируется изображение при помощи движения мыши с зажатой клавишей Alt на клавиатуре.

Системы рек

Практически во всех оригинальных уровнях из Crysis можно встретить не только океаны, моря и озера, но и реки. Почему бы и нам не обозначить на карте пару-тройку небольших бурных речушек? В этом нам поможет инструмент River.

На панели RollupBar в правой части редактора перейдите на закладку Objects и в свитке Objects нажмите кнопку Misc. Выберите из списка Object Type элемент типа River (река). Перейдите в окно перспективы и обозначьте щелчками левой кнопки мышки контрольные точки, по которым пройдет русло реки. Чтобы завершить создание новой речки, кликните дважды левой кнопкой мышки по карте.

Теперь нужно сформировать русло. Как и при создании дорог, вы можете решить проблему двумя способами — вручную, используя терраформеры, или же автоматически, с помощью инструмента Align Height Map. Мы сгенерируем углубление для реки программно. Выделите реку на уровне, после чего в свитке River Params на панели в правой части Sandbox 2 присвойте атрибуту Width (ширина реки) значение 20. Затем проследуйте в свиток River Parameters и в поле Heightmap щелкните по кнопке Align Height Map.

Осталось задать нашей реке специальный «речной» материал. Выделите русло в окне перспективы и щелкните по клавише M для вызова редактора материалов. В открывшемся окне выберите произвольную запись из каталога Materials/Ocean/ , которая содержит ключевое слово river — например, river_village , — и кликните по кнопке Assign Material to Selection на панели в верхней части редактора материалов. Для придания пущей реалистичности реке поэкспериментируйте с настройкой атрибутов из свитка River Params — например, измените ширину русла и бордюра (параметры Width и Border Width ), глубину (характеристика Depth ), скорость течения воды (атрибут Speed ).

Разработчики рекомендуют задавать этим параметрам следующие значения: River Params. Width = 30 , BorderWidth = 8 , StepSize = 6 , ViewDistRatio = 100 , TileLength = 4 , Depth = 10 , Speed = 0.5 , FogDensity = 0.5 , FogColor = 61,86,91 , FogColorMultiplier = 0.1 , UScale = 0.05 , VScale = 0.2.

Моделирование в Sandbox 2

Sandbox 2 настолько универсальный редактор, что в нем можно не только создавать новые уровни, но и заниматься моделированием объектов. То есть чтобы добавить в игру, допустим, новый автомобиль или кокосовую пальму, совсем не обязательно прибегать к помощи «Макса». В Sandbox 2 можно конструировать модельки зданий, мостов, водонапорных и сторожевых вышек, терминалов, заборов, укреплений, растительности и других объектов не слишком сложной формы. Для моделирования персонажей и инопланетных субстанций редактор, увы, не годится. Полученные с помощью Sandbox 2 3D-формы никто не мешает сохранить на винчестере в формате OBJ , понятном большинству современных редакторов 3D-контента.

Создание любых конструкций в Sandbox 2 выполняется на базе стандартных примитивов — кубов, сфер, цилиндров и конусов. Попрактикуемся в добавлении простейших геометрических тел на сцену. На панели RollupBar перейдите на закладку Objects и в поле Objects кликните по кнопке Solid , чтобы перейти в режим моделирования. В свитке Create Brush Parameters выберите любой примитив из списка ( Box — куб, Cone — конус, Sphere — сфера, Shape — форма), а в поле напротив комментария Num Sides задайте произвольное число граней объекта, например, 4. Затем перейдите в окно 3D-вида, щелкните левой кнопкой мышки по тому месту на уровне, куда хотите поместить объект, и, не отпуская ее, установите нужную длину и ширину конструкции.

Закончив, отпустите левую клавишу мыши — изменения сохранятся. Для определения высоты элемента передвиньте мышь вверх или вниз. Зафиксировать положение и габариты каркаса (завершить формирование примитива) можно нажатием левой клавиши мышки. Перемещение, поворот и масштабирование новых моделей осуществляется так же, как и в случае с типовыми игровыми объектами.

Переходим к модифицированию простейших объектов. Выделите примитив в окне перспективы, после чего на панели в правой части редактора в свитке Solid Parameters щелкните по кнопке Editing Mode для активации режима редактировании конструкции. Всего в Sandbox 2 предусмотрено 4 режима работы с трехмерными формами — Vertex , Edge , Face , Polygon. Первый из них (Vertex) позволяет модифицировать объекты на уровне вершин — передвигать/удалять вершины. Второй — Edge — служит для редактирования ребер (краев) модели, третий и четвертый режимы (Face и Polygon) нацелены на модифицирование полигонов, из которых состоит элемент.

Рассмотрим действие инструментов Vertex и Polygon более подробно. Для начала давайте поучимся перетаскивать отдельно взятые вершинки solid-объектов. Выделите подопытную модель в окне 3D-вида и перейдите в режим редактирования. Далее в свитке Selection Type выберите пункт Vertex. После этого снова перейдите в окно 3D-вида и кликните левой клавишей мышки по любой вершинке объекта. Появится индикатор перемещения. Чтобы передвинуть вершину по одной из осей (абсцисс — X , ординат — Y или аппликат — Z ), наведите курсор на нужную ось и переместите манипулятор с зажатой левой кнопкой на новое место. Если вы хотите выбрать две и более вершин модели одновременно, зажмите клавишу Ctrl на клавиатуре, после чего поочередно выделите нужные точки конструкции. Редактирование полигонов объекта (режим Polygon) осуществляется аналогичным образом.

Для текстурирования модели выполните следующие действия. Выделите созданную модель в окне 3D-вида. Затем вызовите редактор материалов (горячая клавиша M на клавиатуре). В появившемся окне выберите произвольную текстуру из списка, например, Materials/alien_level_material/generic_surfaces/generic_b и щелкните по кнопке Assign Material to Selection на панели в верхней части формы Material Editor.

Для экспорта созданной модели в файл формата OBJ выделите ее в окне перспективы и выполните команду File/Export Selected Geometry to .OBJ (чтобы выделить группу solid-конструкций, зажмите клавишу Shift ). В открывшемся диалоговом окне перейдите в каталог, куда хотите сохранить модель, и нажмите кнопку Сохранить.

Мини-карта

Ландшафт готов, декорации на месте, про дороги тоже не забыли. Следующий этап работы — создание мини-карты уровня (радара, по которому нам приходится ориентироваться во время игры). Для реализации задуманного нам понадобится редактор уровней Sandbox 2 и «Блокнот» (для правки некоторых параметров).

На панели RollupBar переместитесь во вкладку Terrain (вторая по счету) и в свитке Terrain щелкните по кнопке Minimap , чтобы включить инструмент для автоматической генерации мини-карты. Вы увидите, что на сцене появится зеленая рамка, символизирующая границы радара, а также небольшой синий прямоугольник. Ухватитесь за синюю рамку левой кнопкой мышки, перетащите ее в центр уровня и щелкните по кнопке Use New Mini Map Area в свитке Mini Map на панели RollupBar.

В поле Minimap Properties свитка Mini Map измените значение атрибута Resolution на 2048. Эта характеристика отвечает за разрешение картинки. Поменяйте высоту камеры. Для этого присвойте параметру Camera Height из свитка Mini Map значение 400. Теперь загляните в директорию \ Game\ScreenShots\Map. Там вы обнаружите два файла — изображение радара и XML -документ, описывающий точные координаты мини-карты (информация из данного файла передается непосредственно движку и используется для корректного отображения местоположения игрока на радаре). Переименуйте XML-файл в соответствии с названием вашей карты (название должно соответствовать имени вашего уровня). Затем скопируйте файлы мини-карты из каталога \Map в папку со своим уровнем. Снова откройте XML-файл в «Блокноте». Вживите метаконструкцию < MetaData> в начало документа, а < /MetaData> — в конец текстовика. Перед тегом впишите следующий код:

< LoadingScreens screen1= “loading.dds” />

< HeaderText text= “Level_Name” />

< DescriptionText text= “” />

< Gamerules Level_Name» =“SinglePlayer” />

< /MetaData>

Где Level_Name — название вашей карты, а loading.dds — имя картинки формата DDS, которая отображается во время загрузки уровня. Сохраните изменения и закройте «Блокнот».

Земля в иллюминаторе

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

Чтобы сформировать на уровне новую гравитационную зону, проделайте следующие действия. На панели RollupBar перейдите на закладку Objects и в свитке Object Type щелкните по кнопке Entity. В свитке Browser загляните в каталог Physics , выделите и перетащите на сцену один из двух физических объектов — GravityBox (гравитационный бокс) или GravitySphere (гравитационная сфера). Бокс удобнее всего использовать в замкнутых игровых локациях, а сферу — на открытых пространствах и уровнях со сложной архитектурой.

Обратите внимание, что и бокс, и сфера невидимы, то есть обнаружить их на карте во время игры не получится. Буквально несколько слов о гравитационной сфере. Все параметры объекта сосредоточены в блоке Entity Params на панели в правой части редактора. Основные из них — Damping (демпфирование, определяет степень подавления колебаний) и Radius (данная характеристика задает радиус гравитационной зоны).

Но это еще не все. Другой местный аттракцион — гравитационные тоннели. В оригинальной игре опять же присутствуют лишь на уровне Core. Очутившись внутри такого объекта, наш герой под действием сил гравитации словно пуля проносится по проходу, параллельно истребляя чужих.

Хотите сделать что-нибудь подобное? Не проблема! Для создания гравитационного потока в Sandbox 2 на панели RollupBar снова перейдите на вкладку Objects и кликните по кнопке Misc. Выберите из списка элемент GravityVolume. Затем перейдите в окно 3D-вида и щелкните левой кнопкой мышки по тому месту на карте, куда хотите поместить объект. Загляните в свиток GravityVolume Properties и измените значения параметров Radius (радиус гравитационного потока) и Gravity (сила гравитации, разработчики рекомендуют ставить здесь 10 ). Закончив правку параметров, добавьте на сцену несколько спецэффектов типа Alien_Environment.tunnel_wind.light_tunnel_wind.

Освещение

Приступаем к заключительному этапу доведения карты до ума — настройке параметров освещения. Первым делом изменим значение освещенности ландшафта. Выберите пункт меню Terrain/Lighting. На передний план выйдет окно, где производится регулировка освещенности игровой территории. Среди всего многообразия атрибутов нас интересуют только две характеристики — Sun Direction (map orientation) и NorthPole…Equator…SouthPole. Они определяют направление солнечного света. Присвойте атрибутам разные значения, перемещая ползунки. Обратите внимание, что все изменения наглядно отображаются на картинке (схематический вид уровня сверху) в поле Terrain preview with sun path.

Вкратце об остальных параметрах. Характеристики Dawn Time и Dawn Duration из поля Moon/Sun Shadow Transition (Advanced) определяют время заката солнца и захода луны (время восхода определяется редактором автоматически); Dusk Time — время наступления сумрака, а Dusk Duration — его продолжительность. Закончив редактирование характеристик, нажмите кнопку Ok , чтобы сохранить изменения и закрыть окно.

С настройкой параметров освещенности ландшафта разобрались. Движемся дальше и приступаем к правке атрибутов из гигантского блока Time of Day. Выполните команду Terrain\Time Of Day — откроется окно практически со всеми параметрами освещения: цветом солнца, тумана, облаков и небосвода и так далее. В левой части формы располагаются панели задач ( Time of Day Tasks и Update Tasks ) и блок Current Time (текущее время суток). Центральную область оккупировали различные графики. Изменяя на них положение контрольных отметок, вы можете добиться очень интересных результатов. В правой части окна прописались все те же самые параметры, что и в центре подпрограммы, но в цифровой форме (название атрибута — значение).

Атрибут Sun Color отвечает за цвет солнца и солнечных лучей, Sky Color — за цвет неба, Fog Color — за цвет тумана. Характеристика Night Sky: Horizon Color определяет цвет линии горизонта, а параметр Night Sky: Zenith Color — цвет зенита. Еще один интересный атрибут — Night Sky: Star Intensity — позволяет отрегулировать интенсивность свечения звезд. Характеристики Color: saturation , Color: contrast и Color: brightness определяют общий уровень насыщенности, контрастности и яркости.

По завершении «световых» работ и общей модернизации уровня сгенерируйте текстуры поверхности. Для этого выберите пункт меню File/Generate surface texture. В открывшемся окошке установите оптимальное разрешение — например, 16384x16384 — и нажмите кнопку Ok.

* * *

В двух статьях мы разобрали практически все тонкости создания уровней с открытой ландшафтной архитектурой для Crysis. Научились генерировать ландшафт, создавать новые и исправлять исходные текстурные слои, работать с объектами, строить дороги, обозначать на карте специальные гравитационные зоны и даже моделировать 3D-объекты несложной формы.

В следующем выпуске (в журнале или в разделе «Игрострой» на DVD) мы поговорим о таких сложных вещах, как миссии, скрипты, триггеры, искусственный интеллект и вейпойнты.

Да, чуть не забыли. Все вопросы, которые у вас появятся в ходе освоения редактора Sandbox 2, присылайте по адресу gamedev@igromania.ru. На самые важные из них мы непременно ответим в рамках игростроевской «Горячей линии».

Комментарии
Чтобы оставить комментарий, Войдите или Зарегистрируйтесь