Процедурный генератор стадий и помещений

Как и планировал, делюсь информацией о ходе развития проекта. И первым на очереди: Процедурное Моделирование. Это одна из частей новой версии трехмерного редактора моделей (Dreams 3D). Процедурное создание стадий и помещений, будоражит сердца разработчиков уже несколько десятилетий. Еще во времена первого Doom были попытки создания автоматизированных средств рисующих карты. Но успеха добиться на этом пути очень сложно. Есть множество программ которые комбинируют из блоков стадии, но их дизайн весьма прост, привычен и повторяется. Например серия игр Quake и Doom подарила своим поклонникам новый мир, где дизайн на столько необычный. Пропитан духом фантастики, мистики, где за каждым углом таится опасность. Но все карты в этих играх нарисованы людьми. И вот рассмотрим как это всё происходит.

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

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

Этапы процедурного моделирования:

  • Создание прототипа стадии в виде набора связей
  • Создание комнат, коридоров, переходов, лестниц
  • Добавление детализации в комнатах
  • Добавление отдельных крупных предметов (различные трубы, резервуары, двери, генераторы, турбины)
  • Добавление мелких предметов (коробки, консоли, мониторы, предметы быта)
  • Расстановка противников и игроков
  • Расстановка оружия, брони, аптечек и других элементов необходимых для геймплея, согласно требуемым условиям

И так, начнем, создается прототип будущей стадии, обычно это приблизительный набросок на котором указывается что и где ожидается:

Он создается автоматически и весьма быстро, например если нам требуется 10 тыс комнат ждать придется всего ~2 секунды (на Intel Core i7-4930K). Это самый быстрый и легкий этап.

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

И вот стадии уже начинают приобретать, присущий только им стиль. Он будет прослеживаться во всей архитектуре данной карты.

Следующие проходы увеличивают число объектов и придают всей стадии более уникальный вид:

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

Последним этапом является расстановка врагов, предметов, источников освещения, задание текстур. Подробности будут в следующих статьях.

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

С каждым днем мы всё ближе.

2 комментария

  • Владимир

    Классно. я так думаю страниц двести потребуется что бы раскрыть тему

  • Ждем следующих выпусков.