Давно уже вынашиваю такую идею, периодически продумываю разные концепты. Еще когда занимался картами для WC3 хотел сделать симуляцию, когда каждый NPC в игре - герой, со своими целями и потребностями. NPC бы были такими же героями, как и игрок: фармили бы опыт и предметы, сражались бы с друг другом и т.д. Но если отойти от wc3 - суть концепта такая же - каждый NPC реально "живет" в игре. Это в теории поможет создать "реальный" живой мир, с которым игрок может взаимодействовать.

Нарратив и декорации

Обычно, иллюзия живости мира создается скриптами и сценариями, или просто нарративными вставками. В Готике, например, нпц имели распорядок дня, что перекочевало и в поздние Elder Scrolls. Обычно это просто скрипт: если утро - встать с кровати и идти в точку А. В точке А бить молотком по стене, до вечера. В играх типа rdr2 скрипты сложнее, анимаций больше - но суть та же. В целом, это подход просто декорации мира. Есть и более простые, вообще не связанные с миром игры декоративные элементы, вроде простого текста, лора, записок и сценок. Распорядок же дня в Готике уже прямо влияет на геймплей.

Этот подход зачастую создает лудонарративный диссонанс. Выбивает из погружения, ломает иллюзию мира. Когда на убийцу драконов, главу гильдии магов в мифриловых доспехах из каждой подворотни прыгает полтора шахтера с розочкой из бутылки пива "Три богатыря" - видишь в них лишь пузырьки с лутом на пару монет. Или, когда я играл в рогуетрейдер (или любую другую аналогичную) - тебе дается на выбор 4 варианта диалога. И все они ведут к одной и той же следующей сцене, неважно что выбирать. Чувствуется вся бессмысленность твоего сознательного выбора, все эти "ветвистые ветки" диалогов - лишь иллюзия выбора, в лучшем случае - переключатель рельс сюжета, или тебе просто покажут чуть другой текст. Для неискушенного игрока или того, кто полностью погружается и строит историю у себя в голове, сознательно закрывая глаза на нестыковки - это работает и дарит удивительный опыт.

Симуляции колоний

Наиболее полные симуляции в играх по типу "симулятор колонии" ака Dwarf Fortress (и иже). "Пешки" - напрямую неподконтрольные игроку нпц имеют не только свой распорядок дня, но и потребности (привет симс) и персональные особенности. Но интеллект всё же у пешек общий, этакий "большой брат", который распределяет задачи и выдает команды. Обычно симуляция мира ограничивается колонией игрока, а внешние события являются отдельной "декорацией" мира. Но тем не менее, пешки занимаются своими делами, едят/спят/работают и это реально обоснованные влияющие на мир события. Пешка посадил грибы, эти грибы варят, едят, шьют одежду.

Можно разделить действия нпц на две категории: циклические и одиночные. Одиночные задаются игроком (движение, атака), иногда исполнители назначаются автоматически общим планировщиком (строительство). Циклические могут быть априорные (кушац, спать) и опосредованные игроком (рубить, лесопилка). Эти задачи имеют смысл и последствия в игровом мире, и даже влияющими на взаимоотношения между нпц.

Песочность

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

Речь сейчас не о том, чтобы заменить живым миром прописанные истории и заранее четко запланированный игровой сценарий. Истории и ситуации в сюжетных РПГ, коридорных шутерах, qte и анимированные катсцены - это тоже прекрасно, но это другой опыт. Нет смысла спорить что вкуснее - мороженное или шашлык. Например, живой динамичный мир может быть и в играх типа Crusader Kings и The Guild, где персонажи создают семьи, рождаются, умирают, их отношения влияют на игровой мир - тоже весьма интересный вариант "живущего" игрового мира.

Я думаю многих, как и меня - цепляет идея живущего мира, в котором нпц не скриптовые болванчики, а полноценные участники наряду с игроком, влияющие на развитие игрового мира. Без декораций и условностей, или, хотя бы, с минимальным их вкраплением. Особенно меня цепляет концепт RPG, в которой нпц реально живут своей жизнью и создают уникальные игровые ситуации. Такими байками любят кормить разработчики ААА проектов, вроде уничтоженных лесопилок в скайриме и сказок Мулинье. Но концепт действительно реализуем, вопрос лишь в том, как органично выстроить из этого игровой дизайн и какие правила поведения нужно задать. Пока вижу два основных способа: снизу-вверх и сверху-вниз.

