Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

В этой статье мы продолжим изучать редактор уровней GZDoom Builder - будем делать двери, выставлять освещение и создавать открытые пространства.

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

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

В ней описываются основы основ - как устанавливать и настраивать редактор, рисовать геометрию, натягивать текстуры и т.д. Закончилось всё тем, что мы вылепили небольшую комнатку. Вот она:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Мы узнали, что уровни в DOOM располагаются на двухмерной плоскости и состоят из замкнутых фигур-секторов. При этом каждый сектор может иметь свои высоты пола и потолка, свои текстуры, и свой уровень яркости. Последнее мы так и не проверили на практике, чем и предлагаю заняться в качестве разминки.

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Еще в прошлый раз было замечено, что комната не очень-то уютна: резкий свет 12 ламп портит всю малину. Предлагаю поменять текстуру потолка, снизить общий уровень яркости в помещении, сделать эффект свечения от лампы. Давайте же приступим...

Свет и тьма

1) Меняем потолочную текстуру на CEIL3_3, не забываем скопировать и вставить её и на второй сектор, с ящиком

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

2) Переходим в Sectors Mode (S). выделяем оба сектора комнаты и третий, околодверной, жмём правой кнопкой, и устанавливаем Brightness 128

ИЛИ

в Visual Mode левой кнопкой выделяем сектора, и на CTRL + КОЛЁСИКО МЫШИ меняем яркость. Должно получиться так:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Отлично, потолочные лампы убрали, уровень освещенности уменьшили. Теперь задействуем напольный светильник - не зря же мы его туда поставили, верно?

3) Чертим вокруг лампы четвертинку круга. Если у вас включено Edit - Snap To Grid, то линия будет прилипать к сетке карты. Чтобы этого избежать, можно зажимать Shift - тогда точки линии можно ставить с какой угодно точностью:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Закрываем сектор. Устанавливаем ему яркость чуть поярче, например, 192. Сильный контраст между этой и неосвещенной частями комнаты плохо согласуется с понятием уюта, и потому добавляем еще несколько слоёв, выставляя им все меньшую яркость (192, 176, 160, 144). Получается что-то такое:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса
Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

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

Выходи из комнаты

Шаг в неизведанное сделать пока что нельзя - дверь никуда не ведет, и является просто внешней текстурой. Исправим это, дорисовав к ней еще 2 сектора, толщиной 8 и 16 (здесь потребуется уменьшить размер сетки):

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Дверью будет центральный сектор, а крайние - "дверной коробкой", ограничивающей высоту подъема двери. Переходим в 3д режим:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Текстура двери размазалась по секторам, которые мы присоединили. Это не беда - меняем их на что-нибудь другое, например, на текстуру соседней стены. А вот текстуру узкого сектора можно поменять, например, на DOORTRAK:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Теперь делаем саму дверь. В Sectors Mode выберите узкий сектор, укажите ему Ceiling Height = 0 (такая же, как и Floor Height). Ну или в 3д режиме подлетите под дверной сектор, наведитесь на него, и вращая колёсико мыши утопите его в пол. Результат должен быть таким:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Наклеиваем на пустышку текстуру нашей дверки. Тут есть нюанс: у неё высота 72 пиксела, а наш проём - 64. Поэтому снизу будет торчать белый порожек, без которого вполне можно обойтись. Наводимся на дверь, жмём стрелку вниз, и сдвигаем текстуру на 7-8 пикселов:

Теперь самое время оживить нашу дверь. Для этого на её переднюю сторону нужно нанести триггер, который будет её открывать. Выходим из Visual Mode и выбираем Linedef Mode. Щелкаем правой кнопкой мыши по передней стороне нашей двери, в нижней части диалога находим поле Action. Нас интересует SR Door Open Wait Close. Как следует из названия, эта дверь откроется и через некоторое время закроется вновь. С префиксом - SR - ненамного сложнее: S - Switch (активируется нажатием), R - Repeatable, многократного использования. В поле Tag ставим 1:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Если теперь нажать на ОК, то правый линия двери стала зеленой - так на карте отображаются лайндефы с экшонами.

