Маппинг для DOOM: Часть 1 - наша первая комната

Делаем простейшую карту для короля всея шутанов и попутно изучаем мощный редактор GZDoom Builder.

Маппинг для DOOM: Часть 1 - наша первая комната

DOOM вышла, страшно сказать, 28 лет назад. За все эти годы фанаты создали какое-то невероятное количество самых разнообразных карт и модов - и дело не только в культовости игры. Дум очень просто модифицировать - ресурсы хранятся в четко организованных WAD-файлах, карты рисуются на двухмерной плоскости, а уж сколько возможностей добавили в source-портах... В DOOM добавили поддержку наклонных поверхностей, 3D-этажей, динамических источников света, тумана, сложных скриптов... Редактор уровней GZDoom Builder всё это поддерживает, но сегодня мы будем делать карту под ваниль - то есть под классический формат, в котором исполнены оригинальные карты игры. Готовы? Начинаем!

Подготовка к погружению

Чтобы делать карты для Дума, нужны три вещи:

1) .wad-файл с ресурсами игры, т.е. doom.wad или doom2.wad. Взять их можно, к примеру, из стимовской папки - вадник будет в папке /base.

2) Порт, который мы будем использовать для тестирования наших уровней. Для этой цели вполне подойдет всеобщий любимец GZDoom, но и простенький PrBoom тоже сгодится. Для ванили, по крайней мере.

3) Собственно, GZDoom Builder. Качаем его тут. Для работы потребуется поставить DirectX и Net Framework, если вдруг у кого нет.

Всё скачали и распаковали? Теперь вадник с ресурсами можно скопировать в папку с портом. Сделали и это? Ну, значит самое время запускать билдер. Итак...

Вот такой милый демон нас встречает
Вот такой милый демон нас встречает

Где-то на этом этапе может выскочить окошко - надо, дескать, выбрать порт для тестирования. Даже если оно не появилось, всё равно лучше зайти в Tools - Game Configurations, найти там Doom: Doom 2 (Doom Format), на вкладке Resources добавить наш doom2.wad, а на вкладке Testing - выбрать в поле Engine экзешник порта (например, gzdoom.exe). Если всё в порядке, то экзешник опознается:

GZDoom Builder позволяет делать карты для всех игр на движке Doom Engine
GZDoom Builder позволяет делать карты для всех игр на движке Doom Engine

Ну а на этом всё! Можно переходить к самой мякотке. Щёлкаем по File - New Map. Видим следующий диалог:

Маппинг для DOOM: Часть 1 - наша первая комната

Level name - не название уровня, которое будет отображаться в игре, а служебное название карты, по которому его будет искать движок. В Doom 2 карты называются MAP01..MAP32 - чтобы при старте игры запустилась именно наша карта, а не стандартная, нужно указывать MAP01. При желании это поведение можно изменить, но мы пока не будем этого касаться. Всё в традициях ванили.

Почему Doom 2, а не Doom? Обе игры используют один движок, но Doom 2 сильно расширяет первую часть в плане контента. Когда маппер говорит о ванили, он с 99% вероятностью подразумевает Doom 2, а не Doom.

Ресурсник подгрузился сам (т.к. мы указали его при настройке конфигурации), но при желании можно указывать дополнительные ресурсники. Мы, опять же, будем использовать пока только стандартный набор, благо там есть, из чего выбрать. Жмём ОК.

Секторы, лайндефы, вершины

You're a mapper, Harry
You're a mapper, Harry

Как и всегда в редакторах, тут целая куча разных кнопочек... Из которых подавляющее большинство - разные упрощающие довески, на которые можно пока закрыть глаза. Итак, щёлкаем правой кнопкой мыши в любое место на поле - потянется линия с указанием длины. Щелкаем левой - ставим точку, и тянём от неё дальше. Нарисуем таким образом прямоугольник со сторонами, скажем, 240 и 192:

Маппинг для DOOM: Часть 1 - наша первая комната

Закроем его, и внезапно:

Маппинг для DOOM: Часть 1 - наша первая комната