Снизу-вверх

Решение снизу-вверх. Т.е. отталкиваться от базовых элементов поведения нпц. Например, взять за основу базовые потребности: 1. здоровье; 2. пища; 3. размножение. Далее ии решает приоритетную задачу и следующие действия. Есть сложный вариант, по принципу обучение нейросетей и симулятора жизни. Я делал такое, выходит очень сложно. Если простые задачи еще решаемы (дойти до точки по прямой), то более сложные - уже требуют комплексного подхода и сложных сетей, возможно - составных. Тут уже задача на грани создания "сильного ИИ", т.е. ии решающего неограниченный круг задач.
Вариант проще - заранее заготовленные шаблоны действий, триггеров и условий. Например: если здоровье<n% (n - персональный параметр), то убежать и спрятаться (если возможно), иначе - сражаться до смерти. В теории, если разбить эти задачи до минимальных правил - возможно даже получить неожиданные решения от ии, если он будет эти правила случайно комбинировать. Вполне можно использовать реальные модели поведения животных и биологию. (Высокий адреналин) * (привлекательность объекта) < n% - нпц атакует. Но даже если применять типичные шаблоны поведения нпц - в теории можно получить сложные и интересные модели поведения за счет комбинаций различных факторов.

Если предположить пошаговую игру - нпц вполне может строить своё поведение на прогнозах. Например, применение Minmax алгоритма, как в шахматах. (Не обязательно пошаговую, можно даже "пошаговое" мышление ИИ в рамках реал-тайма.) Т.е. ии "в уме" предполагает различные варианты действий, моделируются результат, считается "успешность" (например, сколько останется здоровья, будет ли враг жив и т.д.) Какое действие будет более выгодным - такое и будет сделано. "Правильным" будет у каждого нпц иметь в голове свою модель мира - он будет знать только то, что должен. Например, если играли в RTS - то юнит будет правильно обегать препятствия даже в тумане войны, ибо алгоритм поиска путей работает по "реальной" карте, а не той, что видит игрок. Такой же принцип и в различных играх, вроде пути движения нпц в рпг, вроде Скайрима (каждый нпц знает кратчайший путь всегда). Но корректнее будет у каждого нпц иметь в голове только то, что он действительно может знать: видел сам или узнал механикой типа общения (причем, собеседник может дать нпц устаревшую информацию или неккоректную, вроде пути пещеры, которую уже завалило).

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

Сверху-вниз

В данном случае нужно задаться вопросом: а какие вообще ситуации может спровоцировать живой игровой мир? Возьму в качестве опоры сеттинг и модель мира в таком сеттинге. По дефолту - средневековое фэнтези, в котором игрок - один из многочисленных (условных) людей. Допустим, игрок появляется у дороги, по которой конвой ведет заключенного (Ульфрик Буривестник наш король!). Но у дороги нет причины - она появилась благодаря руке дизайнера, как и сам конвой - причин, обусловленных игровой реальностью - нет. Вся история - лишь нарративная. Можно реализовать и упрощенную условную генерацию мира (оторванную от реального игрового процесса) - дорога создалась при генерации мира. Но конвой должен быть обусловлен реальной игровой механикой. Т.е. должна быть реализована игровая механика правовой системы, при которой персонаж (нпц или игрок) может быть взят под стражу и конвоирован. И далее уже более детально, по цепочке: как персонаж становится стражником; как становится преступником; как стражники поймали преступника; куда ведут, зачем и т.д. И все это должно быть детально описано, любое новое понятие - детально раскрыто. "Ведут в город на казнь" - ок, что за город, из чего он состоит, кто в нем живет, что делает и т.д. Если вводить в игру этот элемент (конвой) нарративно, не встраивая игромеханически, то это будет создание "декорации", намного проще, чем связывать этот элемент вплоть до уровня взаимодействия ии нпц и его принятий решений. И всегда можно "оборвать" любую ситуацию до уровня декорации - без причины и/или без следствия. Уничтожить конвой и освободить узника - он убежит, помашет ручкой. Если можно залутать стражу - это уже следствие, действие влияющее на игровой мир (механика предметов). В противовес - в игре тела стражников могут просто исчезать, без последствий, как в большинстве шутеров.

