Блин, это же перевод.
А я уже хотел у автора спросить, почему запоминается глубина ходов и не используется, а вместо этого поиск решения запускается до тех пор, пока решение находится. Можно же просто у каждого найденного решения посмотреть, на каком ходу оно было найдено.
Вот смотрите, они запустили поиск с глубиной 30, и в какой-то момент нашли решение за 20 ходов. Можно же больше не тратить время на поиск решений за 20 ходов и больше, они уже не интересны. А динамически менять максимальную глубину поиска видимо сложно, проще перезапустить поиск.
Они другую задачу решают. Им не нужны все способы пройти уровень. Им достаточно знать, что такие способы вообще есть. Поэтому, выбирали глубину побольше, а потом решатель получился хорошим, и к нему прикрутили поиск минимального решения вот таким оригинальным способом.
Я писал игру с несколько похожей механикой. Полностью случайные уровни обычно получаются скучные. В итоге остановился на том варианте, когда уровень рисуется руками, а вот оптимальное прохождение к нему находится (относительно) оптимизированным перебором.
Моя философия лени («В любой ленивой ситуации использую эволюционный алгоритм») говорит мне:
-делаем генератор.
-как можно больше людей играет и отмечает — уровень непроходим, уровень проходим но простой/сложный/скучный/интересный…
-эти оценки и формируют отбор. Алгоритм формирует годный генератор, профит.
Как-то даже не думал о таком варианте, что можно лепить хаотичные уровни и давать их решать компьютеру с помощью простого перебора действий. Больше хотелось сделать сформированные наборы «задач» и как-то чередовать их между собой, чтобы компьютер изначально создавал уровни со знанием, для чего он это делает, какую цель преследует… Скажем, в платформере ставить блоки на определённом расстоянии для разных типов прыжков, ставить на них монстров в зависимости от сложности этапа, и всё такое.
Способ перебора ограничивает размер поля. Но можно сделать симбиоз: поделить карту на зоны, которые нужно проходить отдельно. Каждая такая зона будет соответствовать области, как в этой игре, каждую нужно будет решать отдельно, но вместе они будут составлять один большой уровень, так можно будет генерировать уровни просторнее и интереснее. Надо будет попробовать эту штуку :)
P.S.: Сорри, случайно под вашим постом написал, я хотел написать в отдельной ветке и на ваш пост не отвечал.
Процедурная генерация уровней для игр-головоломок