Теперь надо привязать экшн двери к сектору, который собственно и будет открываться. В нашем случае это и есть сектор двери, на переднюю сторону которой мы только что повесили экшн - ему надо присвоить тот же тег, что и триггеру, т.е. 1. Переходим в Sectors Mode, выбираем наш сектор, заходим в его свойства и ставим Tag 1:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Теперь лайндеф с текстурой двери и утопленный в пол сектор этой самой двери связаны - если в Linedef Mode навестись на лайндеф двери, то сектор загорится жёлтым:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Сохраняемся, запускаем нашу карту:

Работает! Отныне наш подопытный может покидать свою камеру, а мы - делать всевозможные двери. Теперь дело за малым - сделать так, чтобы можно было открывать дверь и с другой стороны. Добавляем к дверной коробке еще один сектор, попросторнее, а дальше по накатанной. Текстуру на заднюю сторону, на неё же экшон SR Door Open Wait Close, на него тэг 1... Вроде бы всё, но почему тогда не работает? Дело в том, что когда мы делали дверь, лайндеф задней стороны оказался повернут внутрь, а не наружу. Исправляем это выделением и нажатием на F:

Теперь дверь будет открываться в обе стороны.

...На самом деле мы могли бы сделать дверь гораздо проще - с помощью экшона DR Door Open Wait Close (also monsters). От SR Door Open Wait Close он отличается тем, что ему вообще не нужен тэг - людей сектор, на сторону которого нанесен этот экшон, стал бы работать, как дверь. В большинстве случаев так даже удобнее - не нужно заводить кучу тегов для каждой двери.

Раз уж речь шла именно о дверях, начинать, возможно, стоило именно с DR Door Open Wait Close, как с простейшего варианта... Но зато теперь мы знаем, как работать с тэгами, на которых завязано большинство экшонов в Думе.

И еще немного о текстурах

Настало время нам выходить на поверхность. Сделаем за дверью коридор, перемежающийся лестницами с шагом высоты 16. Высоту от пола до потолка я решил сделать везде 120 - чтобы одновременно поднимать пол и потолок, можно выделить их Visual Mode и там же докручивать до нужной высоты колёсиком мыши.

Стены я покрыл текстурой TEKGREN2 - она неплохо выглядит, хорошо контрастирует с бурыми оттенками первой комнаты, а еще у неё есть несколько вариаций, которыми можно будет разнообразить коридор.

Вот, что получилось:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса
Ах да, с этой стороны я тоже повесил на текстуру  над дверью Upper Unpegged. Чтобы не уезжала.
Ах да, с этой стороны я тоже повесил на текстуру  над дверью Upper Unpegged. Чтобы не уезжала.

В глаза сразу бросается то, что текстуры лежат некрасиво - они съехали вместе с потолками, которые мы поднимали, когда уводили коридор вверх. Самое время обратиться к выравниванию текстур. Это можно делать руками - стрелочками клавиатуры, например - но это медленно, долго и вообще больше подходит для филигранных работ. Так что правильные пацаны выбирают A и Shift + A - то бишь автоматическое выравнивание по горизонтали и по вертикали соответственно.

Выравнивание происходит по текстуре, на которую мы в данный момент навелись:

Вуаля! Хотя скажем выступы над ступенями можно выровнять лучше - например, установить везде на этих линиях Upper Unpegged.

Вообще, я ведь так и не рассказал, что это такое - Lower и Upper Unpegged. Это свойства лайндефа (линии). Первое подтягивает нижний край нижней текстуры к полу, второе - верхний край верхней текстуры к потолку. Мы автоматически выровняли среднюю текстуру, покрывающую внешние стены коридора, верхняя текстура потолочных выступов тоже выровнялась, но так как нижние и верхние текстуры ведут себя не так, как средние, она пошла с другим смещением - что мы исправили Upper Unpegged'ом.

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

То есть если попытаться выровнять по текстуре на скрине, то ничего не произойдет - она ограничена другими текстурами, а значит ни они, ни остальные текстуры не сдвинутся с места.

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

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

Тут важно помнить, что почти все текстуры в DOOM имеют ширину 64 или 128 пикселов. Т.е. если делать лайндефы кратными 64, то текстура шириной 64 идеально на них ляжет. С левой стеной у нас всё обстоит именно так - её длина равняется 320, мы делим её вершинами на 5 равных частей длиной 64. Лепим TEKGREN1'ы, видим, что они ложатся идеально:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

