В данной статье мы рассмотрим способ создания правильного и наиболее грамотного неба для Half-Life (CS) карт. Сложное (правильное) небо обладает рядом преимуществ перед простым небом, построенным коробкой вокруг карты. Главные из них — это меньшее время компиляции и более высокий FPS на карте.
Для создания правильного неба используется все те же SKY-браши, т.е. обычные браши, окрашенные со всех сторон текстурой неба SKY. Давайте рассмотрим создание правильного неба для карты, чья форма немного более сложная, нежели простой прямоугольник (см. рис. ниже).
Небо начнем создавать с боковых сторон. Будем строить SKY-браши по периметру карты (см. рис. ниже).
Готово (см. рис. ниже). Высота SKY-брашей выбирается произвольно. Она может быть и 384, и 512, и больше юнитов, но для нашего же удобства она должна быть одинакова для всех боковых SKY-брашей. Также желательно, чтобы игроки не бились об небо головами :)
Обратите внимание, что отверстие в центре карты также необходимо закрыть SKY-брашем СНИЗУ (см. рис. ниже), который по длине и ширине точно соответствует отверстию. Мы же помним, что небо должно полностью ограждать карту от «внешнего вакуума». Вспомните наши разговоры про плотно прилегающую к краям крышку сковородки в прошлой статье :) Дырок и щелей быть не должно, иначе возникнет ошибка LEAK.
Отверстие в центре закрыли. Теперь необходимо закрыть верх карты. Делаем это при помощи двух довольно больших SKY-брашей (см. рис. ниже).
На этом можно было бы остановиться, т.к. небо само по себе уже готово, но давайте еще ограничим передвижение игрока, чтобы он не мог упасть в центральное отверстие. Для этого на месте отверстия построим 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.
|