21 окт. 2026 г.

CRPG в прикольном сеттинге

Пост не про НРИ, а про видеоигры 
 
Представьте

Представьте себе видеоигру типа как «Ведьмак». Вы создаёте персонажа (или просто выбираете сложность, если играем за кого-то предзаданного вроде Геральта), нажимаете «Новая игра», а дальше происходит кое-что необычное.
 
В фоновом режиме запускается партия в Civilization. Только Civilization эта, разумеется, специально создана под сеттинг видеоигры. Здесь есть соответствующие народы, государства, магия, технологии, религии, политические институты и всё остальное.

У этой стратегической игры есть полноценные ИИ-игроки (в старом смысле слова «ИИ»). Каждый такой игрок «хочет» победить в том же смысле, в котором хотят победить ваши компьютерные соперники в обычной партии в Civilization. То есть они работают на результат. Скажем, их задача — набрать больше очков, чем другие. И алгоритм ИИ пишется именно под это. Они накапливают очки за дипломатические достижения, научные открытия, войны, культуру, строительство местных чудес света и прочее. Каждый действует в своих интересах, конкурирует с другими, заключает союзы, предаёт союзников, захватывает территории. Государства возникают, развиваются и гибнут.

Игрок, который собирается играть в CRPG, этой партии не видит. Civilization находится полностью под капотом — это всего лишь генератор игрового мира.

В какой-то момент симуляция заканчивается. И вот только теперь запускается привычная CRPG.

И в каждой новой игре у нас узнаваемый, но исторически и политически — другой сеттинг. У нас есть государства с совершенно конкретной историей возникновения и развития. Есть политическая карта, сложившаяся вследствие войн и дипломатических соглашений. Есть национальные герои, великие учёные, чудеса света, религиозные конфликты, древние обиды, исчезнувшие цивилизации.

Каждый раз всё это будет скомбинировано новым способом, но совершенно логичным, исторически, социально, культурно и вообще — причинно обусловленным.
Сразу оговорюсь, что идея не моя. Я когда-то давно подсмотрел её у другого человека. И он там предлагал использовать Civilization для генерации ролевого игрового опыта.

28 января 2008 года Эндрю Дулл опубликовал
шестую часть статьи The Death of the Level Designer. В ней он предложил мысленный эксперимент.

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

С точки зрения персонажа решения стратегических ИИ выглядят как события окружающей его действительности. Государство стягивает войска к границе. Сосед начинает войну. Возникает новый город. Открывается технология.

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

Дулл называет такую Civilization скрытой метаигрой.
В принципе, в Quasimorph мы эту идею (независимо от текста Дулла) реализовали. Корпорации и фракции вообще осуществляют какую-то стратегию, эта стратегия определяет тип задач, которые решает корпорация, а задачи — это миссии для наёмников, которые предлагаются игроку. Игрок может весьма ощутимо влиять на расклад сил в Солнечной системе, выбирая контракты одной из сторон или выбирая контракты специфического типа, или комбинируя эти факторы выбора.

Но я предлагаю несколько иную конструкцию.

Во-первых, Civilization должна отыграть свою партию до того, как игрок начнёт играть в CRPG. Её главная функция — сформировать прошлое мира и его исходное состояние. Продолжение симуляции во время ролевой игры возможно, но необязательно.

Во-вторых, я хотел бы сделать принцип стратегической конкуренции центральным требованием. ИИ должны действительно пытаться выиграть в свою игру, оптимизируя решения в соответствии с её правилами. Дулл тоже предполагает использование ИИ Civilization, но меня интересуют именно исторические последствия такой конкуренции.

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

Интерлюдия 1. Dwarf Fortress

Самый известный практически реализованный родственник этой идеи — создание мира в Dwarf Fortress.

Во время генерации мира игра моделирует длительные исторические процессы. Цивилизации возникают, развиваются, воюют, теряют территории, гибнут. Появляются исторические личности, артефакты, поселения, руины. Сама эпоха, определяемая как время прошедшее от начала симуляции, тоже вносит свои какие-то коррективы, чтобы было время, когда «боги ходили по земле», а было время, когда господствуют уже обычные королевства, склонные приходить в упадок.

