Интервью Лаша Лагидзе - Генератор случайных карт в Age of Wonders III
Age of Wonders III Генератор случайных карт
ЖУРНАЛ РАЗРАБОТЧИКОВ: ЗАВОЕВАНИЕ БЕСЧИСЛЕННЫХ МИРОВ В ГСК
Несмотря на всю эту суматоху, связанную с выпуском бета-версии, мы нашли немного времени, чтобы подготовить этот дневник разработчиков. Один из инструментов, который мы дорабатываем на этой стадии – генератор случайных карт (ГСК). В этом дневнике программист Лаша Лагидзе расскажет вам, как ведется работа над ГСК, и какими принципами мы руководствовались при его создании.
Интерфейс с настройками для быстрого начала игры
Наши основные цели при создании ГСКПривет! Генерация случайных карт всегда была одной из тех функций, которые очень хотели видеть в игре игроки, но в серии Age of Wonders ГСК появился только после выхода отдельного дополнения Shadow Magic. В случае с Age of Wonders III мы хотели добавить ГСК, пока игра еще находится на стадии разработки, чтобы учитывать процесс генерации случайных карт при создании игры и уделить ему достаточное количество времени. На написание ГСК ушло с перерывами целых 18 месяцев!
Вот задачи, которым мы ставили перед собой при его создании:
• Дать вам почувствовать себя настоящими исследователями и завоевателями различных неизведанных миров; как в режиме одиночной, так и в режиме многопользовательской игры.
• Обеспечить поддержку многочисленных карт различных типов; карт с крупными континентами, с островами, карт подземелий и т.д. В предыдущей части игры вы в какой-то степени могли задать тип карты при генерации нескольких уровней. А теперь мы хотим добиться еще большего разнообразия.
• Хорошая насыщенность и баланс; т.е. позаботиться о том, чтобы рядом со стартовой позицией игроков не генерировались враждебные строения высоких уровней, например "Пик драконов" из которого драконы совершали бы набеги на игрока.
• Поддержка случайно выбранных игроков под управлением ИИ, чтобы вы не знали заранее, с кем вам придется столкнуться.
• Возможность в режиме быстрого старта изменять некоторые основные настройки, например, размер карты, количество игроков и силу магии.
• Дополнительные настройки с фильтрами, позволяющие опытным игрокам регулировать мельчайшие детали, например, плотность растительности, исключение определенной расы и насыщенность карты.
• И последнее, но от этого не менее важное, карта должна выглядеть естественно, и все объекты вписываться в обстановку. Реки должны впадать в моря и т.д. То есть, карты не должны отличаться от карт, созданных вручную.
Стартовая позиция для игрока класса «Верховный друид», сгенерированная ГСК.
Процесс генерацииЦентральное место в процессе генерации занимает инструмент, который позволяет нам определить типы генерации. Каждый тип генерации отвечает за генерирование части мира и должен соответствовать специальному набору правил генерации, которые созданы нами. Например, вот некоторые правила для типа генерации надводного сооружения "Алтарь влюбчивой русалки":
· Должен всегда быть сгенерирован на воде.
· Не должен быть сгенерирован слишком близко к берегам, если нет лучшего места.
· Не должен быть сгенерирован рядом с другими алтарями того же типа, если нет лучшего места.
· Никогда не должен находиться ближе, чем в 10-ти клетках от стартовой позиции игрока.
· Никогда не должен находиться ближе, чем в 6-ти клетках от границ карты.
После создания правил, мы должны убедиться в том, что в границах правил осталось достаточно свободы для элемента случайности. Это важно, так как в противном случае карты станут слишком предсказуемыми! Но элемент случайности не должен быть слишком велик, или это будет несправедливо. Тонкая настройка этих значений является чрезвычайно важной для нахождения верного баланса между справедливостью и случайностью. Когда настройка типа генерации была закончена, мы добавили все это к группе генерации. На данный момент существуют группы генерации для всех типов карт, а именно суши, материков и островов. И еще есть отдельная группа генерации для подземного мира. Любая из этих групп может быть отправлена в генератор, и генератор вернет случайно сгенерированную карту, по очереди обработав каждый из типов в группе.
Интерфейс одной из таблиц с дополнительными настройками
У нас есть много типов генерации, и у каждого типа свой собственный особый способ изменять мир. Вот наиболее важные из них:- Тип генерации объектов: может генерировать объекты, такие как строения, подбираемые предметы, армии и объекты украшения.
- Тип генерации зон: может генерировать тип заданного рельефа и/или климатические зоны.
- Тип генерации континентов: то же самое, что и тип генерации зон, но в нем уделено больше внимания приданию формы континентам и работе с картами разных масштабов.
- Пакетный тип генерации: тип генерации, который может включать в себя подгруппу типов генерации. Это очень эффективный инструмент. Попробуйте сами представить себе его возможности.
- Тип генерации дорог: может создавать путь от одного объекта к другому. Этот тип можно использовать для создания дорог или просто проходов между горами.
- Тип генерации позиций игроков: отвечает за определение стартовых позиций игроков, заботясь о том, чтобы все были в равном положении.
- Тип генерации рек: отвечает за генерацию случайных рек (Также может использоваться для создания рек лавы!).
- Тип соединения слоев: Следит за правильным расположением таких объектов, как, например, входы/выходы из пещер. Это позволяет подразделениям спускаться с поверхности земли в подземный мир.
Стартовая позиция для игрока класса «Верховный друид», сгенерированная ГСК.
ПЕРВЫЙ ОПЫТНЫЙ ОБРАЗЕЦМы хотели получать честно сгенерированные карты. Но этот метод генерации был для нас совершенно новым: мы не смогли найти еще одну стратегическую игру, в которой бы использовался аналогичный подход. Будет ли это вообще работать? У меня было чувство, что будет, но гарантий не было никаких. Самая первая версия ГСК (первый опытный образец) была слишком сложной и при работе с ней часто возникали проблемы. В какой-то момент я решил переписать ее, сохранив удачные куски. В результате было создано новое экспериментальное приложение (2D), которое можно увидеть выше на скриншоте. В левой панели находятся объекты, обеспечивающие ресурсами, такие как типы генерации. В данный момент выбран тип генерации [Mountains] (горы), правила для которого могут быть сконфигурированы в средней панели. Чтобы объяснить все параметры в центральной панели, мне пришлось бы написать целую книгу, поэтому, я опущу объяснения. Справа находится случайно сгенерированный уровень на основе заданных мною параметров. Короче говоря, это экспериментальное приложение позволило мне быстрее осуществлять тестирование; упростился обзор карты и, что самое главное, мне больше не нужно было ждать, пока запустится игра (на что уходило драгоценное время). Когда я почувствовал, что генератор достаточно стабилен, я преобразовал весь код в кодовую базу Age of Wonders III. И только после этого другие разработчики также смогли генерировать случайные карты.
СЛУЧАЙНАЯ КАРТА В ИГРЕ
Вот здесь некоторые результаты. Как вы видите, география достаточно разнообразна. Сейчас мы работаем над настройкой результатов и добавляем типы, украшающие карту и размещающие объекты бутафории (например, цветы и бабочки на лесных лужайках).
Карта в виде сплошной суши. Обратите внимание, как реки и озера дробят мир.
Карта в стиле континента. У всех игроков примерно равные возможности для экспансии.
Подземный мир. Обратите внимания на реки воды и лавы.
Карта с островами. В начале игры у всех игроков уже построен порт. На этой карте мореходство приобретает первостепенное значение.
Еще один игровой скриншот. Обратите внимание на скопление ресурсов и на город в узком бутылочном горле. Это зона повышенного стратегического значения.Лаша Лагидзе
Начали утекать видео с беты игры.