Прямоугольник стал замкнутым, потенциально обитаемым пространством! То есть, сектором. У каждого сектора может быть своя текстура пола и потолка, а еще высота и освещение. Давайте посмотрим, как наш сектор выглядит в трёхмерном виде. Для этого передвинем курсор поближе к нашему сектору, нажмём Q и перейдем в т.н. Visual Mode:

Маппинг для DOOM: Часть 1 - наша первая комната

Уже неплохо, согласитесь. Хотя вот эти деревянные панели на потолке плохо гармонируют с техногенной эстетикой стен и пола. Давайте же заменим их на что-то более удобоваримое. Для этого нужно научиться ориентироваться в Visual Mode - вместо WASD тут используется ESDF. Не спрашивайте, почему.

Наводимся на потолок (он замигает желтым), жмём на правую кнопку мыши:

Маппинг для DOOM: Часть 1 - наша первая комната

Нас интересует ceiling, т.е. потолок. Щёлкаем по иконке текстуры, попадаем в диалог выбора:

Маппинг для DOOM: Часть 1 - наша первая комната

В Думе - по крайней мере в ванильной его ипостаси - для стен и полов/потолков используются разные наборы текстур. Разработчики редактора позаботились о том, чтобы рассортировать текстуры думовского ресурсника по категориям, но можно смотреть всё сразу - для этого можно выбрать doom2.wad - [Flats]. Выбираем что-то более дизайнерское - например, CEIL3_4 с потолочной лампой. Смотрим результат:

Маппинг для DOOM: Часть 1 - наша первая комната

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

Здесь снова видим текстуру пола - чтобы вместо неё видеть текстуру потолка, перейдите в View - Ceiling Textures.

Маппинг для DOOM: Часть 1 - наша первая комната

В ванильном Думе нельзя выравнивать текстуры полов и потолков, они жестко привязаны к сетке уровня. Зато можно двигать сектора так, чтобы они в эту сетку вписывались. Чтобы это сделать, перейдите в Mode - Sectors Mode или нажмите S. Дальше щелкните по сектору левой кнопкой мыши (он загорится красным), и правой кнопкой сдвиньте на клетку вверх:

Маппинг для DOOM: Часть 1 - наша первая комната

Всё равно не то! Похоже, правую часть сектора придётся расширить, чтобы вписать последний ряд ламп. Сделать это можно, перейдя в Mode - Linedefs Mode или нажав L. После этого надо щелкнуть левой кнопкой мыши по правой стороне комнаты (тоже станет красной), и правой кнопкой потянуть вправо:

Маппинг для DOOM: Часть 1 - наша первая комната

Победа! Теперь можно возвращаться в режим отображения пола (View - Floor Textures).

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

Раз уж взялись за ремонт комнаты, то стены тоже стоило бы поменять. Вон, посмотрите, сколько в них дырок от пуль! Снова переходим в Visual Mode, наводимся на любую стену, щелкаем правой кнопкой мыши.

Маппинг для DOOM: Часть 1 - наша первая комната

Если у секторов по две текстуры, для пола и потолка, то у лайндефов их целых 6! Впрочем, нас пока интересует только одна - Middle на Front Side. Щелкаем по иконке текстуры, и выбираем, как выбирали текстуру потолка - только теперь уже из списка [TEXTURE1]. Я не стал далеко идти и выбрал BRONZE1:

Маппинг для DOOM: Часть 1 - наша первая комната

Теперь можно скопировать эту текстуру на оставшиеся стены комнаты. Не выходя из визуального режима наводимся на новую текстуру, жмём CTRL + C, потом - на другую стену, и жмём CTRL + V или среднюю кнопку мыши. Вуаля:

Маппинг для DOOM: Часть 1 - наша первая комната

Так облетаем всю комнату и копируем текстурку. Получается солидно, но как-то однообразно. Сделаем , чтобы часть стены у нас была другого цвета. Так как красить мы можем только весь лайндеф целиком, имеет смысл разделить его на две части. В этом нам поможет Verticles Mode (V) - ищем, где на линии разместить новую вершину, жмакаем правой кнопкой:

Маппинг для DOOM: Часть 1 - наша первая комната

Теперь в Visual Mode стена разделилась на два фрагмента, каждый из которых можно покрасить. Что и делаем:

