Reverse Design: Diablo 2. Как генерируются уровни в игре

Новая глава перевода книги Reverse Design: Diablo 2. В прошлых частях мы начали объяснение того, как в игре используется рандом и в этот раз мы продолжим эту тему, в подробностях разобрав процедуру генерации локаций в Diablo 2. Этот материал поможет читателям понять, почему все подземелья в игре выглядят и чувствуются по-разному, а также что делали разработчики, чтобы добиться такого эффекта.

Рандомизация с помощью колоды карт (Deck-of-Cards Randomness)

Следующие два типа рандома достаточно похожи, но все же между ними есть несколько важных отличий. Начнем мы с обсуждения того, что я называю deck-of-cards (DOC) случайностью. Практически все хоть раз в жизни встречались со стандартной колодой из 52-х карт, но если вам каким-то образом удалось этого избежать, то большая часть карточных игр работает по тем же принципам. Одной из наиболее важных особенностей 52-карточной колоды — да и любой другой колоды, используемой в играх — является то, что ее содержимое повторяется. В колоде 4 десятки, 4 семерки и так далее, поэтому у игрока есть шанс примерно 7,6% на то, что он вытянет карту определенного значения. Но количество повторений строго ограничено, поэтому если вы вытяните десятку треф, то шанс на то, что один из игроков сможет вытянуть еще одну десятку, немного уменьшится. Профессиональные картежники умеют просчитывать все эти вероятности в уме, увеличивая свои шансы на победу.

У рандомизации с помощью колоды карт есть еще одно достаточно важное качество. В зависимости от игры, в которую играют участники, колода перемешивается (рандомизируется) с различной частотой. В блекджеке, к примеру, иногда используется несколько колод, и профессиональные игроки должны всегда четко понимать, когда в игру вступает новая (случайная) колода, или когда колоды перемешиваются.

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

В Diablo 2 рандомизация с помощью колоды карт используется при генерации карт. В одной из прошлых глав мы уже говорили о том, что важные объекты на карте размещаются с помощью "случайности в заданных пределах", но большая часть работы по созданию локаций происходит при непосредственном участие DOC случайности. Сами карты, по словам дизайнера уровней Стефана Скандиззо, представляют из себе некие "пресеты". Если не вдаваться в подробности, то компьютер берет "карты" из колоды заранее определенных кусков уровня, а затем старается собрать их вместе. Мы куда подробнее рассмотрим процесс создания уровней с разрезе рандомизации с помощью колоды карт чуть ниже. Стоит также понимать, что большая часть того, о чем пойдет речь в данной главе мне поведал Скандиззо в рамках интервью, однако все термины, которые используются для определения рандома, уникальны для этой книги.


У колоды есть повторы

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


Колоду часто перемешивают (ре-рандомизируют)

Некоторые части карты(вроде стен, ограничивающих определенную область, которые можно увидеть на картинке ниже) набираются из колод куда меньшего размера, что, в свою очередь, означает, что они повторяются гораздо чаще. Особенно это становится заметно при рассмотрении границ открытых локаций. Поэтому колоды, отвечающие за эти участки "перемешиваются" заметно чаще.

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


Карты в колоде взаимодействуют друг с другом по-разному

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


Взглянем на карты

Как все-таки выглядит карта из колоды? Карты могут сильно различаться. Некоторые пресеты представляют собой всего несколько квадратных метров уровня с одной стороной, которая может быть соединена с другой картой из колоды — эти карты зачастую являются тупиками. Таких карт достаточно много и они могут повторяться. Другие карты представляют из себя огромные пространства, с несколькими ответвлениями. Такая карта зачастую одна на каждое подземелье и повторяется она очень редко.

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

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

Из-за всего вышеперечисленного, структура и ощущения от подземелий в Diablo 2 в основном зависят от тех карт(кусков уровня), из которых они составлялись, а не от каких-то особенностей алгоритмов генерации этих самых подземелий. Подземелья кажутся особенными именно из-за различных пресетов. Узкие, извилистые пресеты, вроде тех, что можно найти в Maggot Lair, создают ощущение клаустрофобии и сложности в определении своего местоположения(Скандиззо сказал, что провел очень много времени, работая над этим подземельем и был очень удивлен тем, что многим опытным игрокам оно пришлось не по душе). Контраст между большими комнатами и узкими переходами Durance of Hate заставляет игрока почувствовать, что он неожиданно оказался в ловушке. Многочисленные одинаковые развилки, вроде тех, которыми напичкан Underground Passage, создают ощущение того, что игрок блуждает по бесконечному лабиринту без выхода. Алгоритмы создания каждого подземелья и открытой локации немного различаются, что подтверждают слова Скандиззо и Бревика. Однако атмосфера игры создается в основном благодаря тем кускам, из которых состоит каждая конкретная локация.

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

Как только локация была полностью создана, игра начнет размещать врагов на этих "приемниках". У каждого пресета есть заранее определенная максимальная плотность врагов. Несмотря на то, что ни один из разработчиков, с которыми я общался, не смог припомнить точную формулу, судя по всему, плотность врагов зависит не только от количества этих монстров. У некоторых типов противников есть определенные размеры "отрядов" из которых выбирает игра. У этих отрядов есть определенный "вес", который зависит от количества и типа монстров. Игра размещает первую волну отрядов монстров по карте(отряды имеют различный размер). Потом в каждый пресет, максимальный "вес" которого еще не был достигнут, добавляются дополнительные отряды монстров, и это повторяется, пока не будет достигнуто максимальное количество монстров на уровне.

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

Количество и размер "приемников" на пресетах различаются. Одной из особенностей генерации карт, с которой наверняка знакомы опытные игроки, является то, что существуют определенные места, в которых с большой вероятностью появится либо особый сундук, либо особый монстр. Другими словами, есть некоторые пресеты карт, которые содержат заранее определенные пресеты сундуков или монстров. Лучшим примером этого являются сундуки возле маленького костра в Lower Kurast'e, на которые частенько совершают набеги охотники за предметами уровня "мастер".

Нужно понимать, что у процедурной генерации есть свои пределы как в технологическом, так и в артистическом смысле. Если игра слишком случайна, опытные игроки не получат никакого преимущества за счет того, что они смогли досконально разобраться в механиках. Если же игра полностью построена на четко определенных величинах, то игроки достаточно быстро смогут изучить ее и найти оптимальные решения всех задач, что сделает игру скучной. Постоянное взаимодействие между случайностью и расчетом - это именно то, что делает Diablo 2 такой интересной.

Итоги рандомизации с помощью колоды карт

  • Самой важной частью DOC является количество и разнообразие карт в колоде. Без огромного количества карт подземелья становятся очень однообразными.
  • Так же как и в стандартной карточной колоде с ее мастями в колоде генерации уровней есть схожие карты. В основном они применяются для того, чтобы создавать всевозможные сложные элементы ландшафта.
  • Несмотря на то, что сами карты добавляют генерации уровней определенную долю случайности. На это накладывается и второй слой случайности, связанный с расположенными на них местами появления монстров и сокровищ.
  • Карты достаются из колоды в случайном порядке, однако иногда у карт есть заранее определенные особенности вроде редких сундуков или монстров, что может помочь опытным игрокам.

Предыдущие части:

  1. Вступление.
  2. История жанра ролевых игр.
  3. Базовые характеристики.
  4. Элементальный урон и синергия.
  5. Обзор Амазонки.
  6. Обзор Некроманта.
  7. Обзор Паладина и Убийцы.
  8. Обзор Друида и Волшебницы.
  9. Обзор Варвара.
  10. Историческое наследие action-игр.
  11. Особенности движения персонажей в игре.
  12. Эффекты контроля.
  13. Подведение итогов экшн-механик и проблемы интерфейса.
  14. Реализация рандома в Diablo.
  15. Особенности генерации предметов.