Тема процедурной генерации хорошо знакома любителям компьютерных ролевых игр — в конце концов, жанр начал свой путь с так называемых «рогаликов», где генерируемые подземелья были одним из основных элементов игрового процесса. Процедурная генерация используется и в более «серьёзных» проектах при распределении сокровищ по сундукам, создания квестов, а иногда и сюжета.
Дизайн уровней — то ещё занятие. Когда вы бродите по Даунолу или разъезжаете по Либерти Сити, на вас влияет архитектура, расположение ходов, персонажей и сокровищ. Сделанные вручную уровни имеют преимущество благодаря вниманию и доводке многих людей-дизайнеров, а вот в процедурной генерации человеческая интуиция принесена в жертву бесконечным возможностям и непредсказуемости. Возникает естественный вопрос — а нельзя ли получить и то и другое? В этой статье пойдёт речь о том, как создавать программы для дизайна, которые могли бы могли бы работать в тех сложных и гибких рамках, которые каждый день используют живые дизайнеры.
Обратимся к статье Яна Хорсвилла II и Лифа Фогеда «Быстрое заселение уровня с ограничениями по играбельности». В ней описывается способ размещения объектов, таких как враги, предметы и сокровища на уровне при помощи процедур, использующих умное программирование и математические трюки чтобы обеспечить выполнение определённых правил. Правила могут быть довольно нечёткими, вроде «перед тем, как найти сокровище игрок должен сразиться как минимум с тремя монстрами», при этом уровни по прежнему задаются случайно и имеют непредсказуемую конфигурацию. Там используется несколько концепций, которые вам возможно не знакомы, но не стоит отступать — некоторые идеи там действительно великолепны.
Подобным образом можно генерировать и сюжеты, чтобы в них происходили нужным образом ключевые события, но большая часть истории складывалась случайно.
В культовой игре Blade Runner несколько сюжетных поворотов задавались рандомом. Могу сказать, что эта особенность хоть и вносила разнообразие в последующие прохождения, но мне не сильно нравилась, так как несколько убивала ощущение сопричастности происходящему. Как программа решила, тот персонаж и *spoiler*.
В остальном же ограниченная по условиям процедурная генерация вещь интересная и полезная, конечно.
Я тоже считаю, что для сюжета такой подходит использовать не стоит. Разве что для рогаликов, но тогда это вообще будет излишняя сложность, на мой взгляд.
А вообще, сама идея, к которой сводят генерацию подземелий, похожа на динамическое программирование или на задачи на графах, только с большим количеством параметров. Не сказал бы, что не_программистам это будет просто понять или выучить. Зато с их помощью автоматизировать процесс относительно просто. По крайней мере, это возможно.
Очень хорошая статься, мне всегда было интересно заглянуть "за кулисы". Но. Ну не люблю я игры в которых миры/подземелья создаются рандомно. Это ещё со времён Eye of the Beholder и Dungeon Master пошло. Более современный пример - Legend of Grimrock лишилась бы всего своего очарования, если бы её лабиринты генерировались случайным образом. При таком подходе интерес исследования неизвестных территорий (и атмосфера) исчезает и остаётся прокачка и если повезёт - сюжет
Отличный перевод, а вот описная метода Яна и Лифа довольно полезная для создания рогаликов, может кто нибуть русских начинаюших инди разрабов прислушается и выпустит рогалик для начала, там самым сделав первый шаг.