Маппинг для DOOM: Часть 1 - наша первая комната

Ой нет, не то! Это просто рука дернулась, честное пионерское. Вот, что я имел в виду:

Маппинг для DOOM: Часть 1 - наша первая комната

На место портрета влезли бы две такие текстурки, говорите? Что ж, не скрою: я действительно вернулся в Verticles Mode и удалил ту точку, поставив другую, правее:

Маппинг для DOOM: Часть 1 - наша первая комната

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

Тайна третьего измерения

Мы с вами, ребята, молодцы - успешно поменяли обои, хоть сейчас заселяйся. Вот только комнатка наша пустовата - давайте добавим туда какой-нибудь предмет интерьера. Например, серый ящик с эмблемой UAC. Рисуем в углу сектор 64х64:

Маппинг для DOOM: Часть 1 - наша первая комната

Размер сетки я, кстати, уменьшил - это клавишами на [ и ]. В общем, закрываем сектор. Теперь, чтобы ящик оформился, нам нужно установить этому сектору высоту. Тут есть два пути: можно перейти в Sectors Mode и, щелкнув правой кнопкой мыши по новорожденному сектору, установить в поле Floor Height значение 64:

Маппинг для DOOM: Часть 1 - наша первая комната

...или же зайти в Visual Mode, ориентируясь на подсветку пола отыскать новый сектор, навестись на него, и, вращая колёсико мыши, поднять его над полом. При этом пол поднимается с шагом 8, что согласуется со многими думовскими текстурами.

В обоих случаях итоговый результат должен быть таким:

Маппинг для DOOM: Часть 1 - наша первая комната

Надо признать, цвет у Missing texture весьма жизнерадостный, но в игре мы его не увидим - вместо него будут всяко-разные графические артефакты. Чтобы избавить себя от этого зрелища, наведемся на такую текстуру и жмакнем на правую кнопку:

Маппинг для DOOM: Часть 1 - наша первая комната

Здесь доступны обе стороны, и Front, и Back, причем в Back Lower горит предупреждающий знак. Щелкаем на него, выбираем текстуру CRATE2, затем копируем на другую грань. Получаем:

Маппинг для DOOM: Часть 1 - наша первая комната

Теперь меняем текстуру крышки на CRATOP1, установив её во Floor:

Маппинг для DOOM: Часть 1 - наша первая комната

Теперь в комнате мы не одни - с нами соседствует вот такой замечательный ящик. Это ли не прекрасно? И всё таки - почему когда мы выбирали текстуру стен, мы устанавливали Middle на Front Side, а в случае с ящиком - Lower на Back Side? О, это одно из великих таинств Doom Engine. Сейчас я посвящу вас в его суть.

(голосом Гермионы Грейнджер) Итак, псевдотрехмерный мир Doom состоит из секторов и лайндефов, придающих им форму. Сектора не могут находиться один над другим, но могут иметь разную высоту относительно друг друга. Текстуры Lower и Upper нужны как раз для таких случаев - наш ящик возвышается над поверхностью пола, а значит надо назначить ему текстуру Lower. А если бы он торчал из потолка? Тогда нам пришлось бы указывать и Upper:

Маппинг для DOOM: Часть 1 - наша первая комната

Но почему именно Back Side, а не Front, спросите вы? Потому, что лайндефы ящика повернуты к нам задней стороной:

Перед там, где вытарчивает. Ну вы поняли
Перед там, где вытарчивает. Ну вы поняли

То, что они расположены именно так, а не иначе, не играет никакой роли - двусторонние лайндефы отображают текстуры с обоих сторон. Хотя при желании направление лайндефа можно поменять - этой цели служит клавиша F. А ориентацию односторонних лайндефов, что контактируют с внешним пространством, поменять нельзя - они всегда смотрят "внутрь" уровня.

Так, ну а Middle тогда зачем? Она используется, во-первых, для внешних стен уровня, а во-вторых, на неё можно навесить прозрачную текстуру - решетку, например. Сделать это можно только в Linedefs Mode, выбрав линии и щелкнув правой кнопкой:

