О процедурной генерации мира в «олдскульной» ролевой игре Knights of Frontier Valley

О процедурной генерации мира в «олдскульной» ролевой игре Knights of Frontier Valley.

Разработчик издаваемой MicroProse Software и «вдохновлённой золотым веком жанра 80–90-х годов» ролевой игры Knights of Frontier Valley поделился подробностями процедурной генерации игрового мира. Спойлер: генерируется не всё, часть наполнения создаётся вручную.

Сегодня поговорим о картах. Карты — удивительная вещь. Они могут быть великолепно оформленными и вдохновляющими, заставляющими грезить о далёких местах и неизведанных территориях. Здесь могут водиться тигры.

Но прежде чем мы погрузимся в тему создания карт для Knights of Frontier Valley, я хотел бы рассказать, как проходит тестирование вышедшей неделю назад версии Alpha 3.fun.

Количество отзывов просто невероятно. Я читаю комментарии, стараясь оперативно решать проблемы — и поразительно, насколько игра улучшилась всего за несколько дней. Разумеется, в первую очередь я исправил ошибки. До выхода Alpha 3.fun игра казалась стабильной, но у игроков особый талант находить ошибки. Многие обнаружены альфа-тестером Эриком Хенселем — его вклад отмечу особо. С выхода Alpha 3.fun исправлено 64 ошибки, ещё несколько сейчас изучаются. Если кому-то интересно — вот подробный список изменений.

На втором месте — улучшения баланса и удобства игры. Некоторые противники теперь проще, кровотечения также ослаблены — но это далеко не всё. Отныне игра поддерживает дисплеи с отличным от 16:9 соотношением сторон, которые, похоже, куда более распространены, чем мне представлялось (или чем показывает опрос оборудования Steam). Появился новый индикатор при перемещении между городскими кварталами, который лучше отображает направление. Впереди ещё много работы — в основном, касающейся объяснения не встречавшихся в других играх механик.

[Knights of Frontier Valley] На скриншоте: Перемещение по городским кварталам.
Простенький интерфейс делает перемещение между кварталами гораздо понятнее.

Но что меня действительно поразило — альфа-тестировщику ChavaiotH удалось заставить игру плавно работать на Mac, в данном случае на Apple Silicon. У нас появился первый моддер! Я удивлён и обрадован, ведь игра основана на скомпилированных под Windows библиотеках. Возможно, версия для Mac ближе, чем ожидалось. ChavaiotH также поддерживает меня на Patreon, за что я ему премного благодарен.

Тестирование продолжится ещё неделю — затем, после короткого перерыва, я сразу же приступлю к следующей цели: созданию публичной демо-версии. На самом деле, я уже несколько дней работаю над демкой параллельно с исправлением ошибок — сюжет демо-квеста уже готов, осталось добавить новую графику.

А теперь давайте о картах!

Карты

В Knights of Frontier Valley карты мира, городов, подземелий, зданий и дикой местности имеют собственную логику и создаются по-разному, поэтому я кратко расскажу обо всех.

Карта мира

Мир Knights of Frontier Valley довольно большой — однажды я подсчитал, что его площадь составляет около 138 000 квадратных километров, примерно как территория Греции. Путешествовать по нему пешком или даже на лошади весьма долго. Добираться из одного места в другое несколько дней мало кому понравится, поэтому время и перемещение на карте мира заметно ускорены. Поскольку её единственная цель — упростить передвижение, я часто называю её «картой путешествий». Идея в том, чтобы игроки могли заблудиться в дикой местности, если сойдут с дороги.

Карта путешествий визуализируется довольно абстрактно. Она показывает луга, леса, холмы, горы, города, подземелья и другие достопримечательности, но не особо детализированно (так и задумано). Вы можете повстречать других персонажей и заговорить с ними, но настоящие исследования или сложные взаимодействия вроде сражений происходят на подробных картах местности, о которых ниже. Карта путешествий — единственная построенная на гексагональной сетке — в картах местности используется квадратная. Это решение было принято с оглядкой на «Острова Ужаса» (The Isle of Dread), один из моих любимых настольных модулей D&D.

