В этой статье я хочу проанализировать первый эпизод Ultimate DOOM Knee-Deep in the Dead (по колено в мертвецах). Попытаюсь определить основные использованные "строительные блоки" и принципы.
Этот эпизод почти полностью (кроме финального уровня) был создан Джоном Ромеро. Действие эпизода происходит в декорациях военной базы (UAC - Union Aerospace Corporation) на Фобосе спутнике Марса, атакованной адскими тварями. В конце Doomguy прыгает в портал, ведущий на Деймос.
Редакторы
Чтобы можно было исследовать строение уровней - надо их где-то открыть. Поэтому я озаботился поиском современного редактора уровней для первого и второго Doom.
Ultimate Doom Builder
Первое, что находишь - это UDB. Более-менее активно развивается, на словах даже поддерживает Linux (правда у меня падает с ошибкой при попытке открыть карту), написан на C# и жрет память как не в себя, но зато поддерживает все необходимые фишки и является полноценным редактором карт.
Последние версии можно скачать здесь, код можно посмотреть здесь.
Поскольку для Linux редактор работать отказался я поискал еще и нашел SLADE. Написан на С++, отлично работает под Linux. Но под windows в режиме редактора он очень тормозной. А под Linux почему-то не показывает флаги предметов (например флаги, отвечающие за появление предмета на разных уровнях сложности).
Если поискать руководства по созданию уровней для Doom, то Slade используется в основном для просмотра/редактирования содержимого WAD архивов.
Абстрактный дизайн уровней
Сразу следует заметить, что Ромеро в своих уровнях придерживался так называемого "абстрактного дизайна". Т.е. он не ставил перед собой цели создать правдоподобную военную базу на спутнике Марса. Поэтому на хаотично раскиданные боеприпасы, бассейны с кислотой и непонятные секреты внимания не обращаем. Это все декорации, главное чтобы хорошо игралось (в стиле "сюжет для игры так-же важен как и для порно фильма").
Правила Джона Ромеро
У Джона было несколько правил, которыми он руководствовался при создании данных уровней. Вот они:
- Всегда менять высоту пола, при смене его текстуры
- Использовать специальные пограничные текстуры между различными сегментами стены и дверей
- Всегда выравнивать текстуры
- Сознательно использовать контраст между темными и светлыми зонами, а также между узкими и свободными пространствами
- Убедиться, что игрок может добраться всюду, куда может посмотреть (возможно перевожу неправильно, но кажется Джон его нарушает несколько раз)
- Обязательно делать несколько секретов на каждом уровне
- Делать уровни так, чтобы игрок посещал одну и ту же зону несколько раз, что позволит лучше разобраться в пространстве уровня (Бэктрекинг осознанно?)
- Создавать запоминаемые ориентиры для облегчения навигации
Монстр в засаде / монстр бежит на звук
Есть еще один важный момент, связанный с тем, как работает ИИ в игре. Если у монстра не выставлен флажок "ambush" (засада) и звук выстрела может до него "добраться" (на пути нет непроходимых препятствий) - то услышавший звук монстр активируется и начинает поиски игрока.
Таким образом можно в пылу битвы получить выстрел в спину и обнаружить, что к тебе в тыл пришел целый вражеский отряд, т.к. услышал звуки выстрелов.
С другой стороны можно вбежать во, вроде бы, зачищенную комнату и получить пулю в затылок от зомби, который караулил в режиме засады и игнорировал всю перестрелку.
Паттерны / Шаблоны проектирования
Шаблон проектирования - это повторяемая конструкция, решающая определенную проблему. Выявление подобных шаблонов позволяет проще рассуждать о системе. Чем и займемся.
Комната с монстрами
Основной шаблон. Есть комната, в ней есть враги. Зачем переусложнять.
Если есть две смежных комнаты с монстрами, то монстров во второй комнате стоит поставить в режим засады, а то они сбегутся посмотреть, что происходит в первой комнате и во второй никого не останется. Либо
необходимо разделять комнаты дверью.
Ловушка
Ловушка позволяет застать игрока врасплох.
Принцип: Когда игрок встает в заданный сектор / пересекает определенную линию - ловушка срабатывает. Может открыться потайная дверь / опуститься стена, за которой находятся монстры.
В ловушке можно применять какой-либо объект-приманку, который и будет "заманивать" игрока. Но это не обязательно.
Альтернативный паттерн использования ловушек в первом эпизоде - вставить их посреди комнаты с монстрами, чтобы ловушка активировалась в процессе битвы.
В последующих эпизодах первого Doom применялись также вариации Ловушки с телепортированием монстров к игроку. Но в первом эпизоде такого нет.
Поскольку мы уже знаем про абстрактный дизайн уровней - можно не удивляться тому, что некоторые ловушки представляют собой целые блоки, поверх которых (в пространстве, спрятанном в потолке) находятся монстры.
Лабиринт
Как известно, разработчики Doom были заядлыми игроками в D&D [ссылка], и даже черпали оттуда часть своего вдохновения. А какое олдскульное D&D обойдется без лабиринтов?
В классическом понимании, лабиринт - место, специально спроектированное так, чтобы в нем было легко заблудиться. Вряд ли такой лабиринт полезно добавлять в игру.
Игровые лабиринты, с моей точки зрения, это скорее помещения с множеством узких изгибающихся коридоров с ответвлениями. Такой лабиринт не обязательно запутанный - он скорее всего пробегается в два счета, но вот если расставить за углами противников, ловушки, да еще и чуточку приглушить свет - начинается совсем другая игра.
Узкие коридоры и множество поворотов также позволяет применять в лабиринтах оружие ближнего боя. В doom это бензопила и кастет в режиме берсерка. Ни того ни другого нет в первом эпизоде первого doom, но упомянуть об этом стоит.
Ключи
Одним из новшеств Doom были разноцветные (синяя, красная, желтая) ключ-карты (или черепа на уровнях с "адовым" дизайном). Ключи открывают двери соответствующих цветов.
Таким образом ключи позволяют дизайнеру заблокировать часть уровня.
Кроме ключей у дизайнеров Doom есть возможность закрывать/открывать двери с помощью переключателей и триггеров, реагирующих на присутствие игрока. Но ключи выполняют эту роль гораздо лучше. При активации переключателя непонятно что он делает, если объект с которым он связан не находится в области видимости. Ключи лишены этого недостатка.
Пара размышлений по поводу ключей:
- Игрок должен сначала увидеть дверь, а затем найти ключ. По крайней мере такая ситуация должна быть наиболее вероятной. Если в большинстве случаев игрок сначала находит ключ, а затем дверь - то смысл в ключе пропадает.
- Если игрок нашел дверь, а потом нашел ключ, то ему нужно вернуться к двери, чтобы ее открыть. Потенциально это означает, что он будет возвращаться по пути, который уже зачистил - что не очень хорошо.
Если возвращаться недалеко - то не страшно, но если путь длинный - то игрок может заскучать.
Для этого на пути от ключа к двери расставлены ловушки, которые активируются по пути к ключу. Т.е. когда игрок берет ключ - на его обратном пути открываются двери, выпускающие монстров (обозначены сиреневыми прямоугольниками на картинке выше). Бежать назад будет уже не так скучно
Секреты
Секреты - довольно сомнительный, с моей точки зрения, элемент в Doom. Это опциональные секции карты. Их не только можно не посетить при прохождении - их сначала нужно найти.
Секреты, обычно, содержат оружие или мощный бонус. Таким образом знание секретов совершенно убивает баланс на карте. Единственный выход - пихать в секреты монстров. Но это делается не всегда.
Виды секретов:
1. Фальшивая стена (дверь, выглядящая как стена)
2. Секрет, активирующийся переключателем/триггером, который находится в другой области уровня и непонятно что переключает (в случае с триггером об этом и не узнаешь).
3. Секрет с временным лимитом. После активации нужно еще успеть воспользоваться секретом.
4. Секреты с прыжком с трамплина
Поскольку прыгать в doom нельзя - бортик высотой по колено является непреодолимой преградой. Но, если найти неподалеку возвышенность и хорошенько разогнаться - преграду можно и преодолеть.
5. Секрет "пробеги по лаве"
По лаве/кислоте обычно бегать не хочется - но иногда дизайнеры награждают за такие пробежки ништяками.
Итог
Ну вот и все основные строительные блоки первого эпизода. Можно еще порассуждать о расположении противников, но, кажется что в первом эпизоде с этим все достаточно просто. Доступны только импы, зомби и демоны. Кидаем всех вперемешку: зомби стоят подальше, демоны поближе.
Если я что-то пропустил - пишите в комментариях