Маппинг для DOOM: Часть 1 - наша первая комната

Получим что-то подобное:

Маппинг для DOOM: Часть 1 - наша первая комната

Мы не планируем заводить попугая, а значит откатываем эту правку - CTRL + Z работает и здесь.

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

Маппинг для DOOM: Часть 1 - наша первая комната

Переходим в Visual Mode, и вешаем на неё текстуру двери. Ну например:

Маппинг для DOOM: Часть 1 - наша первая комната

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

Маппинг для DOOM: Часть 1 - наша первая комната

Всё бы ничего, но текстура-то явно съехала! Это потому, что Lower и Upper текстуры ведут себя немного иначе, чем Middle. Чтобы поставить её на место, нужно навестись на неё, и нажать U. Тогда лайндеф установится в режим Upper Unpegged - а если бы такая текстура была под дверью, то можно было бы воспользоваться клавишей L (Lower Unpegged).

Маппинг для DOOM: Часть 1 - наша первая комната

Наша дверь пока не открывается и никуда не ведёт - этим мы займемся в следующий раз. Главное, что теперь мы знаем азы.

Едут новосёлы

Комната получилась хоть куда, самое время её тестировать. Но сделать это пока нельзя - на уровне нет точки старта первого игрока! Именно в эту точку попадает игрок в одиночной кампании. Чтобы добавить его, надо перейти в Things Mode (T). Дальше можно щелкнуть правой кнопкой в любом месте(желательно в пределах комнаты), и откроется диалог, где нам сразу предложат разместить первого игрока:

Маппинг для DOOM: Часть 1 - наша первая комната

Можно поставить его у дальней стены рядом с ящиком, лицом к двери - для этого сразу устанавливаем ему Angle 180. Закрываем окно, и двигаем нашего героя. Вот, как это будет выглядеть в Visual Mode:

Маппинг для DOOM: Часть 1 - наша первая комната

Можно расставлять в комнате и другие объекты - например, лампу (Light Sources - Short Techno Floor Lamp), несколько синих бутылей (Health and Armor - Health bonus), аптечку для лечения последствий употребления синьки (Health - Medkit). Можно разместить и каких-нибудь монстров, но лично я не хотел бы, чтобы новоселье обернулось мордобоем.

Вот, что получается:

Маппинг для DOOM: Часть 1 - наша первая комната

Как и вершины, вещи тоже прилипают к сетке уровня. Это может быть неудобно - тогда выручает пункт меню Edit - Snap To Grid. После его отключения и вещи, и вершины можно ставить где угодно, с какой угодно точностью.

Испытываем карту

А теперь самое время взглянуть на нашу комнату от первого лица! Сохраняем карту, заходим в Tools - Test Map (или ждём F9). Если всё настроено верно, то движок стартует, и мы видим...

Маппинг для DOOM: Часть 1 - наша первая комната
Маппинг для DOOM: Часть 1 - наша первая комната

Прелесть же, ну! Впрочем, не знаю, комфортно ли жить под потолком, сплошь состоящим из ламп - но этот момент мы исправим в следующий раз. Попутно изучим двери, телепорты и прочий интерактив.

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

1717 показов
7.5K7.5K открытий
20 комментариев

Как-то давно писал статью про свои жалкие потуги сделать что-то в Doom Builder

https://dtf.ru/54555

Ответить

вроде не сложный редактор. напомнило редактор gtkradiant

Ответить

Он проще GtkRadiant, если делать простые вещи — первую в жизни комнату с парой импов можно сделать буквально минут за пять.

Ответить

Вот олдскулы свело. Маппил для дума в школьном возрасте. Жалко, что я не умел тогда нормально планировать, в результате карты выходили маленькие и быстропроходимые. Но некоторым людям доставляли

Ответить

Прочитал - прям как что-то запрещённое посмотрел. Спасибо огромное за пост - деды всё же не так как мы в левел дизайн рубали)))

Ответить

Оххх... Вспомнил свой опыт в маппинге и моддинге для ZDoom-based портов. Давно правда ушел от дела, идей было тонны, а реализация качеством не веяла :D

Ответить

Оооо, заберу в закладки, спасибо!

Ответить