При подходе сверху-вниз таких механик как голод вообще может и не быть. Какие-то условности могут быть пропущены; от некоторых игровых ситуаций можно отказаться или заменить условно-декоративными. В случае живого игромеханически связанного мира - декораций быть не должно, или они должны быть вынесены за пределы игрового мира. Например, в dwarf fortress - это нападение гоблинов. Нет никакой жизни у гоблинов за пределами их появления по триггеру (хоть и связанного с роскошью гномов), т.е. игромеханически у них появления гоблинов нет причин, в отличии от выросшего из семечка дерева. В живом игровом мире же у всех объектов должен быть жизненный цикл; кроме беспричинного изначального появления при генерации. В идеале - весь тот опыт, который воспринимается игроком должен быть частью некоего цикла и их комбинаций; на который сам же игрок может и влиять.
Допустим, нападение на конвой - являлось частью цикла жизни персонажа заключенный и персонажей стражи. Тогда, в любом случае у персонажа должен быть цикл - появление, повторяющиеся условные действия, исчезновение. Простейшее появление - иммиграция (такая в Dwarf Fortress), т.е. появление из ниоткуда. Более сложный вариант - рождение. Это требует сложных механик условного зачатия, взросления и далее по списку. Хотя можно упростить этот момент как в one hour one life. Хотя размножение тоже может стать прекрасной механикой, как например в Crusader Kings, Medieval Dynasty, The Sims. Но если циклы рождения не контролируются исключительно игроком и происходят самостоятельно, без искусственного ограничителя - мир рискует "сломаться" от перенаселения. Простейший способ - "божественной рукой" снижать рождаемость при перенаселении или компенсировать это предзаданными правилами. В идеале, при бездействии игрока мир должен быть способен к некоторому существованию самостоятельно и даже выдерживать бесчинства игрока (вырезал Вайтран - в город переселились из ближайшей деревни).
Или же наоборот - при бездействии игрока мир сгинет. Такой вариант тоже возможен.

Общение нпц между собой

Так же интересна возможность нпц общаться между собой. Причем, я говорю о реальном общении - передаче информации, возможности договариваться и прочем. Как правило, в играх общаться может только игрок - узнавать новое и давать команды. Но если у нпц своя модель мира в голове, которая влияет на его поведение - общение необходимо. Основы для механики можно взять из модели реального мира. Например, груминг (делать добро из благодарности); кредитная система (доверие, обещания, долг); Дилемма Заключенного (обман и злоупотребление доверием). Или же упростить до уровня бартера "я тебе ты мне", со счетчиком "кредита". Спросил дорогу - минус 100. Нет кредита - пнх. Дал золотой - плюс 100. Построение фраз как от игрока так и от нпц из базовых команд, собирающиеся в предложение. Например: дай/возьми (предмет). Для стражника конвоира - отпусти заключенного. В данном случае, команды для общения и их вариативность сильно зависит от возможностей действий персонажей, реализованных механик.

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

Мультиплеер

Можно сказать, что подобные игро-миры уже существуют. One hour one life; Eve Online; - примеры таких миров, где игроки "живут" в мире по общим для всех правилам и влияют на мир напрямую, механики связанны. Но в сетевых играх - один игрок далеко не центр вселенной и видит лишь часть, а его влияние на мир сильно ограниченно. В то время, как в одиночной игре - игрок пуп вселенной и воочию лицезреет, как его действия меняют мир каординально. В случае живого мира, связанного игромеханически - мир сможет предоставить кучу уникальных ситуаций; за таким миром интересно наблюдать, изучая детали этого мира и его развития; каждое действие игрока "честно" отражается на самом игровом мире. Продумать и связать игромеханически в лаконичную систему может быть очень не просто, но - возможно.

Ссылки на телеграм канал не добавил, уж простите. Нету.

Комментарии (31)


  1. doryfish
    27.07.2024 18:55
    +19

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

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

    Возьмём ваш пример из параграфа "Снизу вверх". Вы выбрали три "базовые потребности: здоровье, пища, размножение" — и далее далеко уходите с ними тремя. Но давайте не уходить: почему вы выбрали именно эти три? А как же, например, сон?

    Отставим вообще пока ИИ и программирование, попробуем концептуально. Вы внедрили учёт здоровья (допустим, по какому-то его числовому показателю, "полоске"), пищи (аналогично, "полоска голода") и размножения. Существа в вашей игре ходят в магазин за бутылками здоровья, за хлебом для еды и друг к другу в гости размножаться. Значит ли это, что мир ожил? Или надо ещё что-то добавить? А в какой момент нам решить, когда остановиться?

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

    Снова вопрос: в каком виде вы хотите это увидеть? Именно, чтобы в игре была возможность (как у вас, так и у NPC) стать преступником, попасться и пройтись с конвоем по улицам? Или же стать стражником, ловить преступников и водить их в конвое самому? А если есть полноценная правовая система — то сначала попасть в суд? Выступать свидетелем защиты?

    И теперь решающий момент — давайте объединим эти примеры:

    1) Насколько важно для возможности ловить преступников желание есть?

    2) Насколько решающе желание размножаться для выступления в качестве свидетеля?

    и т.д.

    Безусловно, всё влияет на всё, как и в реальной жизни (которую мы пытаемся симулировать). Но вот вопрос, когда нам остановиться и сказать, что мир уже достаточно "живущий"?

    Любой (ну вот я, например) всегда может прийти и сказать:

    1) У стражника со стабильной зарплатой нет мотивации становиться преступником — это не реалистично, ведь в мире зарплату задерживают — давайте введём финансовую модель.

    2) А где конвой берёт одежду — она же просто есть? Это не реалистично, давайте введём профессии швеи, инструменты для работы и производственную цепочку тканей.

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

    Вы в одном примере тоже попытались глубоко уйти в "сложные механики условного зачатия, взросления и далее по списку". Мне кажется, вы всё равно недостаточно сильно представляете, насколько глубока эта кроличья нора, потому что даже когда вы реализуете всё вышеперечисленное из своего текста и моего комментария, любой (ну вот я, например) может прийти и сказать:

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

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

    Резюмируя, я бы посоветовал на будущее выбрать один из трёх подходов:

    • Начать имплементировать что-нибудь максимально простое "живущее", на уровне упомянутых игр математиков, может, чуть сложнее игры "Жизнь" — с клетками, питанием и т.п. И далее, так же мелкими шажками, это расширять. Об этом тоже можно будет написать статью, плюс самостоятельно напороться на упомянутые выше проблемы, чтобы лучше их "прочувствовать".

    • Или выбрать какое-то одно слабое место в большой игре (вот как тот же конвой упомянутый) и порассуждать / концептуально имплементировать его улучшение. Если сосредоточиться на одной задаче, например, водить/попасть в конвой, не распыляясь на еду/размножение/зарплату/одежду и т.п., то её вполне можно решить, возможно, даже мод настоящий написать. Вот так моды и пишут!

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

    И вот тогда получится отличная статья. :-)


  1. azTotMD
    27.07.2024 18:55
    +9

    Не сочтите за рекламу, но что-то примерно такое делаю.

    NPC могут и делают:

    • ищут залежи руды и добывают её;

    • складывают обжиговые печи и переплавляют руду в металл;

    • если не хватает дров разводят растения, чтобы потом получить из них дерево;

    • добывают материалы из поверженных противников;

    • изготовляют предметы;

    • строят стены и плавильни;

    • организовываются в поселения;

    • идут на голоса своих;

    • при торговле расчитывают цену на основании своего инвентаря и текущих потребностей;

    • ориентируются на точно такое же зрение, как у игроков, т.е. не имеют внутри себя встроенной карты мира.

    https://titanplayers.itch.io/dwdung


    1. TsarS
      27.07.2024 18:55
      +1

      Интересно. Подробностей бы про логику NPC - как реализовано. Типа "Нет дров у сообщества NPC - поселения" - тогда столько то NPC заняты выращиванием растений.


      1. azTotMD
        27.07.2024 18:55
        +1

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

        Само поведение НПС реализовано через некоторые эвристики + что-то вроде вероятностного конечного автомата.

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