статья
ОСТРОВА В ОКЕАНЕ Основы создания уровней для Far Cry, часть 1
  Far Cry пройден. Все наемники наказаны за свои преступления, а в джунглях пойман и зверски зарезан последний мутант. Простые геймеры поставят коробку с Far Cry на полку и отправятся в магазин за новыми играми. Настоящие же игроманы начнут осваивать редактор и c его помощью создавать новые просторы для поисков приключений на свою голову. И мы, товарищи настоящие игроманы, вам в этом поможем. Сегодня мы научимся создавать основу уровня — от планировки и украшения ландшафта до застройки карты всяческими секретными лабораториями...

    Первое знакомство
    Редактор игры — CryEngine Sandbox —устанавливается вместе с игрой. Как и сама игра, он сделан блестяще. Интерфейс, вобравший в себя лучшие качества множества других редакторов (например, 3D Studio MAX, Photoshop и даже редактора уровней для Serious Sam), прост, понятен и имеет множество настроек, позволяющих подстроить внешний вид редактора по своему вкусу. Кроме того, редактор использует возможности игрового движка, что дает возможность опробовать уровень в действии, не выходя из редактора. Работать в утилите лучше при разрешении экрана не меньше 1152*864 точки, иначе не все кнопки на панелях инструментов поместятся на экране, и придется постоянно изменять размеры элементов интерфейса, чтобы сделать кнопки доступными.

    Обзор
    Центральную часть окна занимают два окна обзора уровня. Первое (обозначено цифрой 1) работает в режиме Perspective, отображая трехмерный вариант уровня (так, как он будет выглядеть в игре). Второе (цифра 2) показывает карту уровня и размещенные на ней объекты в виде каркасов и условных меток. Щелкнув по заголовку любого из окон, вы можете переключать режимы их работы в открывшемся меню. В нижней половине этого меню располагаются три общие для всех видов окон опции:
    Maximized — при выборе этой опции активное окно обзора разворачивается до максимальных размеров, а остальные окна закрываются. Рекомендую вам сразу же развернуть окно Perspective на всю доступную площадь, так как все действия, описанные в сегодняшней статье, будут осуществляться именно в нем.
    View — здесь вы можете выбрать режим работы окна. Режимы Top, Front и Left позволяют видеть условные обозначения размещенных на уровне объектов (в проекциях сверху, спереди и слева). Perspective и Map — уже знакомый вам трехмерный режим и режим карты. ModelPreview — режим предварительного просмотра игровых моделей. Z View — режим изменения высоты объектов (используется очень редко).
    Configure Layout — выбрав эту опцию, вы установите количество и расположение окон обзора.
    В верхней части контекстного меню расположены опции, которые присутствуют в зависимости от того, какой режим обзора выбран:
    Labels — включает и выключает отображение текстовых меток объектов (их названия и порядковые номера). При большом скоплении объектов множество таких меток будет мешать обзору, поэтому логично их отключить.
    Wireframe — включает отображение трехмерных каркасов ландшафта и объектов.
    Show Height Map — включает отображение карты высот в режиме Map.
    Grid — включает привязку объектов к сетке координат.
    Show Safe Frame — загорается голубая рамка, имеющая стандартные пропорции экрана, независимо от пропорций окна обзора. Может пригодиться при работе над скриптовыми роликами.
    Управление камерой в трехмерных режимах обзора осуществляется с помощью клавиатуры и мыши. Кнопками W, S, A и D вы можете двигать камеру вперед, назад, влево и вправо (если зажать Shift, камера станет двигаться быстрее). Если вы будете двигать курсором мыши при зажатой средней кнопке мыши, камера будет двигаться вверх-вниз и влево-вправо относительно окна обзора. Также двигать камеру вперед-назад можно с помощью колеса прокрутки мыши или зажав одновременно правую и среднюю кнопки мыши. Поворачивать камеру можно, зажав правую кнопку мыши и двигая курсор в нужном направлении.
    В режимах карты и боковых проекций вид в окне можно прокручивать, зажав правую кнопку мыши. Колесико мыши служит для увеличения и уменьшения масштаба.
    Скорость движения камеры регулируется в поле Speed, расположенном прямо под окнами обзора. Кнопка Coll рядом включает/отключает возможность переместить камеру под поверхность земли.

    Инструментарий
    Основные инструменты для редактирования уровня располагаются на панели RollupBar справа от окон обзора (цифра 3). Все функции панели делятся между четырьмя закладками:
    Objects и Terrain — на этих закладках располагаются свитки с инструментарием для добавления на уровень всевозможных объектов и для редактирования ландшафта. Каждая кнопка открывает дополнительный свиток, который не всегда умещается в пределах экрана. В таких случаях вы можете прокручивать его либо перетаскиванием, зажав левую кнопку мыши над пустым пространством свитка, либо с помощью тонкой полосы прокрутки справа от свитка. Изучать действия всех кнопок сейчас мы не будем — необходимые функции будут рассмотрены позже, по ходу статьи.
    Render Settings — эта закладка содержит сразу два свитка: Render Settings и Hide by Category. С помощью Hide by Category вы можете настроить, какие объекты надо отображать в окнах обзора, а какие стоит пока скрыть. Например, скрыть растительность и прочие “фоновые” объекты окружения, чтобы они не мешали работать над архитектурой уровня, маленькими служебными объектами. На свитке Render Settings вы отключаете прорисовку графических объектов (вплоть до теней и систем частиц). Также в нижней части этого свитка разрешено включить отображение всевозможной отладочной информации.
    Layer Settings — здесь несложно настроить виртуальные “слои” объектов на карте. Эти слои объединяют в себе различные типы объектов, которые вы добавите на карту. Например, можно под одним слоем собрать все объекты окружения — растительность, живность, камни. Под другим — строения. Под третьим — объекты, с которыми взаимодействует игрок (технику, врагов, оружие). Одна категория объектов совсем не обязана целиком принадлежать одному слою: разрешено сделать несколько слоев для одного типа, чтобы экспериментировать с различным расположением объектов на карте, переключаясь между этими слоями.
    Это все, что следует знать перед началом работы в редакторе. Все остальные функции мы рассмотрим в процессе создания уровня.

    Создание ландшафта
    Чтобы создать новую карту, выберите пункт меню File\New. В появившемся окне необходимо указать имя нового уровня (в поле Level Name). Затем включите опцию Use Terrain. В списке Height Map Resolution выберите разрешение карты высот нового ландшафта. В списке Meters Per Unit укажите масштаб карты высот — скольким метрам будет соответствовать каждый ее пиксель. Диапазон значений в этих списках довольно широк. Максимальный размер создаваемого ландшафта — 2000*2000 километров, или 4 миллиона квадратных километров. Но не стоит сильно жадничать: если вы попытаетесь создать настолько большие просторы, редактор просто закроется с сообщением об ошибке. Для начала хватит карты высот размером 1024*1024 точки и с масштабом 2 метра на точку, и можно нажимать OK.

    Редактирование геометрии
    Новый ландшафт пока представляет собой идеально ровное морское дно, покрытое ужасной красной текстурой с надписью replace me. Для изменения рельефа местности в редакторе есть два инструмента. Один из них расположен на панели RollupBar, на закладке Terrain (рис. 2). Это кнопка Modify. При активировании этой кнопки внизу закладки откроется дополнительный свиток Modify Terrain. В нем располагаются параметры кисти, которой вы будете “рисовать” ландшафт.
    Тип кисти устанавливается в списке Type. Типа всего два:
    Flatten — кисть, выравнивающая высоту ландшафта на заранее заданной высоте.
    Smooth —кисть, сглаживающая неровности ландшафта.
    Ниже находятся три бегунка:
    Radius — радиус кисти. Также регулируется кнопками [+] и [­] на цифровой панели клавиатуры.
    Hardness — сила воздействия кисти, влияет на скорость изменения ландшафта.
    Параметр Height определяет высоту, на которую будет выравниваться земная поверхность при использовании кисти типа Flatten. Регулируется кнопками [/] и [*] на цифровой панели. Вы можете также установить значение бегунка равным высоте какой-либо точки ландшафта, щелкнув по этой точке левой кнопкой мыши при зажатой клавише Ctrl.
    Параметр Enable Noise включает “шум” — относительно небольшие ямы и бугры на земной поверхности, которые будут появляться вместе с изменением ее высоты. Перепад высот и частота этих неровностей устанавливается бегунками Scale и Frequency.
    Если включить параметр Reposition Objects, то все объекты, находящиеся на карте, будут изменять свою высоту вместе с изменением высоты поверхности под ними, чтобы не провалиться под землю или не зависнуть над ней.
    Чтобы поднять из морских пучин несколько островов, установите бегунок Height на максимум, Hardness — на 0.03 и выберите тип кисти Flatten. Теперь просто водите курсором по ландшафту, зажав левую кнопку мыши, пока не добьетесь желаемого результата.
    Второй инструмент для изменения ландшафта — встроенный редактор карты высот (включается кнопкой Terrain на панели инструментов). Он довольно прост в освоении, но редактировать карту высот (черно-белое изображение, где интенсивность белого цвета определяет высоту каждой точки ландшафта) без достаточного опыта довольно сложно. Мы пока не будем рассматривать работу в нем, а сразу перейдем к текстурированию уровня.

    Текстурирование
    Текстуры накладываются на ландшафт довольно нестандартным способом. Вы не наносите их на поверхность кистью, а создаете текстурные слои, покрывающие всю карту целиком. Для указания, какие текстуры в каком месте карты будут отображены, используются альфа-маски, или маски прозрачности (квадратная черно-белая картинка с разрешением, равным разрешению карты высот). Текстура отображается в тех местах карты, которым соответствуют белые участки альфа-маски. На основе заданных слоев и их масок генерируется общая текстура ландшафта, включающая в себя тени от строений и возвышенностей, и свойства, определяющие видимость участков ландшафта. Такой способ текстурирования не очень нагляден и может показаться неудобным, но с другой стороны — это лучше, чем вручную закрашивать квадратные километры территории уровня. В редакторе также предусмотрена возможность непосредственного нанесения текстуры на желаемый участок карты, но это становится возможным лишь после предварительной подготовки текстурных слоев и генерации общей текстуры ландшафта.
    Для создания текстурных слоев предусмотрено отдельное окно Terrain Layers Editor, вызываемое кнопкой Texture на панели инструментов (рис. 3). В верхней левой части окна находится список текстурных слоев — Layers. Справа, в поле Static, задаются параметры слоя. Параметр Layer in Use указывает, активен ли данный слой или нет. Щелкнув по кнопке Load Texture, вы можете задать основную текстуру слоя. В окне выбора текстуры, открывающемся этой кнопкой, слева есть папки, обозначающие ту или иную категорию текстур — нужные нам текстуры покоятся в папке Terrain.
    В списке Surface Type устанавливается тип поверхности (набор параметров, определяющий свойства поверхности, текстуру детализации и т.д.). Кнопка Edit Surface Types открывает дополнительное окно, где создаются и редактируются типы поверхности (рис. 4). Рассмотрим элементы окна:

    Surface Types — в этом списке с помощью кнопок Add, Clone, Remove и Rename вы можете, соответственно, создавать, копировать, удалять и переименовывать типы поверхности.
    Surface Type Settings — список, задающий материал поверхности (песок, камень и другие).
    Detail Texture — здесь задается текстура детализации. Именно текстура детализации задает визуальный характер поверхности — скалы, трава, песок...
    Detail Bump Map — еще один тип текстур детализации, задающий рельеф поверхности (эффект bump-mapping). Не столь важен, как предыдущий, но для таких поверхностей, как скалы (имеющие крупные неровности), можно использовать и этот тип текстур.
    X и Y Scale — масштаб текстур детализации.
    Projection Axis — ось, по направлению которой текстуры (включая основную) проецируется на ландшафт. По умолчанию установлена вертикальная ось Z — текстура проецируется сверху. Однако для участков земли, близких к вертикальным, можно использовать боковые оси X и Y.
    Detail Objects — в этот список можно включить модели, которые будут нанесены на поверхность — тоже своего рода детализация. Например, слою, отвечающему за текстуру травы, присвоить еще и модель пучка травы. Но такие модели не должны содержать более 12 треугольников.
    Создавая тип поверхности, лучше называть его так же, как и текстурный слой, которому вы присвоите этот тип, иначе легко запутаться и, например, текстуре травы присвоить атрибуты скальной поверхности.
    После установки всех атрибутов текстуры нужно создать альфа-маску. Можно (и, в большинстве случаев, нужно) сгенерировать маску средствами редактора — для этого в окне Terrain Layers Editor существует поле Layer Mask Auto Generation. Параметр Auto Generate Mask определяет, используется ли для данного слоя генерируемая маска, — включите его. Маска генерируется на основе двух шкал:
    Altitude Range — с помощью этой шкалы задается диапазон высоты, в пределах которой используется текстура. Диапазон варьируется от 0 до 255, что соответствует градациям высоты ландшафта. Чтобы установить минимальное значение, переместите бегунок на желаемую позицию и нажмите на кнопку Set Start. Нажатием кнопки Set End задается максимальное значение.
    Slope Range — эта шкала задает диапазон наклона ландшафта. С ее помощью несложно ограничивать использование текстуры на крутых склонах или, наоборот, ровных участках. Градация шкалы также варьируется от 0 до 255, где 0 соответствует 0 градусам наклона, а 255 — 90 градусам. Установка диапазона значений такая же, как и у шкалы высот.
    Маска, которая получится в итоге, отображается в нижней левой части окна в поле Layer Mask. А справа в поле Final Texture Preview — конечный вариант общей текстуры.
    Закончив работать над текстурированием, закройте окно. Чтобы сделанные изменения вступили в силу, необходимо сгенерировать новую текстуру ландшафта. Для этого откройте пункт меню File\Generate Surface Texture. В появившемся окне нажмите кнопку Yes, а в следующем — выберите желаемое разрешение для текстуры. Чем выше разрешение, тем более четкий ландшафт вы получите, но тем больше времени необходимо будет для генерации текстуры. Кроме того, для генерации текстуры размером 16384*16384 пикселя требуется 1Гб оперативной памяти — не удивляйтесь, если редактор откажется ее генерировать. Также лучше включить параметр Hi Quality Compression — так конечная текстура будет более качественной.
    Когда текстура ландшафта будет готова, вы, возможно, решите, что текстуры легли на карту не совсем так, как вам хотелось бы. Кроме того, вам может понадобиться нарисовать на земной поверхности дороги, какие-либо искусственные пустыри — в общем, детали, которые невозможно задать простой генерацией альфа-маски. Для этого на панели RollupBar на закладке Terrain включите кнопку Layer Painter. Она активирует кисть, которой вы можете непосредственно наносить на ландшафт заранее подготовленный текстурный слой (то есть вы вручную создаете белые участки на альфа-маске этого слоя). Набор параметров кисти почти такой же, как и у “кисти”, изменяющей ландшафт. Наносимая текстура выбирается из списка в нижней части свитка.

    Освещение
    Осталось отрегулировать освещение карты. Для этого нажмите кнопку Lightning на панели управления.
    В открывшемся окне в поле Lightning Type устанавливается тип освещения. В поле Settings регулируются параметры источника света:
    Sun Direction — направление солнечного света.
    Sun Height — высота солнца.
    Ambient — яркость рассеянного света. Доступно только для типа освещения DP3.
    Sky Quality — точность освещения. Доступно только для типа освещения Precise.
    Кнопка Sky Color позволяет задать цвет неба (т.е. рассеянного атмосферой света). Кнопка Sun Color отвечает за цвет солнечного света.
    В поле Shadowing устанавливаются параметры теней, отбрасываемых возвышенностями и добавленных на карту статическими объектами:
    Blur — смазанность теней.
    Intensity — интенсивность теней.
    Terrain Shadows — включает/выключает тени, отбрасываемые ландшафтом.
    Object Shadows — включает/выключает тени от статических объектов.
    Чтобы увидеть на карте заданные тени, придется снова сгенерировать текстуру ландшафта. Если вы измените ландшафт, то чтобы увидеть изменения в освещении и текстурах, вам придется также генерировать текстуру заново. Надеюсь, вы дочитали эту главу до того, как начали генерировать текстуру размером 8192*8192...

    Размещение объектов
    Основа уровня готова, но ландшафт выглядит весьма уныло. Пора украсить острова растительностью, расставить здания и обставить их всевозможной утварью.

    Растительность
    Перейдите на закладку Terrain на панели RollupBar и активируйте кнопку Vegetation. Ниже появится одноименный свиток. В нем есть: набор кнопок для работы с объектами (их названия отображаются в строке состояния редактора при наведении курсора на кнопку); шкала Brush Radius, задающая размер кисти; кнопка Paint Objects, активирующая кисть, с помощью которой объекты наносятся на карту; список Objects, где располагаются выбранные модели растительности (пока он пуст); безымянный список, где задаются свойства добавляемых на карту растений; окно предварительного просмотра выделенной модели.
    Объекты в списке можно разделять на категории, чтобы не смешивать вместе разные типы растений. Создайте новую категорию, нажав кнопку Add Vegetation Category, и назовите ее Trees (деревья). Затем выделите ее и нажмите кнопку Add Vegetation Object. Так же, как и при выборе текстур, в левой части открывшегося окна вы можете выбрать тип моделей — нас интересует тип Natural (природные). Модели деревьев находятся в папке Trees. Несложно задать сразу несколько моделей, зажав Ctrl и последовательно щелкая на приглянувшиеся экземпляры. Затем нажмите Open — выбранные модели появятся в списке. Также разрешено удалять объекты из списка кнопкой Remove Vegetation Object и заменять их на другой тип кнопкой Replace Vegetation Object (это приведет к замене уже добавленных на карту объектов на новый тип).
    Чтобы “посадить” растение на карте, выделите его в списке, включите кнопку Paint Objects и щелкните по желаемой точке на земле. Вы можете задать ряд параметров для каждого типа растений. Вот некоторые из них:
    Size — размер объекта. 1 соответствует 100%, 0,5 — 50% и т.д.
    SizeVar — случайное изменение размера объектов в указанных пределах (так же, как и в предыдущем случае, в процентах).
    Density — плотность объектов. Чем выше цифра, тем больше расстояние между соседними деревьями. Имейте в виду, что при низкой плотности объектов может потребоваться увеличить радиус кисти.
    ElevationMin и ElevationMax — диапазон высот, в пределах которых можно добавлять выбранные растения.
    SlopeMin и SlopeMax — диапазон наклона поверхности, в пределах которого можно размещать выбранные объекты.
    PhisNonColl — важный параметр, который указывает, можете ли вы пройти сквозь выделенный тип растений или нет. Логично включить его для растений типа кустов и травы и отключить для деревьев.

    Прочие объекты
    Для работы с игровыми объектами на панели инструментов в верхней части окна есть группа кнопок и списков — они служат для выбора осуществляемых над объектами действий. Наведя курсор на элемент, вы увидите его название. Наибольший интерес представляют следующие элементы:
    Select Object — активировав эту кнопку, вы сможете лишь выделять объекты на карте.
    Select and Move — выделение и перемещение объектов.
    Select and Rotate — выделение и вращение.
    Select and Scale — выделение и масштабирование. Вы можете масштабировать практически все объекты, даже технику, которой можно управлять. Так из любой моторной лодки можно сделать самый настоящий крейсер.
    Select Object Types — список слева от кнопок, в котором вы можете ограничить возможность выделения различных типов объектов.
    Follow Terrain — при включении этой кнопки добавляемый на карту объект будет всегда находиться в указанной курсором точке ландшафта, не проваливаясь в него и не зависая в воздухе.
    Snap to Grid — включив этот список, вы указываете объектам перемещаться с шагом, равным размеру ячейки координатной сетки. Размер ячейки задается здесь же.
    Snap Angle — при включении этой кнопки поворот объектов будет не плавным, а дискретным, с шагом в несколько градусов.
    Перейдите на панель RollupBar и откройте закладку Objects. Каждая кнопка здесь отвечает за свой особый тип объектов. На данный момент интерес для нас представляют следующие кнопки:
    TagPoint — кнопка, содержащая всего три служебных объекта: Respawn — точка старта игрока в одиночных и мультиплеерных уровнях; TagPoint — контрольные точки, с помощью которых задаются, например, маршруты передвижения искусственно-интеллектуальных болванчиков; Comment — ярлык с комментарием, который вы можете разместить в любом месте на карте (это может быть полезным, если над одним уровнем работает сразу несколько человек). Сейчас нам нужно лишь создать точку старта игрока — объект Respawn. Выделите его в списке, а затем разместите на карте щелчком по желаемой точке в окне 3D-обзора.
    Brush — здесь находятся разные статические объекты — здания, вышки, камни и многое другое. Вообще, в качестве статических объектов легко разместить на карте абсолютно любые модели. Создайте на острове какие-нибудь следы цивилизации — не по одним же джунглям бегать.
    Entity — содержит структурированный список всевозможных “действующих объектов” — от динамических предметов (ящиков, бочек и всего, что можно пнуть, толкнуть и т.д.) до оружия и транспорта. Носимое оружие, а также амуниция, аптечки и ключ-карты располагаются в папке Pickups. Транспорт — в папке Vehicles. Динамические объекты — в папке Others. Пока на уровне нет ни одного супостата, можно спокойно потренироваться в стрельбе, постреливая по разложенному тут и там хламу, катаясь на багги по созданным просторам.

    * * *
    Закончив расставлять объекты, обновите текстуру карты, чтобы на ней появились тени от статических объектов. Сохраните уровень, а затем выберите пункт меню File\Export to Engine (или нажмите Ctrl+E) — так вы подключите уровень к игре. Теперь, чтобы запустить уровень, достаточно в главном меню игры открыть консоль (клавишей [~]) и набрать в ней команду “\map [имя карты]” (без кавычек).
    Ваш первый уровень готов. Конечно, пока он мало подходит для виртуальных побоищ, но уже можно оценить, как он будет выглядеть в игре, и в случае необходимости исправить недочеты.
    В следующей статье мы продолжим осваивать редактор — расставим на уровне враждебно настроенную живность, пропишем цели миссии и сделаем еще много всего, чтобы игрок, не дай бог, не заскучал на вашей карте.

«Статья "ОСТРОВА В ОКЕАНЕ"

публикуется с разрешения редакции журнала «Игромания». Автор Андрей Желтяк».