Учебник по созданию карт
Глава IX. Небо.

§ 9.2 Правильное небо

В данной статье мы рассмотрим способ создания правильного и наиболее грамотного неба для Half-Life (CS) карт. Сложное (правильное) небо обладает рядом преимуществ перед простым небом, построенным коробкой вокруг карты. Главные из них - это меньшее время компиляции и более высокий FPS на карте.

Для создания правильного неба используется все те же SKY-браши, т.е. обычные браши, окрашенные со всех сторон текстурой неба SKY. Давайте рассмотрим создание правильного неба для карты, чья форма немного более сложная, нежели простой прямоугольник (см. рис. ниже).

Пример открытой карты


Небо начнем создавать с боковых сторон. Будем строить SKY-браши по периметру карты (см. рис. ниже).

Создаем SKY-браши по периметру карты


Готово (см. рис. ниже). Высота SKY-брашей выбирается произвольно. Она может быть и 384, и 512, и больше юнитов, но для нашего же удобства она должна быть одинакова для всех боковых SKY-брашей. Также желательно, чтобы игроки не бились об небо головами :)

Так выглядит карта окруженная SKY-брашами


Обратите внимание, что отверстие в центре карты также необходимо закрыть SKY-брашем СНИЗУ (см. рис. ниже), который по длине и ширине точно соответствует отверстию. Мы же помним, что небо должно полностью ограждать карту от "внешнего вакуума". Вспомните наши разговоры про плотно прилегающую к краям крышку сковородки в прошлой статье :) Дырок и щелей быть не должно, иначе возникнет ошибка LEAK.

Отверстие в середине карты закрываем таким же по размеру SKY-брашем


Отверстие в центре закрыли. Теперь необходимо закрыть верх карты. Делаем это при помощи двух довольно больших SKY-брашей (см. рис. ниже).

Верх карты закрываем двумя SKY-брашами


На этом можно было бы остановиться, т.к. небо само по себе уже готово, но давайте еще ограничим передвижение игрока, чтобы он не мог упасть в центральное отверстие. Для этого на месте отверстия построим CLIP-браш, т.е. обычный браш, окрашенный со всех сторон спец. текстурой CLIP. Такие браши в игре невидимы, однако игрок сквозь них пройти не может и соответственно не может упасть в дыру (см. рис. ниже).

CLIP-браш по размерам равен отверстию, он начинается от верхних сторон бортиков и продолжается до самого неба, но не "входит" в него.

На месте центрального отверстия строим CLIP-браш


Теперь остается разместить источник света light_environment внутри карты, т.е. под колпаком из SKY-брашей, а также указать название картинки неба в меню "Map\Map properties..." в параметре environment map. Как правильно указывать название неба, мы рассказали в прошлой статье про простое небо коробкой.

И вот результат (см. рис. ниже). Как видите, картинки неба накладываются не на изготовленные SKY-браши, а на некий большой удаленный (воображаемый) куб, который для всех карт одинаков.

Так выглядит карта в игре



Преимущества сложного неба над простым

Мы провели простой эксперимент: создали на этой же карте вместо правильного неба - простое (коробкой) и затем сравнили log-файлы, в которые записывается ход выполнения компиляции, а также подробная статистика BSP-файла (если использовать параметр -chart). Вот какие результаты мы получили (см. рис. ниже).

Таблица с результатами двух логов компиляции


Кратко поясним, что означают эти параметры.

Время компиляции - тут все ясно, компиляция карты с правильным небом проходит в два раза быстрее .... внушаитъ :)

Просчет освещения - на карте с небом-коробкой дополнительно просчитываются все поверхности снаружи карты, что приводит к существенному увеличению времени компиляции даже на небольших картах.

Clipnodes - количество плоскостей, ограничивающих перемещение игрока. Не стоит путать их с помещенным CLIP-брашем, это не совсем тоже самое, хотя CLIP-браши также добавляют clipnodes в карту. По количеству clipnodes можно судить о проделанной компилятором HLVIS работы. Чем меньше clipnodes, тем меньше работы было у HLVIS.

Faces - количество поверхностей. Чем их меньше, тем меньше работы компилятору HLRAD, просчитывающему освещение.

Patches - количество патчей. При компиляции карты все видимые поверхности объектов разбиваются на патчи определенного размера. По умолчанию размер патча составляет 64x64 юнита, однако его можно изменить параметром -chop. Чем меньше патчей, тем лучше. Если патчей слишком много (более 65535), то возникнет ошибка MAX_PATCHES. Поэтому необходимо следить за количеством патчей и, если потребуется, уменьшить их.

Lightdata - параметр, показывающий суммарный объем информации об освещении карты.

Visdata - параметр, показывающий суммарный объем визуальной информации карты.

Как видите, время сэкономленное на построении простого неба, вместо сложного, расходуется при компиляции. Отсюда правило :) - для больших карт стройте всегда правильное небо, а для маленьких можно обойтись небом-коробкой, но только не забудьте оптимизировать карту, как это написано в прошлой статье.


Ссылки

sky_advanced.zip [29Кб] - в архиве карта-пример в форматах BSP и RMF.


Глава IX. Небо.


К оглавлению Учебника

© http://cs-mapper.by.ru/
CMT (CS Mapping Tutorials) - © 2006-2011+. Created by VM
[ Script Execution time: 0.0052 ]