Тарн Адамс описывает эту систему как огромную стратегическую игру без игроков, с тысячами агентов.

Принципиально важно для меня здесь то, что события имеют причинную предысторию.

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

Разумеется, модель Dwarf Fortress не равнозначна партии в Civilization с полноценными стратегическими целями победы. Но базовый принцип симуляции прошлого там вполне себе реализован. Историю реально можно проследить, и одно макрособытие выводится из другого, и они фундированы микрособытиями.

Интерлюдия 2. Caves of Qud

В 2018 году на Game Developers Conference Джейсон Гринблат из Freehold Games выступил с докладом Procedurally Generating History in Caves of Qud.

Это очень интересный материал. Но тут — внезапный поворот. Гринблат предлагает подход, в известном смысле противоположный тому, что предлагаю я.

Разработчики Caves of Qud столкнулись с задачей генерации древней истории мира, которая должна была вписываться в уже существующую художественную вселенную (базисная роль Гринблата — сценарист). Полноценная историческая симуляция для достижения такой цели в таком контексте была бы невероятно сложной.

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

Каждому султану назначается характерная культурная тема — domain. Затем алгоритм последовательно выбирает события его жизни, изменяет состояние исторических сущностей и создаёт текстовые свидетельства об этих событиях, которые разработчики называют gospels.

Причём (и это главное здесь) события вовсе не обязаны выбираться по принципу причинной обусловленности. Так, их генератор способен создавать впечатление причинной связности задним числом.

Гринблат приводит пример. Предположим, султан заключил союз с лягушками. Впоследствии генератор выбирает для него событие «идёт войной на город». Текстовый генератор может представить эту войну как выступление против преследования лягушек.

Вдумайтесь, причина войны не определяла выбор события. Она была сформулирована после этого выбора, исходя из уже установленных характеристик султана.
Это генератор с встроенным в него механизмом рационализации сгенерированных результатов.

У них там есть целая грамматика под это дело — replacement grammars, там есть повторяющиеся персонажи, темы, предметы и фракции, которые обеспечивают некоторое единство повествования.

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

Получается экономный и вполне интересный способ создания правдоподобного прошлого.

Но меня привлекает возможность сначала сформировать причинную последовательность исторических событий, а уже потом создавать рассказы об этих событиях. При этом опыт Caves of Qud кажется мне не менее полезным, ибо механизм рационализации «партии в стратежку» также должен быть подобен полноценной грамматике.

Что надо сделать

Представим, что перед началом новой партии в CRPG генератор проигрывает триста лет истории.

В стратегической игре есть много чего — экономика, дипломатия, военные кампании, развитие технологий, строительство, культура, религия. Существует система победных очков или других критериев успеха, которая делает ИИ-игроков «заинтересованными» в достижении определённых состояний мира.

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

Через двести лет игрок приходит в этот город. Он видит заброшенные склады, обедневшие купеческие семьи, памятник королю-победителю и местных жителей, которые по-прежнему ненавидят соседнее государство.

И ненависть эта имеет вполне определённое происхождение, а где-то в государственных архивах сохранилась переписка, позволяющая восстановить произошедшее.
 
Тут должен быть понятен опыт Caves of Qud. Нужен понятный алгоритм, который будет переводить результаты симуляции в игровые объекты. Я сейчас вижу, что упомянутый выше памятник королю-победителю либо нереален, либо будет типовым объектом. Понятно, что можно установку памятников на месте великих битв сделать и вероятностным исходом. Однако всё это и должно показать насколько развитым должен быть это алгоритм. Он должен вынимать из истории узлы, вокруг которых будет «рационализировать» исторический облик городов, развалины, книги, диалоги, биографии персонажей, локальные конфликты, реплики случайных NPC.
 
Стратежный симулятор сообщает, что случилось. Механизм-рационализатор определяет, какие материальные, политические и культурные следы события сохранились к началу CRPG. Само собой они могут быть не слишком раздельны. В конце-концов, я сразу начал с того, что стратегическая игра должна быть создана под конкретный сеттинг.

Причём совершенно необязательно превращать в игровой контент каждое историческое событие. Можно отобрать наиболее значимые и связать с ними разные уровни содержания — от короткого упоминания в репликах NPC до целой цепочки побочных квестов.

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

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

Как быть с основным сюжетом как в «Ведьмаке»

Короче, необязательно жертвовать привычной сюжетной CRPG.

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

Допустим, для истории требуется следующее:

  • Существует сильная держава с экспансионистскими намерениями.
  • Существует государство, которому угрожает завоевание.
  • В правящей элите этого государства есть влиятельная группа, заинтересованная в предательстве.
  • На спорной территории находится важный магический артефакт.

В разных партиях эти роли могут выполнять разные государства, политические группировки и исторические личности. В одном случае мы получим историю маленького королевства, сопротивляющегося империи. При другом раскладе в стратежной партии это будет конфликт двух крупных государств. В третьем варианте вообще это может быть гражданская война, в которой вмешательство внешней державы становится главным сюжетным обстоятельством.
 
Как этого можно добиться? Функционализацией сюжетных компонентов. В списке выше я это и попытался показать. Мы смотрим на наш сюжет не через очки конкретных агентов, а через очки их функциональной роли — что они причинно делают в повествовании. И эту функцию мы можем навесить фактически на любой актор в получившемся в результате генерации мире. 

При этом драматургическая конструкция может сохраняться.

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

Причём можно даже не доводить процедурность до абслюта. Вполне можно сохранить определённых персонажей, географические объекты, магические законы и другие узнаваемые элементы сеттинга.

Историческая правдоподобность «Цивы»

Надо сказать, что не из каждой партии в Civilization получается материал пригодный для написания хорошего учебника истории выдуманного мира. Мулька в том, что ИИ, который стремится выиграть в Civilization, может принимать совершенно разумные с точки зрения правил игры решения, но порождать странную историю. Тут многое зависит от того насколько хорошо правила моделируют экономику, демографию, социальные институты и культурные изменения.

Одновременно с этим поддавливает, что результаты симуляции необходимо убедительно воплощать в CRPG. Но что если будет сгенерирована сотня войн? Конечно, по самому моему замыслу граничные результаты — тоже результаты, чтобы можно было поиграть в мрачном мире бесконечной войны или в мире рано победившей всех врагов успешной империи. Проблема тут в другом — какой смысл в 50 войнах из 100 случившихся, если в окружающем мире не существует никаких следов этих войн?

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

Но! Всё это — проблемы проектирования конкретной системы. Просто их надо учитывать.

Вывод и фетиш

Самое интересное в хороших вымышленных мирах — то, что происходящее имеет причины, а настоящее оказывается результатом прошлого.
 
В предлагаемой мной идее сам исторический механизм будет познаваемым.
 
Буквально. Если когда-то произошло сражение, то оно произошло по определённым причинам. У государств были определённые ресурсы, их правители принимали определённые решения, преследовали определённые цели, а у самого сражения был определённый исход, который повлиял на последующие события. И всё это не просто рассказ о прошлом — это прошлое действительно произошло.
 
И вот я прихожу в заброшенный город, вижу развалины, памятники, какие-то странные местные обычаи. Да, я могу начать разбираться, почему город оказался заброшен, искать читать хроники, слушать слухи. А могу вообще забить, потому что лень. Но правильный ответ существует. Причём существует независимо от того предусмотрели ли разработчики специальный квест и существует ли в игре вообще возможность получить все необходимые свидетельства.
 
Разумеется, всё это требует колоссальной работы. Но сам подход, сама идея меня завораживает.
 
Где-то там, под капотом, триста лет назад один алгоритм решил построить город, потому что ему нужны были победные очки. Другой алгоритм решил этот город захватить, потому что ему нужны были ресурсы на строительство того, что теперь в мире известно как Великий мост. А третий заключил с первым союз, а потом предал его, потому что изменилась стратегическая ситуация.
 
А теперь я стою посреди развалин этого города и пытаюсь понять, что здесь произошло.

Комментариев нет:

Отправить комментарий