[Knights of Frontier Valley] На скриншоте: Обзор с холма на карте мира.
С вершин холмов на карте путешествий видимость лучше.

Карта мира генерируется процедурно, а значит в каждой игре она разная. Но что на самом деле означает «процедурно»? Во-первых, это не значит «случайно». Полностью случайная карта непредсказуема... по воле случая она может выглядеть логично, но чаще — нет. «Процедурно» означает, что карта создаётся автоматически, но вместо просто случайного размещения объектов код конструктора мира следует набору обеспечивающих некоторую целостность и логичность правил. Эти правила включают:

Выбор местности

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

Точки интереса

Точками интереса я называю поселения, подземелья, придорожные таверны, фермы, ветряные мельницы и многое другое. В Knights of Frontier Valley конструктор мира следит, чтобы поселения располагались не слишком близко, но и не слишком далеко, и чтобы их можно было соединить дорогами (то есть не окружать поселения непроходимыми горами, например). Подземелья не должны располагаться у городских окраин, а жилища враждующих фракций следует разнести на определённое расстояние. И таких правил довольно много.

Пути (дороги и реки)

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

Неигровые персонажи

Бродячие NPC размещаются на карте не конструктором мира, а «шаблоном поведения в дикой местности». Это один из многих разработанных мной шаблонов для управления поведением NPC в определённых областях и моделирования ролей. Существуют, например, шаблоны для управления поведением на городском рынке NPC-покупателей и продавцов, для городской стражи, патрулей, охраны городских ворот, дозорных в башнях. В планах добавить больше шаблонов поведения для таверн (контролирующих поведение персонала и посетителей), жилых домов и так далее. С добавлением новых шаблонов общее поведение NPC усложнится, оставшись при этом модульным и легко управляемым.

Подземелья

Карты подземелий также процедурно генерируются, но совершенно иначе. Генератор карт создаёт планировку, учитывая назначение конкретной комнаты, которая может оказаться складом, камерой, подземной кузницей или чем-то ещё. Комнаты эффективно соединяются коридорами. Хотя планировка и наполнение подземелий меняются от игры к игре, логически связанные помещения всегда будут находиться рядом. Кроме того, подземелье может быть разделено на открытую и закрытую область... примером последней может служить запертая сокровищница — чтобы бродячие NPC не обчистили её до прихода игрока. Подземелья по-разному выглядят и создаются по разным правилам, поэтому вы не перепутаете естественные пещеры с гоблинскими или подземными тюрьмами.

[Knights of Frontier Valley] На скриншоте: Атака по скелету.
Да, знаю. У скелетов нет физических недостатков живых существ. Уже исправлено.

Здания

Я обнаружил, что созданные полностью процедурным способом карты зданий выглядят неестественно. Обычно здания весьма сложны по структуре, и мы интуитивно отмечаем их неправдоподобность. У них есть стены, двери, окна, лестницы, дымоходы, мебель, декоративные элементы и многое другое, и разместить всё это реалистично сможет лишь продвинутый генеративный искусственный интеллект. Такие технологии мне не под силу (не забывайте, что я работаю один), а кроме того — при создании Knights of Frontier Valley я сразу решил отказаться от ИИ.

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

Я сделал следующее: используя созданный для этой цели редактор карт зданий, я сделал ряд базовых планировок для каждого типа здания и возможных расположений на карте мира, и дополнил их процедурной логикой генерации материалов стен и потолков. Типы мебели и наполнение контейнеров также различаются. Таким образом, столы в домах с одинаковой базовой планировкой стоят примерно в одинаковых местах, но материалы стен и полов могут отличаться, равно как и тип самих столов, и их наполнение. Я разработал более 160 базовых планировок (на это ушли недели), и теперь благодаря процедурным алгоритмам дома в игре выглядят разнообразно.

В Knights of Frontier Valley есть несколько уникальных, созданных вручную зданий — и это таверны. Обычно в фэнтезийных RPG они играют роль базы или центра операций игрока, и я хотел, чтобы в них он чувствовал себя как дома, а этого процедурной генерацией этого не добиться.

[Knights of Frontier Valley] На скриншоте: Пример внутреннего убранства.
Такую виллу неплохо бы обнести, если соблюдение законов в ваши планы не входит.