А вот с правой стеной так не прокатит - её длина 240, и если мы вершинами отрежем с каждого края по 64 и налепим туда TEKGREN1, то оставшийся отрезок не будет кратен 64 и будет смотреться довольно порнографично:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Что в таких случаях делать? Можно сдвинуть текстуру чуть вправо, чтобы смотрелась симметрично, а можно уменьшить размер сетки, бахнуть посередине еще вершинку, сдвинуть текстурки в разные стороны и получить нечто такое:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Понятно, что тут многое зависит от текстуры, и такой вот мапперский трик прокатит не везде, но в данном случае мы выкрутились, и это главное)

Что касается верхнего конца прохода, то тут я поставил по бокам TEKGREN3. Нравятся мне эти синие треугольнички, ничего не могу с собой поделать.

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Но хватит про текстуры. Переходим к заключительной части сегодняшнего урока - созданию открытых пространств.

Чистое небо

Создадим еще пару секторов, которым выставим более высокий уровень яркости. Первый будет выполнять функции предбанника, второй - собственно, природного ландшафта. В моём случае это выглядит так:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса
Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Пол комнаты-улицы я устлал травой GRASS2, а на небо натянул особую текстуру F_SKY1. Эта неказистая текстура в игре не отображается - через неё становится видно небо. Но в редакторе его видно, только если включить специальный режим отображения.

Чтобы это сделать, не выходя из Visual Mode нажмите TAB:

Это ли не прекрасно?
Это ли не прекрасно?

Теперь у нашего морпеха есть не только комната, но и личная лужайка. Хоть сейчас кроликов разводи. Проблема только в том, что лужайка эта выглядит этаким провалом в земле - так и ждёшь, что у краёв ямы покажутся индейцы-апачи и изрешетят тебя стрелами. Как бы нам опустить края ямы?

Рисуем вокруг лужайки еще один сектор, в форме подковы:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Поднимаем его так, как нам надо, ставим текстуру:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

И утапливаем его потолок до уровня пола. Жмакаем TAB, и:

А всё почему?

Через верхнюю текстуру сектора, на потолке которого находится текстура F_SKY1, тоже видно небо. Эту фишку можно использовать, чтобы делать детализированный ландшафт - главное следить за тем, чтобы "опущенное" небо нигде не заслоняло текстурки. Иначе будет выглядеть, будто мир исчезает за стеной чистого неба.

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

По идее отсюда должна быть видна стена, в толще которой скрывается коридор и наша комната, но мы видим небо. На это можно забить, как сделали авторы оригинального DOOM (начало E3M1), а можно пойти до конца. Ибо, как завещал профессор Фортран,

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Потребуется добавить еще один сектор между сектором лужайки и "подковой" с опущенным небом. Можно сделать сектор вокруг всей лужайки, а можно только там, где мы хотим видеть продолжение стены. Например:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

Поднимаем потолок сектора до уровня неба на лужайке:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

И в игре:

Маппинг для DOOM: Часть 2 - тьма, дверь и небеса

То же самое можно сделать и с левой стороны:

Ну а на этом всё

Сегодня мы научились куче всего. Устанавливать яркость в помещении, рисовать сектора без привязки к сетке, делать двери, выравнивать текстуры, делать открытые пространства... А ведь планировалось еще рассказать о таких вещах, как, например, телепорты. Но материал и так вышел объемным - а значит об этом и многом другом я расскажу в следующий раз.

Всем спасибо за внимание!

2222 показа
3K3K открытий
15 комментариев

Обожаю играться в конструкторах

Ответить

Это интереснее конструктора. Иначе моддинг в думе был бы мёртв))

Ответить

Отлично! А ты будешь переходить к таким страшным вещам как DECORATE, ACS, 3D Floors? Вообще помню ещё на IDDQD делали годный гайд по картостроению

Ответить

Буду, но уже потом, когда закончу цикл о ванили)

Ответить

Вторая часть, отлично! Очень крутые блоки!

Ответить

Спасибо)

Ответить

Спасибо, было интересно

Ответить