Делаем небольшую зимнюю карту, на которой будут новые текстуры и музыка. Их мы научимся добавлять с помощью нового редактора — SLADE.
Предыдущие статьи были посвящены редактору уровней GZDoom Builder:
Часть 1 — установка GZDB, простейшая геометрия
Часть 2 — освещение, триггеры, выравнивание текстур, открытые пространства
Часть 3 — двери с ключами, секретки, монстры, зоны слышимости, телепорты, выход с уровня
В принципе, их можно считать законченным циклом, этаким курсом молодого бойца на ниве ванильного маппинга. Когда я писал эту часть, я принял волевое решение вообще забить на маппинг, и вместо этого сосредоточиться на ином.
Так что сегодня мы будем учиться загружать в вадник новые текстуры, музыку и спрайты — то, что придаст вашей поделке оригинальности (ну или васянства — тут все зависит от вас).
Готовьтесь: в статье будет много скучных скринов интерфейсов, технических подробностей и кринжевых шуток, так что вот вам советская фарфоровая рысь. Пусть её вид успокоит вас и придаст сил.
А теперь начнем, что ли.
Where’s all the data?
Для начала раздобудем редактор SLADE. Например, на официальном сайте проекта.
Качаем, ставим, видим:
Интерфейс не перегруженный и не лапидарный, как раз самое то.
Так как работать мы будем с вадником из предыдущих выпусков, идём в File — Open и открываем его (в прошлый раз он назывался DTF_v1.wad):
Так, что тут у нас? В прошлый раз мы занимались только картой, и потому все, что мы видим, относится только к ней. Первый элемент — MAP01 — это маркер карты, остальные — служебные таблицы, в в которых содержится её содержимое. Всё это называется лампами (lump).
Ламп («кучка») — суть набор данных в ваднике. Они бывают самых разных видов — таблицы, изображения в думовских форматах, двоичные данные, текст, и т.д. Лампы карт лучше руками не трогать — можно сломать наш уровень напрочь. А вот с лампами других типов можно делать все, что душе угодно.
Перед тем, как начать напихивать в наш вадник ништяки, необходимо настроить базовый ресурсник. Идём в Edit — Set Base Resource Archive, и указываем путь к doom2.wad:
Жмём Apply и Ok. Теперь можно начинать.
Белый снег, серый лёд
Первое, что мы сегодня сделаем — добавим в наш вадник несколько текстурок, отвечающих за полы/потолки (flats). Как уже говорилось, в DOOM для стен и полов с потолками используются различные наборы текстур — это связано с тем, что они рендерятся по-разному и хранятся в разных форматах. Флэт должен быть разрешением строго 64х64 и иметь формат Graphic (Flat).
Брать наши полы мы будем из другого вадника, Mogor’s Winter. Открываем его, находим флэт HFSNOW01:
Копируем его с помощью CTRL + C, переходим на вкладку с нашим вадником, устанавливаем курсор на последний ламп карты (BLOCKMAP), жмакаем CTRL + V:
Текстурка снега скопировалась и сразу же распозналась, как флэт. Это потому, что мы скопировали не просто графику, а ламп целиком, со всей сопутствующей информацией.
Еще она загорелась зелёным — это означает, что ламп не присутствует в сохраненной копии. Идём в Flie — Save As и сохраняем наш вад — например, как DTF_v2. После этого флэт запишется в вадник и тоже станет чёрным.
Скопируем в наш вад еще несколько флэтов — например, приятные деревянные полы HFWOD02, HFWOD03 и HFWOD06. При просмотре флэта можно изменять масштаб просмотра, а если чекнуть галку Tile, то можно посмотреть, как текстура будет выглядеть на стыках (и не нужно ли её допиливать лобзиком):
Самое время открыть редактор уровней GZDoom Builder и посмотреть, как наши флэты выглядят в игре. Но перед этим необходимо сделать еще одну вещь: окружить наши полы специальными маркерами. Если этого не сделать, то полы просто не будут доступны в редакторе.
Наводимся на ламп, предшествующий первому флэту (BLOCKMAP), и жмём на командной панели кнопку New Entry:
После чего вводим имя FF_START. Получаем:
Этот маркер подскажет редактору и игровому движку, откуда начинать грузить флэты. Точно так же наводимся на последний флэт, и создаём маркер FF_END:
Сохраняем… Но перед этим еще перекидываем текстуру льда HFSNOW02.
Теперь вадник можно закрыть — а если мы планируем открывать его в GZDoom Builder, то закрыть его необходимо, иначе возможны всякие ошибки ввода-вывода и прочие гадости. Для этого идем в File — Close, жмём CTRL + W, ну или просто закрываем вкладку с вадником.
Чтобы поглядеть на новые флэты, запускаем билдер и создаём новую карту в формате Doom: Doom 2 (Doom format). На этот раз называем её MAP02:
…и сразу же идём в File — Save Map Into, и выбираем наш DTF_v2.wad. После того, как карта сохранится в наш вадник, в редактор подгрузятся новые флэты, и их можно будет выбирать в диалоге текстур. При этом флэты из нового вадника будут отображаться отдельно:
Так, добавив всего несколько текстурок пола, мы привнесли в Дум зимнюю атмосферу — в нашем случае это атмосфера обогрева у горящей бочки. И это только начало, ведь сейчас мы перейдем к загрузке текстур стен.
Заплата на заплате
Текстурки стен мы будем брать оттуда же, откуда и флэты — из mwinter.wad. От флэтов они отличаются тем, что подписаны Graphic (Doom), а еще они как правило длиннее. Открываем наш вад и mwinter, ищем в последнем текстурки H_WOD01…07, выделяем, и копируем в наш вад, установив курсор на FF_END:
Теперь два момента. Во-первых, лампы второй карты закинулись после лампов текстур, так что первая и вторая карты теперь идут вразнобой. Это не страшно, но если внутренний перфекционист требует это исправить, можно выделить все лампы второй карты, и начать одновременно сдвигать их вверх — для этого используется синяя стрелка вверх или CTRL + U. Должно получиться так:
Во-вторых, теперь по логике нужно оградить текстуры стен маркерами, как мы это сделали с флэтами. В mwinter.wad это сделано маркерами PP_START и PP_END. Но это излишне — что PrBoom, что GZDoom не требуют маркеров для текстурок стен, и те служат скорее для удобства/как дань традиции. И даже если мы эти маркеры поставим, в редакторе текстуры видны не будут.
Почему так? Дело в том, что то, что мы только что загрузили — еще даже не текстуры, а составные части текстур, патчи (patch), «заплатки». Текстуры собираются из них в специальных лампах, которые мы сейчас создадим. Выделяем текстуры стен, жмём правой кнопкой, и выбираем Graphics — Add to TEXTUREx. Реактор отметит, что в ваднике нет TEXTURE1 — отвечаем «Да».
В следующем диалоге в поле Source выбираем Import from Base Resource Archive (вот он и пригодился):
После этого в нашем архиве появляются еще два лампа — TEXTURE1 и PNAMES. Что они такое?
Как это работает? Выбираем TEXTURE1, в правой части экрана жмём на кнопку Edit textures. Откроется новая вкладка, где будет список текстур, причем не только из нашего вадника, но и из DOOM2.wad.
Найдем там, например, текстуру SLADSKUL:
В правой части видно, что она сделана из двух частей — зеленая стенка WLA128_1 и черепок SW2_2, причем для последнего указано смещение по вертикали и горизонтали.
Все эти стандартные патчесы не добавились в наш вадник — в Texture Editor они видны потому, что мы указали для Слейда стандартный ресурсник. Но структура лампа TEXTURE1 из DOOM2.wad перенеслась в наш вад целиком — это необходимо для того, чтобы все текстуры отображались корректно.
Что же касается наших текстур, то они разместились в конце списка:
Здесь их можно переименовать, хотя если текстура состоит из одного патчеса, то смысла в этом нет.
Сохраняем, закрываем Слейд, снова запускаем Билдер:
Как видим, в список текстур нашего вадника набилось всё подряд — и наши текстуры, и текстуры из doom2.wad. Сделать с этим ничего особо нельзя, так что остается воспользоваться поиском по наименованию, ну и чекнуть галку Used Textures at the Top — тогда сначала будут отображаться текстуры, уже используемые на уровне.
Система компоновки текстур из составных частей позволяла сэкономить место — особенно это выручало при создании текстур с рубильниками. В модах её тоже иногда используют, причем для ZDOOM, GZDOOM и т.д. разработали новый формат с расширенным функционалом.
Теперь можно изменить вид неба над головой.
В Думе — в ванильном, по крайней мере — вид неба захардкожен и зависит от игры. Например, в DOOM2 первые 11 уровней используют небо SKY1, 12-20 — SKY2, а 21-32 — адское SKY3. В навороченных портах вроде GZDoom это можно гибко настраивать, но так как мы маппим под ваниль (т.е. считай под PrBoom), мы просто заменим текстуру SKY1 на другую.
Новое небо мы возьмем из другого вадника — на сей раз это будет 1000 Lines 3: Community Project. Скачиваем, открываем, ищем патчесы E1SKY1…E1SKY4:
Копируем в наш вад к другим патчесам. Теперь открываем TEXTURE1, ищем текстуру SKY1. Как видим, сейчас она состоит из одного патча RSKY1 и имеет размер 256×128. Т.е. в теории мы могли бы просто завести у себя в ваднике новый патч RSKY1, и небо бы поменялось.
Но мы пойдем дальше — сделаем красивое, детальное небо из 4-х кусков. А значит:
Должно получиться так:
Теперь жмём на иконку дискеты (напротив Format: Doom TEXTUREx), закрываем окно, и потом еще раз сохраняем вадник, чтобы горящие синим измененные TEXTURE1 и PNAMES записались и стали чёрными.
Запускаем игру и идём на MAP02:
Прелесть же, ну!
Итак, еще раз:
Думеры говорят на своем, необычном языке. Как впрочем и любая другая уважающая себя секта.
Собственно, Кот
Так, а если мы хотим добавить текстуру не из чужих вадников, а какую-нибудь свою? Откуда-то ведь все эти текстуры должны были взяться, в конце-то концов. Что ж, не будем тянуть известно кого за хвост. Итак, наш герой:
Перед тем, как грузить его в Slade, потребуется произвести ряд манипуляций. Во-первых, так как у нас тут не обычная текстурка, а фотокарточка, мы должны ужать её в 1.2 раза по вертикали, чтобы в Думе морду не растянуло по высоте.
Пиксели в DOOM не квадратные, а прямоугольные, вытянутые по вертикали. Когда игру разрабатывали, планировалось, что она будет работать в соотношении сторон 4:3, но в разрешении 320×200. Соотношение сторон этого разрешения — 8:5, или 4:2.5. Старые CRT-мониторы растягивали картинку, и пиксели становились на 20% выше.
Нынешние мониторы работают иначе, так что современные порты растягивают картинку искусственно. В GZDoom’е этим можно управлять, задавая текстурам разную степень растяжения.
Сплюснутый карликот, 83.3% от нормальной высоты:
Во-вторых, обрезаем и уменьшаем текстуру. Пусть она у нас будет размером 256х192:
А вот теперь уже можно грузить. В Слейде идём в Archive — Import Files. В ваднике он встаёт как Graphic (JPEG):
PrBoom не умеет работать с таким форматом — что уж говорить о ванили! А значит, нам надо сконвертировать нашу текстуру в думовский формат. Выделяем ламп кота, идём в Graphic — Convert To:
Огромное количество цветов — до 16 миллионов — мы преобразуем в 256-цветную думовскую палитру. При этом, конечно, будут потери — сильнее всего это заметно на шее кота. Чтобы избежать подобного, можно заранее провести цветокоррекцию. Вот, кстати, как выглядит думовская палитра:
Здесь хватает оттенков для грязи и крови, а вот скажем небесно-голубого тут не встретишь. При цветокоррекции все это стоит учитывать, т.к. чем дальше цвет от думовского аналога, тем выше шанс получить артефакты.
После того, как мы конвертировали кота, надо сохранить измененный ламп — и его формат сменится на Graphic (Doom). Можно добавлять его в TEXTURE1 и тестить на карте.
Как и планировалось, кот растянулся, и встал, как надо. Ура!
????
С текстурами закончили, теперь самое время поменять музыку. На первой карте у нас играла тема с первого уровня оригинала, и вполне неплохо туда вписывалась. А вот со второй картой такое уже не прокатит — на MAP02 кампании DOOM 2 на фоне звучит нечто очень расслабленное и какое-то даже латиноамериканское. В атмосферу зимних праздников это вписывается примерно никак, и потому давайте поставим что-нибудь другое.
Музыка в Думе представлена великим и могучим форматом MIDI, а еще форматом MUS (что по сути является тем же MIDI, но с минимальными допилками, суть которых мне неведома). Оба формата хранят только информацию о нотах, а сами инструменты довешиваются отдельно, в так называемом soundfont’е. Из-за этого одна и та же композиция может по-разному звучать в разных портах.
В портах добавили поддержку для OGG, MP3, трекерной музыки и т.д. Но в подавляющем большинстве модов всё равно используется MIDI — иногда для больших проектов даже пишутся отдельные саундтреки в этом формате.
Какая же музыка подойдет для зимней карты? Новый год вроде как уже позади, значит, не обязательно ставить что-то совсем уж праздничное. Не мудрствуя лукаво, я отыскал старенький вад для коопа, Drown In Blood, и взял оттуда трек с первого уровня — в меру лиричную MIDI-версию весьма известной в определенных кругах песни.
Как и многое другое в ванили, музыка в DOOM 2 захардкожена — так что если мы хотим заменить музыку на карте, мы должны сначала понять, какой трек ей соответствует. Полный список названий треков можно посмотреть, к пример, тут.
В нашем случае мы хотим заменить трек с MAP02 (D_STALKS) на музыку из другого вадника, где она играет на карте MAP01 (D_RUNNIN). Так что открываем dib20b.wad, отыскиваем D_RUNNIN, копируем в наш вадник после всех прочих лампов, и переименовываем в D_STALKS.
Готово!
Если выбрать какой-нибудь трек, в правой части интерфейса появится нечто вроде аудиоплеера. Он справляется с OGG и трекерами, а вот MIDI из коробки не играет — нужно или указать саундфонт для fluidsynth’а (у меня не работает), или настроить Timidity — но эта древняя утилита требует отдельных плясок с бубном и к тому же коверкает музыку. Так что этот момент я разбирать не буду.
Что же касается звуков, то тут все проще — ваниль поддерживает звуки в формате .wav, конвертировать в который умеют многие программы и сервисы — взять тот же AIMP Audio Converter, идущий в комплекте с аудиоплеером. Определяемся со звуком, который хотим заменять, даем новому звуку такое же название, грузим в наш вад. Всё.
Замена спрайтов и прочей графики
Изначально я планировал продемонстрировать замену спрайтов на примере импов в новогодних шапочках. Но за праздничную неделю новизна года ощутимо утратилась, а потому поступим проще — заменим горящую бочку на нечто похожее по сути, но более готическое по форме.
Качаем вот этот вадник. В отличие от других вадов из этого материала, этот не имеет геймплейной ценности и предназначен сугубо для моддеров. Поэтому в архиве так мало всего:
Кроме интересующих нас спрайтов вадник содержит код, который позволяет использовать эту декорацию как новый объект, без замены существующих. Но этого мы пока касаться не будем — мы делаем карту для PrBoom, а добавлять новые объекты можно только в ZDoom, GZDoom и иже с ними. Так что копируем спрайты в наш вад:
Переименовываем, заменяя первые 4 буквы с HBBQ на FCAN (тут удобна функция Rename Each). И, подобно флэтам, окружаем спрайты специальными маркерами — теперь это SS_START и SS_END:
Осталось только конвертировать их из PNG в думовский формат — Doom GFX (Paletted). В этот раз никаких графических артефактов не будет, ведь спрайты изначально рисовались в думовской палитре.
Вот, как теперь выглядит бочка в игре:
Что же касается прочей графики — заглавного экрана, то здесь все, как с патчесами — грузим, конвертируем в Doom GFX (Paletted), разве что в TEXTURE1 не добавляем.
Вот к примеру заглавный экран. Наш вадник называется DTF_v2.wad, а значит требуется подобрать что-то, имеющее прямую связь с ресурсом и его аудиторией. Долго искать не пришлось:
Процесс нам уже хорошо знаком: берем интересующую нас картинку, сжимаем до нужного размера, грузим, конвертируем, переименовываем в соответствии с тем, какой элемент планируем заменять. В нашем случае заставку сжали до 320×200 и переименовали в TITLEPIC, а заголовок главного меню игры — до 125×60 и назвали M_DOOM. Если открыть в редакторе doom2.wad, то можно легко найти названия нужных спрайтов/графических элементов. Главное при этом сам iwad нечаянно не похерить.
Вот и сказочке конец
А кто слушал — теперь может использовать свои и чужие текстурки, музыку, спрайты, элементы интерфейса и т.д. Демку я записывать не стал (там нечего записывать), а саму карту можно скачать вот здесь — попасть на неё можно с помощью чита idclev02. Делать там особо нечего, но зато можно полюбоваться красивым звездным небом и ликом токсичного кота.
В следующей статье мы вернемся к маппингу и начнём осваивать новый формат — Boom. Этот формат похож на ванильный, но имеет несколько интересных фишек, а еще поддерживает пользовательские анимации.
Всем спасибо за внимание!
#doom #gzdoombuilder #gzdoom #slade #leveldesign
Оставить комментарий: