Процедурная Генерация открыла огромные возможности для разработчиков игр. Но что даёт она игрокам, которым важнее получить яркие эмоции, чем бесчисленное разнообразие, созданное математическим алгоритмом?
Где начало истории процедурной генерации в хронологии компьютерных игр? Может быть, появление Minecraft? Создание целого мира от начала и до бесконечности по ходу движения персонажа. Или Diablo с подземельями, которые создавались заново при каждой новой игре? А может, это первая Civilization? Помните мигающую иконку повозки колонистов посреди темноты и полной процедурной непредсказуемости новой карты?
Хотя, постойте, разве одной из первых компьютерных игр не была та, мир которой целиком построен на процедурной генерации? Elite в 1984 году давала немыслимые возможности исследования огромной вселенной. Но ведь к тому моменту уже четыре года люди спускались в процедурно-генерируемые подземелья Rogue.
Пожалуй, процедурная генерация была с нами всегда. Просто мы могли об этом не подозревать. А она тем временем росла, крепла и распространялась настолько, что наступил момент, когда не замечать её стало невозможно. Поэтому пришлось отвечать на вопрос "Что лучше: рукотворное или процедурно-генерируемое?".
Cамый распространённый ответ звучит так: процедурная генерация лучше ручной работы тогда, когда для второй попросту не хватает рук. В остальном же принято считать, что ручная работа всегда лучше, потому что "наделяет результат душой". А процедурной генерации отводится роль аморфного бетона, который заполняет огромное пространство чем-то бездушным.
В этом споре сама технология всё так же находится в темноте. На свету наблюдатели разглядывают отдельные результаты в отрыве от задач и уровня конкретного исполнения. Но что это, если не концепция живущего в темноте монстра, которого можно вынудить делать нехитрые трюки?
Алгоритмы процедурной генерации — такая же ручная работа, как код игрового движка, геймдизайн или графическое исполнение. Сама мысль о том, что ручная работа всегда будет лучше, звучит довольно странно в среде компьютерных игр, осознанно ушедших от "ручных настолок" ради безупречных просчётов и отточенных алгоритмов, на поддержание которых человеческий мозг не способен.
В итоге, благодаря миллионам рукотворных алгоритмов, на свет появились миры, в которых нам не нужно плясать вокруг простейших формальностей. В которых сегодня с вами и вашими друзьями может случиться что угодно. Которые безграничны во многих отношениях.
В том, что процедурная генерация, как технология с огромным потенциалом, продолжит развиваться, нет никаких сомнений. Меня же интересует, чем эта технология может помочь жанру MMO, а в чём может оказаться ложным ориентиром или даже явной помехой.
Многие из тех, кто занимается процедурной генерацией, просят не наделять её магическими свойствами. Я, видимо, как раз тот невежда, который приходит в восторг от этой технологии и упрямо не хочет видеть за ней сухие алгоритмы, умноженные на коэффициент случайности.
Но разве в нашем реальном мире дела обстоят иначе? Все элементы природы — результат, по сути, той же процедурной генерации, который знать не знает о своей "красоте". Кто, если не наблюдатель, решает, что красиво, а что безобразно? Что захватывает дух, а что вызывает тоску и отсутствие интереса?
Любого, кто изучает основы дизайна, и от кого мы ждём той самой одухотворённой работы человеческого гения, знакомят с понятием "Золотое Сечение". Есть у этого термина и более старое название: "Божественная Пропорция". Всё дело в том, что изначально этот принцип был подсмотрен у природы, которая, как известно, подчиняется безупречным математическим алгоритмам.
Собственно, "реверс-инжинирингом" природных творений и занялся в средние века итальянский математик Леонардо Пизанский, известный нам под именем Фибоначчи.
Разумеется, мы, как ещё одна деталь природы, часто принимаем красоту подсознательно — симметрия, золотое сечение, равновесие. Всё это части математики, которые могут рассказать человеку о красоте намного больше, чем попытки просто наблюдать и пытаться понять.
Но кроме этого человеческий мозг обладает уникальной способностью поиска смысла, достраивания образов и даже создания метафор из того, что и не думало будоражить его воображение.
С другой стороны, несмотря на всю кажущуюся безграничность человеческой фантазии, наш мозг довольно сильно скован шаблонами собственного изготовления. Поэтому даже у очень творческих людей можно проследить повторение своих же приёмов, или заимствование чужих. И здесь случайные сочетания процедурной генерации могут стать неожиданным источником новых идей, уникальных находок.
Генератор ландшафта, уровней, целых поселений или даже планет каждый раз создаёт новое игровое окружение. Генератор квестов — новые задания для игроков. Генератор внешности — новых NPC. Генератор боевой экипировки — новые трофеи.
Другими словами, процедурная генерация создаёт контент и решает одну из ключевых проблем игрового дизайна: как предлагать людям достаточно разнообразное игровое содержимое со скоростью его потребления.
Процедурная генерация — это не цель. Она — средство. Средство решения совершенно конкретных проблем, которые стоят перед создателями игр. Но источник этих проблем не в играх, а в их потребителях. В живых людях. Мы и есть причина возникновения процедурной генерации.
"Хочу ещё"
Вы наверняка сталкивались с ситуацией, когда понравившаяся игра слишком быстро заканчивалась. Все рукотворные локации, подземелья, квесты, трофеи, на создание которых было потрачено невообразимое количество человекочасов вдруг превращаются в сравнительно небольшое число личных игровых часов. А хочется ещё, того же самого и побольше.
Но ощущения от перепрохождения точно такого же уже не будут приносить тех эмоций, что раньше. Другое дело, если игровое окружение будет отличаться. На этом принципе построена одна из первых компьютерных игр.
Спустя 17 лет после выхода Rogue появится Diablo — куда более успешный в коммерческом плане игровой проект, который заново познакомит со знаменитой концепцией "бесконечного переигрывания" многих из тех, кто не застал расцвет интереса к этому виду игрового развлечения в начале восьмидесятых годов прошлого века.
Сегодня "roguelike-игр" великое множество. Они развиваются и пользуются большой популярностью. При этом ключевой подход к созданию интереса вокруг переигрывания за счёт генерации совершенно новых планов подземелья остаётся неизменным с 1980 года. А вот алгоритмы процедурной генерации постоянно совершенствуются.
"Хочу больше"
Я — живой человек, который постоянно сравнивает свой игровой опыт с реальным. Я готов мириться с условностями, но только до тех пор, пока они мне помогают увеличить плотность интересных впечатлений. Если же мне хочется ощутить бескрайние просторы, нужно придумать технологию, благодаря которой у меня появится возможность отправиться в любом направлении и найти там что-то интересное.
Долгое время в компьютерных играх для создания просторов использовалась пустота. Космос, море, что угодно, что выглядит естественно, но при этом предельно однообразно. И где-то за этой пустотой может быть то, что представляет интерес. Эпоха полумер закончилась с выходом No Man's Sky. Напомню главный посыл этого проекта:
Каждый атом вселенной...
Каждый лист...
Каждый камень...
Каждое дерево...
Каждое здание...
Каждая птица...
Каждая рыба...
Каждый океан...
Каждое облако...
Каждая планета...
Каждая звезда...
Каждая галактика...
...процедурно сгенерированы.
Авторы No Man's Sky представили игрокам фактически бесконечное пространство для путешествий, которое таким и остаётся, спустя много лет после выхода. Количество планет здесь превышает восемнадцать квинтиллионов (18,446,744,073,709,551,616). Даже если допустить, что в No Man's Sky играли бы все восемь миллиардов жителей Земли, на каждого в этой вселенной всё равно приходилось бы в среднем больше двух миллиардов неисследованных планет.
И хотя к разнообразию возможных сочетаний у пресытившихся путешественников есть претензии, чисто количественный предел в компьютерных играх, где больше не существует практического ограничения на бесконечность при детализации до травинок, листочков и камней, вселенная No Man's Sky с успехом преодолела.
Как и в случае с Elite образца 1984 года (8 бит), No Man's Sky использовала предельное значение переменной, существующей в памяти компьютера как отдельный объект, для текущей компьютерной архитекуры (64 бита), чтобы создать вселенную из одного начального значения.
Когда я замышлял этот материал, я думал, что, попробовав самостоятельно разобраться, смогу рассказать вам о закулисье процедурной генерации хотя бы в общих чертах. Как именно и на каких принципах всё это работает. Как же я был наивен!
Чтобы рассказать о самых основах сегодняшнего состояния процедурной генерации — Вихре Мерсенна, Шуме Перлина, Диаграммах Вороного, Системах Линденмайера, использовании графов и клеточных автоматов — понадобился бы минимум один лонгрид по каждому из только что промелькнувших мимо вас понятий.
Но, справедливости ради, с точки зрения игрока, все эти алгоритмы — то, чем он совершенно не управляет и что выбрать не может. Кроме зерна.
Зерно (Seed) — это ДНК процедурной генерации. Поэтому, если у игроков есть возможность узнавать код зерна и передавать его, они без труда могут делиться им и выращивать клонов. Клон растёт из зерна, повинуясь чёткому алгоритму, заданному проектировщиками.
Так, к примеру, обеспечивается сетевая игра в No Man's Sky или Elite: Dangerous. Фактически, каждый игрок "выращивает" клон заданной вселенной на собственном компьютере, получая в качестве одной и той же отправной точки идентичное "зерно". По сети между игроками передаются не данные обо всём игровом мире, а лишь данные об изменениях по отношению к изначальному состоянию.
Просто, остроумно, но главное — это единственная возможность создать действительно огромный и разнообразный мир. Если бы он был создан в ручном режиме в виде классических локаций, а не последовательности развёртывания из зерна по заданным алгоритмам, у вас бы просто не хватило места на компьютере даже для крохотной его части. Не говоря уже о трудозатратах создателей таких локаций, которые никто не может себе позволить.
Впрочем, процедурная генерация необязательно должна создавать нечто огромное. Она может сосредоточиться на разнообразии в виде переопределения одного и того же: достаточно подставлять разные значения зерна. В итоге мы получаем случайные подземелья в Diablo или современных "рогаликах", случайные карты в Civilization, случайные миры в Minecraft, Eco, Rimworld или Oxygen Not Included.
И хотя нам проще всего наглядно представить процедурную генерацию в виде рождения нового ландшафта, она может создавать игровой контент в намного более широком смысле: задания, экипировка, архитектура, неигровые персонажи, истории. И всё из зерна. Будет ли это интересно? Зависит от реализации.
У любого процедурного генератора есть две базовые степени свободы. Первая — сложность алгоритма генерации. Её можно назвать "свободой в глубину". Вторая — разнообразие результата. Или "свобода в ширину".
В глубину генератор расширяется через изменение его кода. Это неизбежно приводит к полному изменению результата генерации даже при одном и том же зерне на версиях до усложнения и после.
В ширину генератор растёт через добавление новых элементов. Правда, и в этом случае все прежние сочетания обнуляются, ведь система должна теперь выбирать из большего количества вариантов и создавать новые сочетания.
Скажем, когда в No Man's Sky добавляют всего один новый цвет травы, трава на всех планетах обязана переопределиться. Вы тщательно выбирали место для жизни по сочетанию цвета неба, воды, поверхности и листвы деревьев, но достаточно было бросить в генератор несколько новых вариантов, и вот вы уже видите через иллюминатор своей базы совсем другую картину.
Жизнь внутри процедурного генаратора непростая и очень непостоянная. Во всяком случае, пока. Хочется надеяться, что это ещё одна область будущего развития технологии: возможность менять алгоритмы генератора вглубь и вширь без полного переопределения пространства.
Я люблю процедурную генерацию примерно так же, как сами компьютерные игры. Для меня она не просто ещё один подход или технология. Не метод экономии усилий разработчиков. Она суть того, что я ценю в играх — моделирование.
Я верю в то, что процедурная генерация будет развиваться, и с каждым годом мы будем видеть новые достижения в этом важном направлении настоящего создания открытых виртуальных миров, а не сцен, декораций, уровней.
Здесь снова можно вернуться к противопоставлению рукотворного и автоматически сгенерированного. Позвольте я приведу вам всего один пример технологии, основанной не на фантазиях, а на знаниях.
Можно смело утверждать, что, даже создавая рукотворные локации сегодня, художники в большинстве случаев используют готовые модели растений, созданые на основе знаний и тех же L-cистем, а также кисти, использующие, как минимум, Шум Перлина для реалистичного и небанального расположения объектов друг относительно друга.
Но представьте, что в вашем распоряжении оказывается мир, в котором с математической точностью просчитано появление и взаимодействие всего игрового окружения.
Возможно, кого-то вдохновляет тот факт, что какой-то художник подготовил для него игровую локацию, всё продумал и разложил. Меня же, напротив, невероятно вдохновляет то, что я могу быть реальным первооткрывателем какого-то места, созданного безупречными алгоритмами, как тот, кто первым из людей увидел Большой Каньон или водопад Виктория.
За конечный результат в процедурной генерации отвечает конкретный алгоритм. Как любая хорошая работа, создание такого алгоритма — дело непростое, требующее больших затрат и ресурсов. Идти на такие затраты нужно только в том случае, если они действительно необходимы.
Пока в компьютерных играх наметились два магистральных направления процедурной генерации: создание невероятно больших пространств, которые другим способом не создать, и обеспечивание "реиграбельности" там, где механики остаются прежними, но "перемешивание карт" рождает новый интерес у игрока.
Но то, что кажется идеально подходящим компьютерным играм в целом, может создавать непредсказуемые искажения в MMO, где взаимодействие игрока с самой игрой уступает место взаимодействию с другими людьми при помощи игры.
Может ли процедурная генерация помочь раскрыть главный принцип MMO, как пространства и набора механик для взаимодействия людей и развития отношений между ними? Возможно. Может ли помешать? Иногда, да.
Огромная вселенная No Man's Sky показала, что людям здесь проще потеряться, чем встретиться. Да и смысла особого встречаться при таком подходе к организации игрового пространства нет. Безграничные просторы неисследованных территорий будят в людях азарт первоткрывателя и стимулируют постоянно двигаться туда, где нет конкурентов.
Остаётся вариант "перемешивания карт" ради увеличения интересности переигрывания, но и он, скорее, приводит нас вместо длительного развития мира и отношений в нём к не самой желательной цикличности.
Формально MMO не обязана жить вечно. Всё, что она обещает: мультиплеер, массовость и онлайн. Никто ведь не запрещает организовать всё это в рамках повторяющихся циклов. Мало того, везде, где в игровой процесс заложено преображение мира, наступает момент, когда хочется увидеть новый мир, девственно чистый и свободный от многодневных, многомесячных и уж тем более, если так далеко зашло, многолетних экспериментов игроков. Снова пуститься в погоню за самым лучшим местом, начать обживаться и почувствовать себя молодым поселенцем, полным новых планов и амбиций.
В конце концов, просто несправедливо по отношению к тем, кто пришёл в такой мир не с самого начала, лишать их уникального опыта, который имели первые жители.
Разработчики не против. Тем более, что, возможно, к этому моменту у них готова новая версия собственного процедурного генератора, который на этот раз сделает мир ещё лучше прежнего. Здесь обе стороны не прочь поддаться искушению начать с чистого листа.
Скорее всего, подобные MMO-миры сформируют какое-то отдельное направление. Возможность существенно преображать игровое пространство, кажется, не выживет без возможности стереть всё с доски и начать заново. Как процесс рисования не может выжить без чистого листа.
Это вполне естественный компромисс. Его, к тому же, действительно здорово украшает процедурная генерация, предлагая каждый раз новый мир, который, в отличие от чистого листа, сам по себе имеет ценность и красоту.
Но стоит учитывать и негативные последствия такого подхода, которые лежат в основном в социальной плоскости. В такой среде, по совершенно естественным причинам, с трудом формируются долгосрочные связи. Осознание того, что всё это ненадолго, накладывает явный отпечаток на человеческие отношения.
Впрочем, это не значит, что и в таком направлении нет смысла искать более изящных решений.
Если вернуться к MMO-мирам, которые собираются жить вечно, перед ними всегда существовала проблема удержания внимания вокруг неизбежно повторяющихся действий.
В MMO нас, безусловно, удерживают люди. Они же увеличивают интерес и непредсказуемость. Но что насчёт игры? Мы же все здесь собрались не просто так. Если сам по себе игровой процесс всем наскучил, рано или поздно люди просто разбегутся.
Кажется, что вот оно — идеальное место для процедурной генерации.
MMO-проектам в жанре "парк аттракционов" с этим намного проще. WoW в следующем дополнении Shadowlands берёт процедурную генерацию на вооружение в полной мере для нового вида подземелий. Если задуматься, нам предлагают поиграть в Diablo, которая и была "меняющимся подземельем в жанре roguelike", но теперь появится внутри World of Warcraft.
Кажется, что куда сложнее такую изменчивость вплести в структуру цельного открытого мира, доступного всем его жителям. Впрочем, почему бы не представить подобные подземелья (или башни) в открытом мире, меняющие свою структуру раз в неделю, и предлагающие приключенцам совершенно новое пространство для исследования? Почему в целом не начать манипулировать общим игровым пространством, постоянно освежая картину?
Пример добавления не только особого пространства с меняющимися связями, но и постоянно изменяющихся переходов между известными локациями в EVE Online, показал потенциал того, каким динамичным может становиться, на первый взгляд, статичное пространство. Сколько новых игровых ситуаций может создавать такая механика. А главное — какой потенциал для исcледования рождает подобное "перемешивание карт" без необходимости убегать от всех в неизведанные земли.
При создании Ultima Online авторы упёрлись в физическое ограничение вместимости серверов. Чтобы объяснить, почему игроки находятся в, казалось бы, идентичных мирах, но физически остаются изолированными в рамках серверов, разработчикам пришлось придумать легенду о расколовшемся мире. Так родилось понятие "осколки" (shards).
Сегодня понятие "шард" привычно любому игроку в MMO, как и тот факт, что это копии одного и того же мира, населённые разными сообществами. Всё равно что параллельные миры со своей альтернативной историей и населением.
Это интересный подход. Но сам факт абсолютной идентичности шардов никогда не подвергался сомнению. Понятно ведь, что никто в здравом уме не будет создавать отдельные локации для каждого шарда. Никто, кроме процедурной генерации.
Идея "гордости", как фактора привязанности к конкретному серверу и сообществу — интересная тема, достойная развития в тех MMO, которые вынужденно или намеренно распределяют игроков по шардам.
Известно, что игроков в MMO во многом удерживают человеческие связи. И дело здесь не в каком-то связывании по рукам и ногам, чтобы не убежал, а в том, что именно человеческие связи питают ежедневную игру в MMO. Без них, без развития отношений, без совместных переживаний и достижений, это будет просто ещё одна компьютерная игра с ограниченным сроком годности. Даже если сдобрить контент активным перемешиванием при помощи процедурной генерации.
MMO наполняют игроки и постепенно делают её своим домом. Человек становится свидетелем конкретных событий, общей истории шарда, развивающихся внутри социальных отношений. Это роднит его с конкретным миром. Достаточно прийти в другой, и вы легко почувствуете себя чужаком, не понимающим контекста многих событий, и не чувствующим никакой привязанности к этому конкретному миру, хотя он так похож на ваш.
Но почему бы не сделать ваш шард ещё и не похожим на другие? Представьте себе мир Lineage II, в котором привычные территории Глудиo, Диона, Гирана, Орена, Адена, Руны и других феодов процедурно сгенерированы. Элементы архитектуры, элементы природы и даже монстров одинаковые, но собираются в общее целое по-разному.
Больше нигде не будет такой полянки, такой излучины реки, такой горной гряды, такого плана поселения, таких монстров. Добавление такой персонификации вполне могло бы сделать каждый игровой шард одной и той же игры местом особенным и незабываемым. Уникальным домом для игроков.
Многие MMO сложно представить себе без толп монстров. Да и стоит ли отказываться от них, как от угрозы, объединяющей игроков вместе? Кажется, главная их проблема — предсказуемость. Чем больше люди живут в конкретном мире, тем больше адаптируются к угрозам. Но почему угроза не может адаптироваться к людям?
Что если генератор монстров будет анализировать поведение игроков и их стратегию? Как насчёт генератора на базе генетических алгоритмов? Учёт статистики прошлых поколений и выбор оптимального набора монстров для увеличения уровня сложности. Такой алгоритм мог бы запоминать множество исходов предыдущих боёв. На основании этих данных генератор мог бы выводить новый геном, намеренно скрещивая только удачные поколения, показавшие хорошие результаты в противостоянии с игроками.
Главная опасность при таком подходе — слишком явное подстраивание под силы конкретной группы игроков. Это было бы большой ошибкой, потому что означало бы, что приём в группу новых людей ведёт к автоматическму увеличению сложности. Но если такими алгоритмами будут обладать целые локации, представляя собой экосистему, начнут происходить ровно противоположные, позитивные, процессы — чем больше людей будет в локации или регионе, тем важнее им станет объединяться в группы. Потому что на смену тем монстрам, с которыми они справлялись ещё пару дней назад, придут другие, с которыми сражаться значительно тяжелее.
Для такого алгоритма может быть верно и обратное — чем меньше опасности со стороны игроков возникает, тем более простыми и расслабленными постепенно становятся обитатели локации. Фактически, мы получаем процедурный генератор с обратной связью.
За последние несколько лет процедурная генерация показала впечатляющие результаты в компьютерных играх. Понятно, что её будут активно использовать и развивать. Как нет сомнений и в том, что она продолжит делить игроков на своих сторонников и противников.
Бесспорно то, что генерируемый контент создаётся со скоростью, которую живым авторам никак не достичь. Сейчас к скорости прибавилось ещё и качество результатов на выходе. В каком-то смысле ситуация повторяет замену живых "алгоритмизаторов" настольных игр компьютерными программами: от "графики" из ASCII-символов в Rogue до бесконечных детализированных планет No Man's Sky. Только теперь речь идёт о создании контента, который раньше полностью вели за ручку авторы.
Да, в этой технологии легко увидеть просто высокоинтеллектуальный шум. Мало того, нет причин считать, что это действительно не просто шум, в котором мы пытаемся разглядеть какой-то смысл. В конечном итоге, всё зависит от конкретного алгоритма и его целей. Именно цели в контексте MMO и определяют реальную ценность применения процедурной генерации здесь.
Я смотрю в будущее с оптимизмом. Но и с некоторой опаской, при всей искренней любви к этой технологии.
Потенциальный конфликт я вижу в наметившемся разночтении термина "контент", за который и отвечает процедурная генерация. С моей точки зрения, основной контент в MMO должен возникать при взаимодействии людей, в силу развития их отношений. Если этого в MMO не происходит, что-то пошло не так.
Авторы могут сделать бесконечные процедурные квесты, бесконечные процедурные карты, процедурных монстров, экипировку, поселения, NPC. Дать возможность сколько угодно начинать сначала. Но что будет отличать такую MMO от одиночной игры? Процедурная генерация может развлекать игрока очень долго. Вот только всё это время, возможно, игрок будет занят диалогом с игрой.
Реальным будущим процедурной генерации в MMO, по-моему, будет осознанная попытка при помощи этой технологии помочь диалогу между игроками. Сделать его более интересным, разнообразным, долгосрочным, глубоким. И в этом смысле у процедурной генерации, как у технологии, все козыри на руках. Но тасуют и сдают карты всё равно живые люди.
Автор
Редактор
Консультант
Текст специально создан на отдельной странице для удобства чтения и эффекта погружения. Будет здорово, если вы оцените его в рамках нашего проекта и поучаствуете там в обсуждении.