Тема процедурной генерации хорошо знакома любителям компьютерных ролевых игр — в конце концов, жанр начал свой путь с так называемых «рогаликов», где генерируемые подземелья были одним из основных элементов игрового процесса. Процедурная генерация используется и в более «серьёзных» проектах при распределении сокровищ по сундукам, создания квестов, а иногда и сюжета.
Дизайн уровней — то ещё занятие. Когда вы бродите по Даунолу или разъезжаете по Либерти Сити, на вас влияет архитектура, расположение ходов, персонажей и сокровищ. Сделанные вручную уровни имеют преимущество благодаря вниманию и доводке многих людей-дизайнеров, а вот в процедурной генерации человеческая интуиция принесена в жертву бесконечным возможностям и непредсказуемости. Возникает естественный вопрос — а нельзя ли получить и то и другое? В этой статье пойдёт речь о том, как создавать программы для дизайна, которые могли бы могли бы работать в тех сложных и гибких рамках, которые каждый день используют живые дизайнеры.
Обратимся к статье Яна Хорсвилла II и Лифа Фогеда «Быстрое заселение уровня с ограничениями по играбельности». В ней описывается способ размещения объектов, таких как враги, предметы и сокровища на уровне при помощи процедур, использующих умное программирование и математические трюки чтобы обеспечить выполнение определённых правил. Правила могут быть довольно нечёткими, вроде «перед тем, как найти сокровище игрок должен сразиться как минимум с тремя монстрами», при этом уровни по прежнему задаются случайно и имеют непредсказуемую конфигурацию. Там используется несколько концепций, которые вам возможно не знакомы, но не стоит отступать — некоторые идеи там действительно великолепны.