CS-MAPPER.BY.RY — Создание карт для CS.
Учебник по созданию карт
Глава IX. Небо.

§ 9.1 Простое небо (метод коробки)

В этой статье мы рассматриваем очень простой метод создания неба. Он не требует много времени и больших усилий, однако имеет некоторые недостатки, которые мы попытаемся свести к минимуму, применив кое-какие хитрости. Мы надеемся, что Вы уже неплохо научились создавать «закрытые» карты, без неба, представляющие собой одну или несколько соединенных между собой комнат.


Что такое небо?

Небо в Half-Life (CS) — это имитация открытого пространства, которая реализуется следующим:
  • SKY-брашами, построенными вокруг карты
  • Картинкой неба, записанной в свойства карты
SKY-браши — это обычные браши (правда, весьма больших размеров), окрашенные СО ВСЕХ СТОРОН специальной текстурой под названием SKY. SKY-браши размещаются вокруг карты, образуя некий колпак, отделяющий карту от внешнего «вакуума».

Наглядно небо в Half-Life можно представить в виде сковродки с прозрачной крышкой, где сковородка — Ваш уровень, а прозрачная крышка — небо. Крышка должна плотно прилегать к краям сковородки, не должно быть щелей и дырок, ведущих во «внешний мир». Это обязательное и очень важное условие при создании неба. Небо должно полностью отделять карту от внешнего мира, иначе возникнет ошибка при компиляции (небезызвестная ошибка LEAK).

Почему крышка прозрачная? Дело в том, что само по себе небо, т.е. SKY-браши прозрачны для игры. На самом деле игрок видит КАРТИНКУ, а если точнее 6 картинок неба, наложенных (спроецированных) на стороны воображаемого куба. Данный куб находится за пределами карты (за пределами сковородки с прозрачной крышкой :). Представьте себе большой куб, находящийся за картой, с наложенными на его стороны картинками неба. Игрок смотрит через прозрачную крышку сковродки и видит эти картинки. Картинки созданы в специальной программе и подогнаны друг к другу таким образом, что у игрока создается впечатление, что он видит обычное «круглое» небо, а не картинки, наложенные на куб.

Для создания неба используется только текстура SKY. На брашах неба не должно быть других текстур, кроме SKY. Это еще одно обязательное условие.

В данной статье мы будем строить простое небо — одной большой коробкой вокруг карты. Мы просто поместим всю нашу карту в огромную комнату, окрашенную со всех сторон текстурой SKY.

Ну, чтож. Предположим у нас имеется вот такая небольшая открытая карта, совсем простая по конструкции (см. рис. ниже).

Открытая карта


Как можно легко посчитать, карта состоит всего из 5 брашей (1 браш — земля и 4 браша — бортики). На всякий случай сообщаем размеры карты: земля имеет размеры 512х384х64 юнита, а 4 бортика высоту 48 юнитов.

Выберите текстуру SKY (она находится в стандартной и самой большой библиотеке текстур halflife.wad) и постройте вокруг карты большой браш так, чтобы карта полностью оказалась в нем, и еще оставалось немного места по краям (желательно 16-32 юнита с каждой стороны).

На рисунках ниже показаны виды сверху и спереди и контуры создаваемого SKY-браша. В принципе нет необходимости оставлять так много пустого места до краев карты. Это даже вредно и замедлит компиляцию. Лучше, конечно, строить SKY-браши впритык к стенам карты, но пока что пусть будет так — с запасом.

Строим браш из текстуры SKY на виде сверху


Браш из текстуры SKY на виде спереди


После того, как мы закончим создание SKY-браша, нажав «Enter», необходимо превратить его в КОМНАТУ. Подробно эта операция разбиралась нами в статье «Создание пустотелых объектов при помощи Hollow».
То есть был у нас один SKY-браш, а после применени функции Hollow, появилась комната, состаящая из 6 SKY-брашей (пол, потолок, стены). Создание именно комнаты из 6 SKY-брашей необходимо, чтобы небо заработало. Теперь наша карта находится внутри комнаты, состоящей из 6 стен, полностью окрашенных текстурой SKY.

Как применить Hollow: выделяем SKY-браш и нажимаем [Ctrl-H], то есть применяем функцию Hollow — придаем толщину стенкам браша. В появившемся окошке нужно указать толщину стен комнаты. Можно оставить значение по умолчанию: 32.

Простое небо готово! После этой операции карта должна выглядеть приблизительно так:

Так выглядят карта с небом вокруг



Уменьшения вреда от неба-коробки (способ №1)

Скорее всего, у Вас останется некоторое пространство между стенами комнаты и картой (как у нас на рисунке). Желательно делать комнату ровно по размерам карты, чтобы ни около дна, ни около стен карты не оставалось никакого пространтсва. То есть нужно, чтобы стены комнаты соприкасались со стенами и дном карты. А вот сверху карты наоборот место оставить нужно, чтобы игроки не бились головами о небо и могли свободно прыгать. Данный совет поможет уменьшить работу компиляторам, которым не нужно будет просчитывать пустое пространство вокруг карты.


Уменьшения вреда от неба-коробки (способ №2)

Когда Вы создали вокруг карты плотно прилегающую комнату из SKY-брашей, необходимо уменьшить работу компилятору HLRAD, который просчитывает освещение на карте. Дело в том, что освещение на карте проецируется именно со SKY-текстур. Компилятор HLRAD определяет, где расположены SKY-браши, проецирует с них освещение на все остальные объекты, имеющие какую-либо текстуру. То есть он будет просчитывать и дно, и внешние стороны карты, т.к. они имеют текстуры и соприкасаются со SKY-брашами, «видят» небо.

Надо заметить, что операция по просчету освещения самая продолжительная из всех и к тому же самая требовательная к ресурсам компьютера. Поэтому обязательно необходимо ЗАКРАШИВАТЬ ВСЕ ВНЕШНИЕ СТОРОНЫ карты текстурой SKY. Но в этом случае, естественно, не для создания неба, а просто, чтобы компилятор HLRAD не просчитывал освещение для этих поверхностей. SKY текстура просто игнорируется этим компилятором! Грех не воспользоваться этим ее замечательным свойством и значительно не ускорить процесс компиляции карты.

На рисунках ниже показаны незакрашенные и закрашенные внешние стороны карты (также у этой карты закрашено дно), которые игрок никогда в игре не увидит. Данные поверхности не будут просчитаны на освещение, тем самым время компиляции существенно уменьшится (чем больше карта, тем больше экономия, иногда экономится до 50% времени!). Также можно закрашивать крыши домов и любые другие поверхности, которые игрок НИКОГДА НЕ УВИДИТ в игре. Кстати, благодаря этому, уменьшается и размер карты (в МБ).

При создании неба-коробки все внешние стены и дно карты необходимо закрасить SKY-текстурой


При создании неба-коробки все внешние стены и дно карты необходимо закрасить SKY-текстурой


Также можно закрасить SKY-текстурой невидимые игроку крыши домов и прочие похожие поверхности.

Закрашиваем невидимые игроку поверхности текстурой SKY


Вот все что касается оптимизации карты под простое небо коробкой. Если не выполнить этих простых двух мер, то при большой по размеру карте, время компиляции может стать очень большим. Согласитесь, есть разница сколько ждать: 1,5 часа или 40 минут.


Выбираем картинку неба

Как уже говорилось выше, само небо — прозрачное, а игрок видит спроецированные на воображаемый куб 6 картинок неба.

Картинки с изображениями неба лежат в директории «cstrike\gfx\env..» и имеют формат TGA 24-bit и размеры 256х256 пикселей. Также возможно использование картинок в форматах PCX и BMP 8-bit, но они нужны только для игры на старых-престарых видеокартах без 3D-ускорителя. Все современные видеокарты имеют ускоритель, поэтому форматы BMP и PCX использовать не нужно.

Так как картинки накладываются на стороны куба, то всего картинок неба — 6. Названия картинок имеют следующий формат:

skynameRT.tga — правая картинка (от англ. right)
skynameFT.tga — передняя картинка (от англ. front)
skynameLF.tga — левая картинка (от англ. left)
skynameBK.tga — задняя картинка (от англ. back)
skynameUP.tga — верхняя картинка (от англ. up)
skynameDN.tga — нижняя картинка (от англ. down)

где skyname — это любая комбинация букв и цифр, обозначающая название неба.

Каждая из этих картинок «нарисована» в специальной программе (их несколько) довольно хитрым образом :) — если приставить их друг к другу, то они образуют замкнутое пространство (единый пейзаж). Следует заметить, что вид этих картинок в игре никак не зависит от формы неба (SKY-брашей). Просто там, где игрок видит SKY-браши, он видит небо (спроецированные на удаленный воображаемый куб картинки).


Указываем название неба

Итак, выберите понравившуюся картинку неба и запомните ее название. Отбросьте 2 ПОСЛЕДНИЕ БУКВЫ (RT, FT, LF, BK, UP, DN).

В редакторе вызовите окно с общими свойствами карты «Map\Map properties...». И впишите название неба в параметр environment map (см. рис. ниже). БЕЗ ПОСЛЕДНИХ ДВУХ БУКВ!

Ниже мы записали название des — это небо от DE_DUST.

Вписываем название картинки неба в строку environment map


А вот так наша карта будет выглядеть в игре:

Так карта с небом от de_dust выглядит в игре



Рекомендации по выбору картинки неба

Старайтесь подбирать небо под архитектуру и цвет основных текстур карты. Например, если карта светлая и на ней есть горы, то и картинку следует выбрать с горами и светлым небом. Если действия на карте разворачиваются ночью, в городе, то и небо на картинке должно быть ночным и т.п.


Теперь остается разместить источник света light_environment внутри карты, т.е. под колпаком из SKY-брашей и запустить компиляцию.


Недостатки неба-коробки:

[–] можно упасть за пределы карты, если дополнительно не использовать CLIP-браши, ограничивающие передвижение, или если небо идет не вплотную к карте;
[–] компилятор HLVIS оптимизирует визуальную часть карты дольше из-за просчета лишних clipnode-плоскостей снаружи карты;
[–] время компиляции возрастает из-за просчета освещения внешних (невидимых в игре) поверхностей объектов;
[–] бОльший размер готовой карты

Достоинства неба-коробки:

[+] быстрое изготовление
[+] Вы никогда не столкнетесь со страшной :) ошибкой LEAK
[+] При условии выполнения двух пунктов по оптимизации карты с небом-коробкой большинство недостатков исчезают

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


Ссылки

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


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

§ 9.1   Простое небо (метод коробки)
§ 9.2   Правильное небо
§ 9.3   Названия стандартных картинок неба
§ 9.4   Создание картинок неба в программе Terragen

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


Copyright © 2003—2004
Дизайн: Дмитрий Черкашин aka «Dmitrich!».
Содержание: Дмитрий Черкашин и другие авторы, указанные в материалах.

С условиями перепечатки материалов Вы можете ознакомиться на странице about/index.shtml

Сайт создан в системе uCoz