Кризисное редактирование. Создание уровней для Crysis
Эта статья открывает целый цикл материалов по картостроению в Crysis. Поскольку игра пришла всерьез и надолго (моды начнут появляться в самое ближайшее время), надо детально изучить все способы ее модифицирования.
Благо возможности редактора очень широкие. Хотите перенести действие игры на поверхность затерянной в далеком космосе планеты Шелезяка? Задумали поселить в мире игры десятки враждующих банд? А может быть, планируете создать огромный подводный мир, путешествовать по которому можно только в акваланге или в миниатюрной подводной лодке? Все это вполне можно воплотить в жизнь. Начнем мы, правда, с малого. В сегодняшней статье мы детально разберем анатомию редактора, изучим основные клавиши управления, потренируемся в формировании ландшафта и текстурировании локаций, а также побеседуем о расстановке объектов на уровне и написании скриптов для игры.
Базовая концепция
Проинсталлировав Crysis на свои машины, многие модмейкеры пришли в тихий ужас: в комплекте с игрой они не обнаружили самого ценного — редактора Sandbox второй версии. Оказалось, ничего страшного не произошло — моддинг игры никто не отменял, просто разработчики не стали выкладывать редактор на диске с игрой, а разместили Sandbox 2 на сайте в интернете. Чтобы вам не пришлось скачивать из Сети довольно большой инсталлятор, мы поместили его на нашем DVD, в разделе «Игрострой». Так что отправляйтесь прямиком туда и оперативно его устанавливайте: без этого читать дальше бессмысленно.
Давайте познакомимся с внутренним устройством редактора. Перейдите в каталог /Bin32 с установленным Crysis и запустите приложение Editor.exe (инструментарий нужно установить именно в папку с игрой).
Когда программа загрузится, вы увидите, что большую часть рабочей области занимает окно 3D-вида, в нем можно просматривать и редактировать уровни. Напротив этого окна располагается панель RollupBar , которая содержит основные инструменты — терраформеры, модификаторы для текстурирования ландшафта местности, размещения объектов на карте и так далее. Инструменты не просто раскиданы по поверхности бара, а сгруппированы во вкладки (структура чем-то напоминает 3DS Max ). Например, все инструменты для работы с объектами (источники света, звуки, 3D-модели, камеры) проживают во вкладке Objects , терраформеры и другие модули для создания ландшафта — в Terrain , информация о слоях — в Layer Settings.
В верхней части программы находятся многочисленные каскадные меню и удобная панель инструментов. Снизу расположилась командная строка ( Console ) и строка состояния. Навигация в окне 3D-вида осуществляется с помощью курсорных стрелок (альтернатива — «горячки» W , S , A , D ). Чтобы ускорить перемещение камеры, используйте клавишу Shift. Поворот камеры в окне 3D-вида выполняется при помощи мышки с зажатой правой кнопкой. Масштабируется картинка колесиком мышки.
Теперь несколько слов о возможностях программы. Sandbox второго поколения позволяет изменять оригинальные уровни Crysis (как одиночные, так и мультиплеерные), создавать новые карты с нуля, формировать полноценные кампании и объединять их в аддоны.
В рамках цикла журнальных статей мы научимся конструировать уровни для игры, а также писать довольно сложные миссии и объединять все это в полноценные кампании. А в отдельных DVD-статьях и видеоуроках поговорим о более, скажем так, тонких вещах — например, об импорте своих собственных 3D-моделей из 3DS Max прямиком в Sandbox 2.
Виртуальные грейдеры
Создание любой карты для Crysis начинается с формирования ландшафта — плоскую, как блин, заготовку нужно сделать рельефной. Сделать это можно тремя способами: сгенерировать рельеф программно, создать ландшафт на базе черно-белых карт высот (разработчики Crysis использовали именно этот метод, чтобы добиться максимального сходства виртуальных локаций с реально существующими территориями) или же набросать ландшафт вручную при помощи терраформеров.
Какой метод выбрать, зависит, во-первых, от качества ландшафта, которое вам нужно для мода, во-вторых, от времени, которым вы располагаете. Мы же рассмотрим комбинированный вариант, в нем задействованы все три метода. Сначала мы сформируем ландшафт при помощи генератора, после чего выполним косметическую доводку при помощи терраформеров: выкопаем пару-тройку дополнительных оврагов, котлованов для рек, обозначим на карте скалистые ущелья, воздвигнем горные цепи и небольшие плоскогорья.
Первым делом выберите пункт меню File/New. В открывшемся окошке в поле LevelName введите произвольное название уровня на английском — к примеру, Igromania_SP. Убедитесь, что напротив комментария Use Terrain стоит галочка. Чтобы определить размер игровой локации, выберите нужную строку из раскрывающегося списка Heightmap Resolution , оптимальный вариант — 1024x1024. При необходимости вы можете изменить значение характеристики Meters Per Unit. Она отвечает за масштаб карты высот — сколько метров будет приходиться на каждый пиксель. Лучше всего поставьте здесь значение 2. Когда закончите, щелкните по кнопке Ok.
Водяная «пустышка» готова. Вода есть, суши нет. Следующий этап работы — собственно генерация ландшафта. Выберите пункт меню Terrain/Edit Terrain. Откроется окно редактирования карты высот. Чтобы вызвать генератор ландшафта, в окне Terrain выберите пункт меню Tools/Generate terrain. Появится окно настройки параметров генерации суши. Рассмотрим предназначение основных атрибутов, отвечающих за автоматическое создание ландшафта.
Характеристика Feature Size определяет размер и количество островов. Атрибут Bumpiness/Noise задает степень зашумления (деформации) поверхности. Параметр Detail (Passes) устанавливает определенное число временных эффектов, которые могут быть применены при создании заготовки. Значение характеристики Variation определяется редактором автоматически (изменить ее нельзя) и задает одну из 32 схем генерации местности. Атрибут Blurring (Blur Passes) служит для регуляции резкости зашумления — указывает, сколько раз нужно размыть поверхность после применения «шумового» фильтра, чтобы сгладить резко выраженные возвышенности и низменности. Наконец, параметры Sharpness (Exp. Base) и Sharpness (Freq. Step) определяют степень «резкости» рельефа и частоту употребления «резкостного» фильтра — эти параметры сообщают редактору, сколько раз и с какой частотой нужно применяться фильтр к уровню. Когда закончите с правкой атрибутов, щелкните по кнопке Ok и подождите несколько секунд, пока редактор сформирует рельеф.
Перед тем как перейти к доводке нашей карты с помощью терраформеров, немного поколдуем над картой высот. Вооружитесь кисточкой (инструмент Normal Brush на панели инструментов) и пройдитесь мышкой с зажатой левой кнопкой по тем участкам карты, где хотите обозначить какие-либо ландшафтные образования (горы, пригорки). Ну а чтобы стереть фрагменты суши, пройдитесь по карте мышью с зажатой правой кнопкой. По окончании малярных работ нажмите кнопку Ok , чтобы сгенерировать ландшафт.
Обратите внимание, полученная заготовка окрашена в белый цвет, так что обнаружить на карте какие-либо образования (горы, впадины) и продолжить работать довольно сложно. Чтобы устранить это досадное недоразумение, достаточно сгенерировать одно-единственное изображение для покрытия ландшафта — текстуру поверхности. Выберите пункт меню File/Generate Surface Texture. В появившемся окошке определите размер арта, например 4096x4096 , и, не изменяя остальных параметров, щелкните по кнопке Ok.
Теперь уровень «обернут» в текстуру, пора переходить к изменению формы — добавим несколько гор, выкопаем овраги, обозначим другие неровности. На панели RollupBar в правой части редактора перейдите во вкладку Terrain (вторая по счету) и в свитке Terrain щелкните по кнопке Modify , чтобы активировать режим модифицирования ландшафта. Вы увидите, что на панели RollupBar появится свиток Modify Terrain , который содержит параметры редактирования.
Для формирования возвышенности/низменности на карте проделайте следующие действия. В свитке Modify Terrain выберите из раскрывающегося списка Type строку Raise/Lower. После этого настройте параметры кисти — установите величину внешнего и внутреннего радиусов захвата (атрибуты Outside Radius и Inside Radius ), определите силу вдавливания/выдавливания (точнее, скорость формирования ландшафтного образования — характеристика Hardness ), задайте высоту будущей неровности (параметр Height , для углублений он имеет отрицательное значение). Когда закончите, переместитесь в окно 3D-вида и пройдитесь мышкой с зажатой левой кнопкой по поверхности уровня, чтобы сформировать возвышенность или вырыть овраг.
Работа с остальными терраформерами осуществляется аналогичным образом, поэтому мы рассмотрим лишь их функции: модификатор Flatten из списка Type служит для выравнивания высоты местности, а кисть Smooth стоит использовать, когда требуется размыть резко выраженные угловатые поверхности.
Кисти в руки
Каркас уровня сформирован, но он совершенно однотонный. Самое время нанести на полученную заготовку текстуры. Процесс закрашивания ландшафта в Sandbox 2 проходит по необычной схеме. Сначала создаются текстурные слои, которые «окутывают» всю карту целиком, после чего формируются специальные альфа-каналы (черно-белые маски), определяющие видимость заданного текстурного слоя, вернее, его участков. Звучит страшно, но на деле все не так уж сложно: сделали новый слой, прошлись кисточкой по определенным фрагментам ландшафта — и готово.
Начнем с создания новых текстурных слоев. Выберите пункт меню Terrain/Texture — загрузится редактор текстурных слоев Terrain Layers Editor. Рассмотрим его внутреннее устройство. В левой части окна располагается список слоев и четыре кнопки для создания, удаления и перемещения выбранных элементов на одну позицию вверх/вниз в поле Layers. В правой части модуля, в области Static , расположены многочисленные поля параметров с информацией о выбранном слое.
Разберем предназначение основных атрибутов поля Static. Параметр LayerID указывает на идентификационный номер слоя, он генерируется программой автоматически. Советуем не изменять значение данного атрибута: могут возникнуть серьезные трудности при текстурировании. Характеристика Surface Type определяет тип поверхности (совокупность параметров, отвечающих за детализацию текстуры, физические свойства материала, степень прозрачности и зеркальности). В области Layer Mask Auto Generation проживают параметры автоматической генерации маски (альфа-канала) для заданного текстурного слоя.
Чтобы создать новый слой в редакторе, выполните следующие манипуляции. Щелкните по кнопке с изображением пунктирного прямоугольника на панели инструментов в колонке Layers (при наведении курсора на кнопку всплывет надпись New ). Задайте новому элементу произвольное имя — скажем, sloy_x. В поле Static кликните по кнопке Edit Surface Types. Появится окошко Surface Types , в котором можно отредактировать параметры материала, а также создать новые типы поверхности.
Чтобы сделать новый тип, кликните по кнопке Add в поле Surface Types , переименуйте элемент (в списке Surface Types кликните по кнопке Rename ) и, не снимая выделения, щелкните по кнопке Material Editor для вызова редактора материалов. Перед вами появится окошко, которое представляет собой некое подобие « Проводника ». Левая его часть отведена под дерево файлов и папок, в правой проживают многочисленные поля параметров, в них заносится информация о заданном материале.
Нанесем материал на поверхность. Для этого на панели директорий и файлов в левой части приложения выберите произвольную запись из каталога Materials/Terrain , например Materials/terrain/beach_white_sand_dry_leafs. При желании вы можете самостоятельно поэкспериментировать с настройкой атрибутов выбранного материала. Ну а мы движемся дальше.
Закройте редактор материалов и щелкните по кнопке Pick Selected в окошке Surface Types , чтобы закрепить выбранный материал за поверхностью. Если вы все сделали правильно, то увидите, что в поле под комментарием Material Name появится полный путь к материалу. Нажмите Ok — этим вы сохраните изменения и выйдете из редактора поверхностей.
На панели в левой части окна Terrain Layers Editor кликните в списке по новому текстурному слою, после чего в поле Static выберите из раскрывающегося списка Surface Type строку с названием полученного нами типа поверхности. Последние штрихи — осталось задать основную текстуру слоя (изображение, которое мы в дальнейшем будем наносить на поверхность с помощью кисти). Щелкните по кнопке Load Texture на форме редактора слоев и в диалоговом окне выберите произвольный арт из каталога \Terrain , допустим, brown_leaves.dds.
Сделали? Отлично. Вот теперь можно приступать непосредственно к покраске ландшафта. На панели RollupBar в правой части редактора перейдите на закладку Terrain (вторая по счету) и щелкните по кнопке Layer Painter , чтобы переключиться в режим текстурирования ландшафта. В поле Brush Settings установите произвольный радиус захвата кисти ( Radius ) и силу действия ( Hardness ). Чтобы нанести материал на карту, перейдите в окно 3D-вида и передвиньте мышь с зажатой левой кнопкой по тому участку ландшафта, который хотите затекстурировать. Когда закончите базовую покраску, создайте еще пару-тройку текстурных слоев и затекстурируйте горы, овраги, котлованы для озер, ущелья и другие образования.
Агрономия — главнейшая из наук
Самые нетерпеливые уже могут опробовать уровень в игре. Причем редактор для этого покидать совсем необязательно. Достаточно просто воспользоваться комбинацией клавиш Ctrl + G. Окна редактирования уйдут на второй план, и вы окажетесь наедине со своим творением. Когда вдоволь набегаетесь по пустынному уровню, нажмите клавишу Esc , чтобы вернуться в режим редактирования и продолжить совершенствование карты. Работы еще целый воз с небольшой тележкой лампочек, декораций и прочей бутафории, которую нужно поместить на уровень.
Начнем с озеленения островов. Перейдите на закладку Terrain на панели RollupBar в правой части редактора и кликните по кнопке Vegetation. Вы увидите, что на панели RollupBar появится свиток Vegetation , где содержатся инструменты для работы с растениями, параметры кисти, списки добавляемых на уровень растений и их параметров, а также небольшое окно предварительного просмотра.
Чтобы добавить растение на карту, например дерево, выполните следующую цепочку действий. На панели инструментов в свитке Vegetation щелкните по кнопке Add Vegetation Object со схематичным изображением елки (первая по счету). В открывшемся диалоговом окне проследуйте в директорию Game/Objects/Natural (объекты природного происхождения). Вашему взору откроется список из 12 каталогов. Нас интересуют только 8 из них — \bananas (симпатичные модельки бананов), \bushes (кустарники), \fields (поля), \fruits_vegetables (фрукты и овощи — апельсины, лимоны, ананасы, картофель), \ground_plants (цветы, мох, трава, грибы, листья, лесная растительность, поросль), \plants (плантации), \trees (деревья), \underwater_plants (подводные плантации — кораллы, водоросли). Загляните в один из перечисленных каталогов и выберите в нем любую модель растения — например, банановое дерево: game/objects/natural/trees/banana_tree/bananatree_med_a.cgf.
Поместить растение на уровень можно выделив его в списке объектов ( Objects ), кликнув по кнопке Paint Objects и щелкнув левой кнопкой мышки по тому участку на карте, куда хотите добавить объект. При необходимости вы можете отрегулировать радиус захвата кисти (параметр Brush Radius в свитке Vegetation ), а также поэкспериментировать с настройкой характеристик из поля, расположенного под списком «растительных» элементов. Примечательно, что при использовании инструмента Vegetation на карту добавляется не одно растение, а целая клумба из четырех и более элементов.
Что же делать, если нужно добавить на карту, допустим, одну-единственную пальму? Все просто — надо удалить лишние растения. Отключите кнопку Paint Objects , выделите лишний элемент на сцене щелчком левой клавиши мышки и нажмите Delete. Редактор поинтересуется, действительно ли вы хотите уничтожить объект? Нажмите кнопку Да. Совсем необязательно удалять объекты по одному, можно выделить целую группу (делается это мышкой с зажатой левой кнопкой) и точно так же избавиться от нее при помощи клавиши Delete.
Это важно знать
- Sandbox 2 откажется запускаться, если вы проинсталлируете его не в папку с игрой. Редактор просто не найдет библиотечный файл ijl15.dll и выдаст ошибку.
- Вы в любой момент можете изменить скорость передвижения в окне 3D-вида. Для этого достаточно откорректировать значение параметра Speed в строке состояния в нижней части программы.
- Редактор позволяет распределить добавляемые на карту растения по специальным категориям, скажем, положить все модели деревьев в каталог с названием Деревца , кустарники — в папку с названием Кусты , а плантации и другие элементы — в директорию Другое. При этом названия каталогов и их количество запросто изменяются. Это означает, что вы, например, можете создать категорию Бананас и сложить в нее все модели банановых деревьев и бананов, которые в дальнейшем планируете добавить на карту. Чтобы создать новую категорию, в свитке Vegetation щелкните по кнопке Add Vegetation Category и в открывшемся окошке введите название нового блока, например Плантации. Для помещения элементов в сформированную группу выделите ее и кликните по кнопке со схематичным изображением елки в поле Vegetation на панели RollupBar в правой части редактора.
- Если вы уберете флажок напротив любого растения в поле Objects , то тем самым отключите опцию отображения элементов данного типа на карте в окне 3D-вида (при тестировании уровня в игре они тоже не будут отображаться).
- На слабых машинах (по сути, на любом одноядерном процессоре) редактор карт часто вываливается в Windows с ошибкой (как правило, возникает при текстурировании ландшафта и добавлении элементов на сцену). Никакие изменения при этом не сохраняются. Поэтому, чтобы в одночасье не остаться у разбитого корыта, почаще сохраняйтесь (команда File/Save ).
Вдумчивый декоратор
С растениеводством закончили. Следующий и последний этап работы — добавление моделек персонажей, статических и динамических конструкций и прочих декораций на уровень. На панели RollupBar в правой части редактора загляните во вкладку Objects. Перед тем как приступить к расстановке объектов на карте, рассмотрим содержимое групп объектов, которые представляют для нас наибольший интерес (остальные категории мы изучим в следующих статьях):
Brush, Geom Entity — содержат всевозможные статические объекты. Здесь вы найдете модельки инопланетных баз, жилых зданий, сторожевых вышек, заборов, разбитых авто, камней и, как это ни странно, некоторых растений;
Entity — включает в себя динамические конструкции, пикапы (оружие, медицинские аптечки, боеприпасы — директория \Items ), источники света (папка \Lights ), частицы ( \Particles ), средства передвижения (вертолеты, лодки и катера, гражданские авто — проживают в папке \Vehicles ) и другие объекты (ломающиеся ящики, взрывающиеся бочки с топливом и другие динамические элементы — скрываются в каталоге \Others );
Sounds — в данной категории спрятаны игровые звуки и некоторые музыкальные треки.
Теперь, когда вы познакомились с содержимым основных блоков, щелкните левой клавишей мышки по кнопке с названием любой рассмотренной категории и выберите произвольный объект из списка Browser — например, Entity/Vehicles/Civ_car1. Чтобы добавить элемент на карту, ухватитесь за него левой кнопкой мышки и, не отпуская ее, перетащите объект в окно перспективы. Как только вы отпустите кнопку, моделька появится на карте.
Чтобы установить новое местоположение объекта, щелкните по кнопке с изображением двух пересекающихся стрелок на панели инструментов (инструмент Select and Move , второй по счету от списка Select All ) для активации режима перемещения объектов. Далее один раз кликните по каркасу модели на карте (объект будет выделен). Появится индикатор перемещения. Чтобы передвинуть конструкцию по одной из осей (абсцисс — X , ординат — Y или аппликат — Z ), наведите курсор на нужную ось и переместите мышь с зажатой левой кнопкой на новое место. Поворот и масштабирование элементов сцены производится аналогичным образом, единственное отличие состоит в том, что поворот моделей осуществляется в режиме Select and Rotate , а масштабирование конструкции — в Select and Scale.
Для удаления модельки со сцены щелкните по ней левой кнопкой мышки (для выделения) и нажмите клавишу Delete (не забудьте подтвердить действие). Чтобы создать точную копию объекта, выделите его на карте и скопируйте в буфер при помощи комбинации клавиш Ctrl + C , а затем поместите дубль на карту щелчком левой кнопки мышки.
Когда закончите, выполните повторную генерацию текстуры поверхности при помощи команды File/Generate surface texture , только после этого появятся тени от статических объектов (камней, вышек, деревьев). Сохраните уровень (пункт меню File/Export to Engine ) и протестируйте его в игре.
* * *
На сегодня все. В следующих статьях по редактированию Crysis мы продолжим осваивать картостроительное ремесло — займемся доработкой уровня, поговорим о создании замкнутых игровых локаций, поупражняемся в моделировании несложных форм в редакторе (зданий, перекрытий, мостов) и написании однопользовательских миссий для игры.
Все вопросы, которые у вас возникнут в ходе освоения редактора Sandbox 2, присылайте по адресу gamedev@igromania.ru. На самые интересные из них мы непременно ответим в рамках игростроевской «Горячей линии».