Города

Лишь карты городов в Knights of Frontier Valley не создаются процедурными алгоритмами. Вообще, я, конечно, пытался, но быстро понял, что заново искать торговцев при запуске новой игры отнюдь не весело. Кроме того, средневековые города были устроены довольно похоже (рынок в центре, магазины вокруг него, кладбище за стенами, а шумные и зловонные предприятия вроде кузниц и кожевенных мастерских вынесены в отдельный квартал, и так далее). Если добавить все эти параметры в алгоритм генерации, созданные им города получатся однотипными, что нивелирует основное достоинство процедурного их создания. Поэтому я решил от них отказаться и создал карты городов вручную. Для этого я сделал отдельный редактор!

[Knights of Frontier Valley] На скриншоте: Неблагополучный городской квартал.
Западный Тайл, известный как «Заплатка», — не самый благополучный район, в котором по ночам лучше не появляться.

Дикая местность

В начале боя происходит переключение с карты мира на местную — с деревьями, кустами, камнями и травой. Но можно перейти на него самостоятельно для поиска съестного — вроде ягод, грибов, редких растений — дров и других полезных вещей в дикой местности. Карты местности также генерируются, но с характерным для заданной области окружением (ну, по большей части), поэтому если вы переключитесь на локальную карту на краю леса с горой поблизости, те же особенности ландшафта будут точно размещены на ней.

[Knights of Frontier Valley] На скриншоте: Сражение в глуши.
«Всё будет в порядке, просто не сходи с дороги», — говорили они. Но куда подевалась эта клятая дорога?!?

Теперь вы узнали всё о картах в Knights of Frontier Valley! Если остались вопросы — дайте знать в комментариях.

До следующих встреч, Мартин

Переводил ma1k0vich.

CC0
Вы можете копировать, изменять, распространять и исполнять данное произведение, даже в коммерческих целях, не спрашивая разрешения.

Поиск по сайту

Сообщения на форуме | новые

Что значит «C» в CRPG? на форуме Обсуждение статей.
Последнее сообщение оставил RayTheCat (2025-06-18 в 16:05). Ответов: 36.
Бордель услаждения интеллектуальных страстей — 2 на форуме Оффтопик — Разное.
Последнее сообщение оставил realavt (2025-06-18 в 15:04). Ответов: 1139.
Lex Imperialis на форуме Warhammer 40,000.
Последнее сообщение оставил Хоттабыч (2025-06-18 в 14:25). Ответов: 11.
Технические вопросы на форуме Сайт и форум.
Последнее сообщение оставил Хоттабыч (2025-06-18 в 14:20). Ответов: 1071.
[В разработке] Scourge of the Reptiles на форуме Всё остальное | Инди.
Последнее сообщение оставил 9cq6rQCmQA (2025-06-18 в 13:48). Ответов: 2.
[В разработке] Frosthaven на форуме Тактические и стратегические.
Последнее сообщение оставил 9cq6rQCmQA (2025-06-18 в 13:22). Ответов: 2.
[В разработке] MENACE на форуме Тактические и стратегические.
Последнее сообщение оставил 9cq6rQCmQA (2025-06-18 в 13:13). Ответов: 41.
Icewind Dale 2 на форуме Icewind Dale 2.
Последнее сообщение оставил Bellerogrim (2025-06-18 в 01:13). Ответов: 57.
Baldur's Gate 2 на форуме Baldur’s Gate.
Последнее сообщение оставил darer333 (2025-06-17 в 21:09). Ответов: 42.
Сериалы на форуме Сериалы.
Последнее сообщение оставил silmor_senedlen (2025-06-17 в 13:23). Ответов: 960.

Ожидаемое | таблица

Новости C.O.R.E.

Статьи C.O.R.E.

Новости RPG Codex

Новости RPG Watch

Новости RPG Nuke

Случайная цитата

Dragons? Oh, they're everywhere! You must fly very high to see most of them, though. The ones nearer the ground are very hard to see, being invisible.

M'aiq the Liar, The Elder Scrolls III: Morrowind

Оставьте свой отзыв: QR-код для отзывов в «Яндексе».