Как работает А-Лайф в сталкере
Вижу GSC вновь стала прогревать народ на тему работы их системы симуляции жизни. Давно хотел написать заметку на эту тему. И раз пошла такая жара - то время достать черновики. И рассказать как оно обстояло на самом деле в мире Зоны, Артефактов и Аномалий.
Поэтому стоит поговорить о том что нам обещали, как реализован живой мир Сталкера. Об особенностях A-life сталкера. Рассмотрим то что ни один видео блогер не сможет рассказать.
История Сталкера
История А-лайфа, или что нам обещали в промо обзорах:
С самого начала мы старались создать у игрока впечатление, что он не самый главный персонаж в игре. Что он один, но тут и много других. У каждого свои интересы и каждый чем то занят.
И вот так появилась симуляция жизни, что бы уровни связать в один большой уровень для монстров. Что бы они жили на других уровнях пока игрок живет на этом. И случались различные события. И у игроков появлялась информация об этих событиях и игрок мог найти результат событий.
Слишком сильная предсказуемость рушит атмосферу страха. Прошли уровень, загрузились и уже не такая атмосфера...
В общем слушайте сами:
Кто ответственные за эту систему?
Алексей Сытянов - Геймдизайнер
Можно прослушать вот эту лекцию в ужасном качестве на IGDA 2007(но не рекомендую если у вас нет RTX Voice и программ для чистки аудио):
...и вот так появилась наша идея симуляции жизни! Но о космических рейнджерах я тогда ничего не слышал. И Ясенев тоже. Их если не ошибаюсь, анонсировали примерно в мае, а мы уговорили команду сделать ставку на симуляцию жизни в марте.
Идею симуляции отстаивать с кровью. Тогдашний главный вообще настаивал что это вообще не возможно. А Дима Ясенев настаивал что это не просто реально, а это можно реализовать на простых механиках, и достаточно просто попробовать.
Или немного Архивного DTF:
Коротко о глобальном искусственном интеллекте. Для игровых персонажей будут генерироваться задания и маршруты. При встрече персонажей будет происходить расчет ситуации. Результат стычки будет определяться исходя из количественного соотношения, агрессивности, оружия и т.д. В расчет будут приниматься действия монстров и существ Зоны.
и Дмитрий Ясенев - Программист
Именно эти два человека настояли на том что сделать чистый реалистичный шутер - слишком сложная задача для команды GSC, поэтому нужно сосредоточиться на симуляции мира. Сделать свою фишку которая сделает игру не похожей на другие шутеры тех лет.
Как ни странно большая часть команды была изначально против - и предлагала не выкаблучиваться и создать обычный сайфай шутер в стиле Халф лайф(1го), поэтому создание систем глобального ИИ шло туго и со скрипом, буквально силами двух человек... пока Григорович сам не стал рассказывать сказки про "живой мир" на всех интервью к 2002-2003му году. И потом именно под этот концепт THQ выделило финансирование.
Григорович даже обещал кооперативную игру с совместным походом сталкеров на зону за артефактами в интервью еврогеймеру. Но все что смог родить к финальной игре, это дезматч арены в стиле контры в которых никто не играл, ибо с интернетом в те суровые годы было туго.
Как это часто бывает такая сложная тема в итоге реализуется через крайне простые инструменты. Как по мне - любой инди разработчик хорошо знающий код, сможет реализовать аналогичную систему не хуже GSC(и не только! ). Конечно после того как прочтет эту заметку и хоть немного посидит и подумает.
Так что ...
НО ЧТО МЫ НА САМО ДЕЛЕ ПОЛУЧИЛИ?!
Итоговый А-лайф оказался той еще профанаций в сравнение с общениями Григоровича. Итоговая система вместо работы с ИИ монстров и НПС никак не занимается симуляцией мира. Все чем занимался А-лайф Зоны, это генерировал новые ИИ болванки которые шли на место дислокации убитых предшественников.
И вот тут то "симуляция" возникала Эмерджентно!
Эмерджентность - от английского слова emergent «возникающий, неожиданно появляющийся». Очень часто Эмерджентность путают с Имерсивностью (погружением в игру, как правило - описывает игру от 1го лица), и используют слово "иммерсив сим" для описания Эмержентных систем. Что, впрочем, не удивительно, так как Иммерсивность очень хорошо синергирует с Эмерджентным подходом - заставляя поверить, что игра гораздо сложнее.
Небольшая справка:
Эмерджентность в играх - это разнообразный и интересный геймплей, возникающий при взаимодействии базовых элементов игры по заданным правилам; это наличие у игрока возможности создавать различные паттерны геймплея, а у игры предлагать игроку различающиеся от игры к игре челленджи.
Многие путают слово Эмерджентность и Иммерсивность, используя второе для определения первого - от чего многие и говорят что Иммерсив симов и не существует. А есть лишь Шутер от 1го лица с РПГ элементами(инвентарем)
Эмерджентность в сталкере - это результат спавна замены погибших. Персонажи генерировались за границей мира - и шли к нужной точке.
Все просто. Эту систему может повторить любой! Если ваш сеттинг подходит для этого.
А дальше волны монстров и НПС НАЧИНАЛИ ПЕРЕСЯКАТЬСЯ в мире игры.
(Причем результат вдали от игрока обсчитывался "офлайн" по принципам Дата ориентированного дизайна задолго до того как дата ориентированный дизайн в программировании получил свое определение. Но об этом несколько позже. )
И монстры с персонажами при встрече с некоторой вероятностью начинали сражаться между собой, что создавало новые волны генераций. Игрок разрушал стабильность мира и вызывал "рябь" в мире игры. (впрочем если локацию он давно не посещал - то она со временем стабилизировалась и сталкеры вновь сидели на жопе ровно)
Зона через А-лайф начинает слать все новых ботов на замену старым, но они, как правило, не доходят до цели, так как начинают драться друг с другом.
Шанс взаимодействия определялся броском кубика учитывающим состав сил на точках Графов. Было где то около 5 исходов: Слабый участник мог убежать в случайную точку куда не планировал попадать. Мог погибнуть. Персонажи могли поторговать, и взаимно самоубится.
Зона Сталкера - это буквально зона беспрерывной резни во имя Кхорна.
И игрок начинал везде встречать трупы убитых далеко не им монстров. Или натыкался на "кочевые группы" на которых он выходил "как бэ" случайно, но на самом деле нет. Так как они шли на замену погибших в логове зверушек.
Генерация персонажей монстров - возникала случайно в одной из заранее заготовленных "точек" входа на карту зоны, - за пределами зона видимости игрока.
Генерация Cталкеров (Но не зомби- сталкеров) в отличие от монстров например происходит в два этапа - сначала "А-лайф" снимал сталкеров из точки, где скапливался резерв, по местной классификации SMART TERRAIN (об это тоже дальше), например в Баре, деревне и прочих мирных и не очень локациях и посылала на замену.
А на место резервистов SMART TERRAIN запрашивала генерацию новых сталкеров. Что могло создать у игрока ощущение, что мир живет. И что взмен погибших появляются новые персонажи. Или что он уже видел этих персонажей в других местах, а сталкеры изучают вместе с ним.
Что с одной стороны правда - что правда - так как игра перекидывала НПС из точки в точку.
А с другой это обман. Они не ищут артефакты! Они не умеют обходить аномалии! Не умеют брать квесты игрока. Да что там, для них угрозу представляет банальный костер в безопасной зоне!
После чего на более везучие сталкеры будут петь песни, или травить анекдоты на фоне чарующего запаха шашлыка и паленой резины.
Но как же штурм Припяти спросите вы?
Реализация ситуации в Припяти и Выжигатели мозгов заключалась в том, что локация "включалась" лишь при первом посещении со стороны игрока, а так же выполненного квеста на пси защиту на янтаре.
А вот места размещения "дружественных сталкеров" были изначально пустыми, так что игра спавнила их за спиной игрока и слала на убой к монолиту по запросу smart terrain, который как раз на своих точках хорошо засел. Так что дружественные НПС могли добраться до своих лагерей лишь через трупы оставленным игроком. Так как по снаряжению НПС - Монолит был немного сильнее других фракций.
И да если у вас возникла идея добраться до припяти на аптечках лечась от пси урона, то да - это сломает все скрипты....
И это все? А что там по Дополнениям?
В дополнение Чистое Небо - систему чуть усложнили, добавив "войну группировок".
- «Чистое небо» против Ренегатов
- Одиночки против бандитов
- «Долг» против «Свободы»
Но по сути система работала точно так же, просто общее число промежуточных лагерей где НПС могли останавливаться возросло в разы, и для противоположных участников боя - лагеря были одни и те же.
А так же НПС наловчились кучковаться в группу и перемещаться отрядом вслед за командиром.
Можно резюмировать что НПС в "Чистом небе" имеют логику Creep'а из DOTA
В дополнение "Зов Припяти" - ИИ у НПС дополнили тем что, что они вместо сидения в лагерях научились ходить кругами в патруль по расписанию вокруг лагеря. А еще прятаться на базу перед выбросом.
Поговорим же о механиках A-Life подробно!
A-Life — это по сути мозг зоны, стоящий за всем, кроме игрока. Глобальный ИИ. Это режиссер поведения NPC. Эта система контролирует, как NPC реагируют на действия игрока.
Однако этому есть предел интерактивности для игрока, и это обозначено как офлайн и онлайн A-Life. Как честная симуляция вблизи и упрощенная модель в дали от игрока.
Действия, выполняемые игроком, вызывают рябь в действиях ИИ, вынуждая его реактивно реагировать на игрока по мере того, как игрок перемещается по миру, и вырезает все что видит. Это создавало уникальную реакцию мира на игрока при каждом новом прохождении.
Идея симуляции заключается в том, чтобы создать иллюзию живого мира, что ИИ активен и живет в мире. В определенном смысле это и в правду работает очень хорошо работая на атмосферу игры, хотя будем честны - это шоу с дымом, лазерами и зеркалами достигается ОЧЕНЬ ПРОСТЫМИ МЕТОДАМИ и Приемами.
Список этих простых приемов и методов можно кратко описать как:
- Имена у НПС - любой именной НПС воспринимается СЕРЬЕЗНЕЕ чем безликий "бандит". Даже если он от безымянной болванки ничем и не отличается по сути. Да и в общем рейтинге игрок будет постоянно видеть главных боссов зоны
- Постоянное перемещение НПС туда-сюда - создает достаточно убедительную имитацию живого мира.
- Использование упрощенной схемы ИИ вне зоны видимости.
- Система отношений, столкновения НПС между собой при встрече в зоне видимости игрока, или за ее пределами - и создают ощущение живого мира на локациях ранее зачищенных игроком.
- Зависимость отношения НПС и Фракций к игроку от его поведения.
Изменение поведения ИИ в A-Life имеет похожую на естественную модель систему ветвления поведения. Так ИИ в Stalker имеет набор правил, которым он должен следовать, на основе роли NPC и отношения к игроку. Поэтому Сталкер - это РПГ.
Исходя из этого, ИИ будет реагировать по-разному. Из-за того, как работает A-Life, каскадный набор реакций может иметь место как результат действий игрока по массовому геноциду той или иной фракции.
По сравнению с другими ИИ, S.T.A.L.K.E.R. имитирует ГЛОБАЛЬНО принятие решений, издали подобное человеческому. Как будто игрок играет не в одиночную игру, а в ММО. Главное не всматриваться, и через некоторое время включается "приостановка неверия"
Вместо того чтобы ждать, пока игрок войдет в зону видимости, ИИ действует самостоятельно и более активно - получая задания на перемещение от глобального планировщика.
Исключение составляют сюжетно важные NPC, которые облегчают выполнение основных сюжетных задач. Такие NPC, которые необходимы для развития основной истории, статичны в своем размещении и покидают свой пост только после завершения их квестовой линии, становясь или рядовыми сталкерами. Или отправляясь на вечную вахту в лагеря.
Офлайн и онлайн A-Life
Поговорим про 2 составляющие симулятора жизни Сталкера, он состоит из 2х частей: Честный ИИ вблизи и упрощенный ИИ на других локациях влали от игрока.
Со слов разработчиков в движке S.T.A.L.K.E.R.есть два плана существования ИИ, один из которых управляет онлайн A-Life, а другой — офлайн A-Life.
Сначала это для прозвучит для всех глупо!
(Оффлайн и Онлайн ИИ - это термины GSC, хотя как по мне логичнее их было бы назвать ближним(near) и дальним(far) ИИ)
Ведь это не "онлайн игра", но это имеет смысл - если понимать слово в ином контексте: "on-line" = Как "на мушке"/На прицеле у игрока у игрока.
Это интерактивный ИИ для игрока. Можно целится и подстрелить.
Это почти классический привычный ИИ который создается в любой игре как пример ИИ ботов. Единственое отличие от ботов в других играх, что он реализован на модели G.O.A.L. (Goal Oriented Action Planning)
Игра состоит не из единого открытого мира, а из набора локаций, то основанная масса ИИ обсчитывается в Офлайне
Офлайн статус NPC означает что Компьютер обсчитывает его в виде табличных данных по очень сильно упрощенной схеме. Эта технология не нова - и тех же Космических Рейнджерах, Корсарах, Механойдах для обсчета сущностей аналогичных игроку по механики используется аналогичный подход.
Стоит добавить - что перевод NPC в набор чисте данные таблиц с которыми работает движок ИИ - это пример Data-oriented design.
Если изначально думали что такой подход сможет обеспечить их сотней живых NPC - то оказалось что он без напряжения справлялся и с тысячами офлайн ботов. Заметные фризы на слабых машинах происходили лишь при переводе НПС из одного состояния в другое.
Разберем же две части ИИ Сталкера отдельно:
Онлайн ИИ
Но для ориентации на месте - ИИ используют навигационный меш, который разработчик может разместить.
Дмитрий Ясенев рассказывал что эта система навиагации была сделана еще на ранних этапах разработки, до его прихода. И по его мнению квадраты это не лучшее решение для поиска пути - и "сегодня" бы он предпочел сделать навигационный меш на треугольниках.
Если взглянуть на SDK - то белые квадратики - это навмеш для онлайн ИИ, а зеленая блямба - это точка глобального маршрута, к которой относятся данные НПС.Она так же называется узлом Глобального графа.
Онлайн A-Life статус у всех НПС, что рядом с игроком.
Все, что находится за пределами этого радиуса, считается офлайн. Радиус вокруг игрока в оригинальной, не модифицированной игре составляет примерно 150 метров. Этот радиус может меняться — он увеличился в Чистом Небе и Зове Припяти, и также может быть изменен с помощью моддинга.
Оффлайн A-Life
Офлайн система A-Life работает в фоновом режиме и записывает себе все состояния НПС в специальный набор таблиц. Ведь НПС - это данные. И локации это данные. И даже правила взаимодействия это данные! Да здравствует Дата ориентированный дизайн программирования!
A-Life берет всю имеющуюся у него онлайн информацию и вносит изменения во дату базу офлайн сведений, пока идет игровое время. Игра постоянно просчитывает события, что могут происходить и вдали от игрока. Вы могли заметить это по микрофризам на слабом ЦП в те времена. Особенно сильны фризы проявлялись при массовой конвертации Офлайн НПС в онлайн. Так как это означало загрузку существ из оперативной памяти в видимый вид в видеокарте.
Игровой движок вычисляет эту информацию в виде обработки данных таблиц в Глобальном графе(global graph) маршрутов передвижений. Это происходит в виде обсчета невидимых для игрока таблицах, пока игрок не подойдет к точке вплотную.
Дмитрий Ясенев в своей лекции, называет это «подробным графом маршрута».
При обратном же переходе от офлайн к онлайн - НПС начинают обсчитывать окружение через уже привычный NAVIGATION MESH - который используют во многих играх для обсчета поиска пути. И это же легко могло породить кучу багов - таких, как внезапное появление, спокойно идущего НПС среди аномалий, или... во все том же костре - от которого он тут получал урон, так как не мог из него выбраться и радовал игроков своим видом.
А все потому что поверх Костра ЛЕГРА автоматическая система разложения ячеек Навмеша:
Впрочем, понятно почему так получилось. Так как Костер - это одна из точек где НПС активно тусят.
Вот так в SDK редактора выглядят точки глобального графа. Желтые линии - это места связывания маршрутов между зонами активности.
Стоит отметить еще одну забавную фишку навмей Сталкера - которой могли пользоваться разработчики собственных уровней:
Например, допустим у нас есть лестница.
Часть ячеек Навмеша может поменять ручками, дав возможность НПС например спрыгивать с лестницы!
Вуаля! Это может позволить строить на карте маршруты в обход аномалий, или более "естественные" пути для NP , запретив срезать тропинки напрямую в некоторых местах. Или наоборот организовав Срезки - и возможность спрыгнуть с выступа.
SMART TERRAINS/ Умные ландшафты
Изначально предполагалось что Сталкеры будут брать задачи у Торговцев и барменов, но это создавало пробки, чем были не довольны игроки и тестеры. Поэтому в какой то момент ИИ Сталкеров переключили на то что они получали "поручения" не от таких же НПС, а от "умных ландшафтов".
Умные ландшафты — это зоны, которые распределяются по игровому миру и применяют новые приоритеты поведения к существующему ИИ, как только он заходит в эти зоны.
Это зоны костров, лагерей, и патрулей (в "Зове Припяти").
Это технология перехвата управления над НПС - позволяя ставить задачу на передислокацию НПС с одной локации в другую. Задавать им Задачу идти из точки А в точку Б.
Многие функции, связанные с такими системами, были фактически сильно не доработаны - и по сливам рабочих билдов находились или на очень ранних этапах разработки, или зачастую на уровне концепта, где к коду даже не прикасались.
К финалу были вырезаны многие фракции, и даже действия сталкеров: Например изначально планировалась что сталкеры будут реагировать и идти защищать свои лагеря при внешнем нападении.
Увы в реальности - отбитием будут заниматься только те НПС что изначально были поставлены в вечную вахту в нужных точках.
К рабочей механике "Smart Terrain" можно отнести и функцию анекдотов у костра - территория раздает приказы тем НПС что имеются в наличие травить анекдоты, а другие начинают вставлять комментарии. Или играть на гитаре.
SPACE RESTRICTERS / Или просто СТЕНЫ
Система ограничений для НПС:
Тоже важная часть A-лайфа.
Дабы не допустить пересечения сюжетных НПС и агрессивных врагов до появления героя вводились ограничения. Эти ограничения отключали часть глобального графа(global graph) для перемещения и взаимодействия с рядовых НПС - пока игрок не снимал скриптом ограничение на "Стены" на глобальном графе путем выполнения сюжетных заданий. Такими вот сюжетными СЦЕНАМИ ограничены все важные места в игре
На этом невидимом объекте в игре так и написано: СТЕНА!
Таким образом прохождение игры со стороны игрока открывала мир и для НПС, порождая ощущение, что мир живет в тех зонах, что он ранее посетил. А в новых зонах его ждал огороженный сюжетный контент.
Открытие закрытых зон - пускали волну изменений по зоне - оживляя ее. Заставляя A-Life пере напрявлять НПС с одной локации зоны на другую.
Пара слов о Фриплее
Изначально для игроков в Сталкере готовился финальный контент фриплея в виде отдельного патча, который бы становился доступным после прохождения игр, давая возможность поиграть на зоне без сюжетного контента Стрелка/Меченного. Официально это модификация так и не вышла. Но была слита неофициально, и вот там было доступно несколько занятных debug функций разработчиков.
Которые могут показаться интересными всем кто захочет сделать нечто похожую систему.
Например, в КПК начинали отображался ВСЕ НПС в игре на глобальной карте. Именно такими средствами GSC осуществляло тестирование своей игры.
Более того становился доступ к именам сталкеров и отмеченных лагерей:
И отмечались на кадре ниже: отмечена зона скрипта для Плоти Самоубийцы которая кидалась в аномалию и гибла для обучения игрока:
Или вот Мусорка - где можно видеть "раненого" бандита, который только притворялся:
А что там с ИИ конкретного Сталкера?
Систему обработки ИИ - постоянно меняли в течение разработки.
И в итоге остановились на системе аналоге GOAP из FEAR. Но слов Ясенева - они ей вдохновлялись. И даже переписывался с автором оригинальной системы F.E.A.R Джефом Орикном.
Goal Oriented Action Planning
Или по-русски: "Целе-ориентированное планирование действий"
Подробнее можно узнать вот тут:
Точнее упрошенный GOAL в сранение с оригинальным Фиром.
У Сталкеров был набор целей и был приоритет. По которому они шли выполнять свои задачи.
Но в отличие от FEAR - в сталкере не было планировщика порядка действий (Заходим кидаем гранату , выходим, а сосед кричит "кинь гранату"). Из-за чего в сталкере НПС казались в разы тупее, и все что могли - этого орать про пойманную маслину. Но слов разработчиков - создание ИИ в рамках Goal на порядок проще чем в рамках конечных автоматов.
Иронично что у каждого сталкера в зоне - вынуждены были в качестве костыля поставить невыполнимую цель "Раскрыть загадку Зоны" - которая проверяла - что цель не раскрыта - и запрашивала другие последовательные задачи в списке.
Да и ИИ у НПС сталкеров и Мутантов различается.
Сталкеры используют более вдумчивый ИИ - в то время как монстры реализованы на иерархическом конечном автомате - с не прерываемой анимацией атак. Хотя Монстры подчинялись тому же глобальному планированию в стиле: или в точку и займи свое место.
Вывод или рассуждение о Эмерджентности
Эмерджентные системы - имеют довольно забавный аспект. В готовом виде они всегда кажутся гораздо большими, сложными и комплексными. Но если их разобрать - то на руках окажется лишь буквально несколько простых правил похожих на набор деталек ЛЕГО, которые могут стыковаться по-разному.
Такие игры как Сталкер, Кенши, Космические Рейджеры и многие игры серии TES c радиант АИ выглядят дорогими и неподъемными даже в глазах других разработчиков! Которые начинают грустно охать, завидовать и включать пожалейку:
"что дескать у нас таких ресурсов на эпичный проект нет, что бы реализовать такое!"(с) (реально слышанная мной фраза, где продюсер студии из 150 человек - говорит что у студии нет ресурсов на проект который сделали 90 человек)
Но при проверке Титров(Credits) оказывается что для реализации данных совсем не нужны тысячи сотрудников! Сталкер создавался примерно 80 сотрудниками. Из которых за A-life отвечало лишь 2е!
Для сравнения над Скайрим работало: 90, А Кенши парой десятков! А какой-нибудь Dwarf Fortress - силами всего 3х, где третий это кот!
Это происходит потому, что Эмерджентный дизайн построения мира по становится "самовоспроизводящимися", этот тип дизайна игр позволяет автоматизировать воссоздание сценарной логики игры средствами движка из более простых правил создавая в итоге ситуации - которые в других студиях типа Убисофт скриптовали бы руками армией джунов.
Важная особенность эмерджентности - что игроку не нужно ждать ДЛЦ - что бы получить продолжение приключения - достаточно начать игру заново, и опыт игры будет во многом будет новым и другим. Это по сути важный элемент "бесконечной игры".
Это создает симуляцию мира. Которая начинает работать на атмосферу игры. Давая уникальный геймплей - который нельзя повторить и "пройти игру на ютубе"
Для сравнения рассмотрим какой-либо статичный мир. Вы же помните лагеря бандитов и преступников в Киберпанке!?
Где скучные NPC стоят и любезно ждут когда игрок заявится к ним в гости. И еще обязательно рядом лежит записка, в которой описано, что же они там забыли (потому что кто-то не смог в "повествование через окружение"). Кажется очевидным, что в рамках открытого мира такие сцены... просто не работают!
Они идеальны для линейного приключения, но никак не для открытого мира. Впрочем, ничто не мешает запустить игрока в узкий коридор где для него будет подготовлен сложный интересный сюжетный квест вроде "Падения Мальстрема".
В Сталкере подобные места и квесты тоже есть. Другое дело что после выполнения квестов - они начинают активно участвовать в круговороте жизни A-Life. Давая ощущения, что мир живет и без игрока.
Команда GSC в начале 2000х вместо того что бы писать сложные скрипты ситуаций для заполнения мира - сделала ставку на эмерджентный геймплей. Такие системы позволяют набить мир более менее уникальными ситуациями которые не повторяются точь-в-точь. В отличие от скажем тех же "случайных" встреч в скайриме, которых около сотни и рано или поздно начнут повторияться.
Чем больше видов монстров, больше разнообразных архетипов персонажей, тем более сложную вариацию сможет породить система при симуляции мира.
Все что нужно - это описать системы взаимодействия между отрядами, или их тушками. Кровососы и сталкеры перебили друг друга? Что же - тогда у слепых псов которые наткнуться на них будет ужин.
Нужно создать таблицу взаимодействия НПС. Вместо того что бы писать тысячи почти одинаковых скриптов. Пускай движок сам создает такой контент!
И ИИ A-Life в Stalker — это как раз то, что создает Emergent Gameplay.
Вот несколько базовых принципов Эмерджентного геймплея:
Интерактивный ИИ взаимодействующий с миром
ИИ не должен быть статичной болванкой, реагирующей на игрока только после его действий. ИИ должен имитировать разумный (или не очень) объект со своими желаниями и планами. ИИ должен жить в мире игры. Его логика должна быть понятной игроку: торговцы торгуют, пираты грабят, воины воюют, вангеры доставляют грузы, сталкеры воюют в войне группировок.
Честность расчета
ИИ вдали от игрока точно так же должен обсчитываться, как и вблизи от игрока. Хотя конечно вдали от игрока - возможна определенная степень упрощения расчетов. Главное, что бы игрок не ощущал обмана, переход от удаленной к близкой системе должен быть максимально гладкий.
Экология Мира и причинность событий.
Все интерактивные существа в игре - должны где-то создаваться и иметь чёткие правила взаимодействия между собой. Они не должны возникать по скрипту из пустоты. Мир должен жить - даже если игрок не видит этого.
Точки спавна существ - должны быть или скрыты от игрока (за пределами зоны в Сталкере) или быть логично объяснены в рамках игры(Планеты в Космических Рейнджерах производящие корабли или базы создающие механойдов на основе ядер уничтоженных мехов)
Минимизация рандома.
Рандом, как и жесткие сценарные сюжеты - это 2 главных врага эмерджентного подхода. Нужно пройти по лезвию бритвы между желанием все жестко заскриптовать. Или накидать в генератор случайных событий и привязать к определенной точке на карте.
Найти путь между сцилой и харибдой.
Это не значит что ни того и ни другого быть не должно. Те же таблицы для обсчета взаимодействия между сущностями вдали от игрока - могут содержать в себе броски кубиков, так и в точках спавна существа могут генерироваться по таблице списков псевдослучайно... или на основе сведений о выполненных игроком квестов.
Но игрок не должен видеть этого броска рандома. Если он увидел солдат в патрулировании - он так же должен увидеть и точку откуда они вышли - если загрузит более раннюю игру. Но он не должен видеть как они появляются из воздуха и не должен блокировать их появление своим присутствием.
Если интересны еще рассуждения на эту тему то рекомендую почитать Jerry Green точнее его заметку "Принципы Симуляции в Геймдизайне"
Что это значит для нас, разработчиков?
ИИ A-Life в Stalker — это пример реализации Emergent Gameplay. Той самой симуляции - которой так не хватает в геймдеве сегодня.
Поэтому учится на примерах не зазорно. Особенно когда их не так уж и много. И зачастую и лучшие и худшие представители той или иной реализации - это буквально одни и те же игры.
Потому что лучше никто не делает! Недоработка господа!
К тому же реализация живого мира - оказывается на порядок проще если разобрать систему ИИ на запчасти, то она окажется состоящей из простых и понятных деталей: привычного тактического локального ИИ и таблицы взаимодействия для глобального ИИ. А еще систему приоритетов и планов.
Для реализации аналога A-Life, или ИИ из Космических Рейнджеров - все что нужно: это реализовать систему глобальных задач для НПС. И систему "удаленного обсчета" Ходов ИИ, по сути помимо основного геймплея - нужно сделать "пошаговый симулятор" (Привет Оксана Добрая! Ты по сути взялась за реализацию части A-Life) живого мира, где будет создана упрощенная модель "глобального Графа" который будет симулировать жизнь и перемещение НПС c определенным шагом по времени. И конвертацию ИИ из одного состояния в другое. Алгоритм желательно размазать во времени, что бы таблица с данными не обсчитывалась каждую секунду или даже раз в 5-10 минут за 1 фрейм кадра полностью вызывая тормоза в игре.
Обсчет можно спокойно распределить по времени и приоритетам. Вряд ли имеет смысл часто обсчитывать то что происходит через 20 километров от игрока слишком часто.
Это не так уж и сложно, гораздо сложнее и дороже выделять армию сценаристов на создание мини активностей для развлечения игрока.
Эмерджентная система при правильной реализации способна развлекать игрока довольно долго - каждый раз генерируя все новые и новые комбинации событий в новых местах. А уж заставить скриптовать их ручками... еще больше сил уйдет у тестеров на шлифовку получившегося результата.
Увы A-Life так и не раскрыла своего полного потенциала, многие вещи так и остались на бумаге диздоков - и они не были доведены до реализации.
Да еще в игре был «уборщик», убирающий собственно мусор в оперативной памяти: трупы, выпавшее оружие, не подобранные артефакты и прочее. И частенько он убирал всё гораздо раньше, чем игрок добирался до места происшествия. Из-за чего хоть игра и обсчитывала сотни сталкеров - игрок мог видеть только совсем недавние события которые успели произойти на расстоянии 5-10 точек глобального графа от него.
Когда THQ надоело ждать обещаний Григоровича - они прислали своего спеца, который стал главным. И Дин Шарп заставил допилить то что было уже готово... и того что было сделано - хватило что бы создавать тот уникальный игровой опыт которым могут похвастаться лишь очень немногие игры... wizardy 7, ultima online, Вангеры, Механойды, Космические Рейндежры, Корсары, Кенши, Mount and Blade, Dwarf Fortress и в их число входит и Сталкер: Тень чернобыля.
Будем честны Сталкер - это сам по себе весьма посредственный шутер с РПГ элементами(инвентарь/снаряжение/выживач), и с элементами живого мира - что создавали ощущение приключения. Другие сталкеры воспринимались как люди, с которыми можно было торговать, их можно было лечить, или их можно было застрелить.
Тот же Сталкрафт пытается выехать на схожей идеи буквально подсовывая сервера с другими игроками.
Именно это дарило ощущение приключения - которое ждало вас за следующим холмом. Заставляя идти вглубь зоны квест за квестом. Пока вы не обнаруживали себя стоящим у монолита, и понимающим, что вас по сути жестко обманули, создав шоу из дыма и зеркал весьма дешевым способом, и пустив по растянутой линейной квестой цепочки "убить стрелка"
Его полюбили не за то чем эта игра была, а за то чем могла бы стать:
За атмосферу, и ожидание чего-то неожиданного.
Обещанной Григоровичом зоны так и не показали.
Набор монстров - не так уж и велик. Да что там многих монстров даже не сами GSC придумали, им нарисовали пользователи в рамках конкурса "Бал Монстров" в 2003м. Артефактного оружие и броню можно пересчитать на пальцах(по сути только одна Гаусс винтовка и является полноценным артефактам оружием за всю игру). Аномалии в зоне, в отличие от первоисточника Стругацких имеют фиксированное положение, а выбросы которыми пугали всю игру - встречаются лишь по сюжету. Количество локаций весьма и весьма невелико.
Не удивительно что люди пытались добрать недостающие приключение в книгах:
Поэтому - дерзайте! Те же Братья Адмамс в своем Dwarf Fortress уже реализовали более сложные механики симуляции чем те что Григович с Мулинье обещали вместе.
Если у вас будет возможность попробовать реализовать живой мир - пробуйте! А если возникнут вопросы - не бойтесь их задавать.
Если ищите чем еще вдохновится - то рекомендую ознакомиться с принципами старой Arkane.
Живите выше терний,
Смиряйте русла рек,
Из взлётов и падений
Мостите новый век.
(с)Алькор.
А что ждать от Стакера 2? Каким будет A-Life 2?
Есть автономный режим, в котором часть событий происходит в фоновом режиме. По ходу прохождения вы сможете увидеть результаты как перестрелок, так и сражений с мутантами и т.д. Некоторые группировки или мутанты занимают свой ареал обитания, а некоторые просто блуждают по карте. Так что жизнь в Зоне протекает как на глазах игрока, так и вне его поля зрения."
Скорее всего стоит ожидать наработки кода движка X-Ray и A-life были гибридизированны и соединены с Unreal Engine. (Как это делали GTA :The trilogy. Благо движок unreal имеет открытый код - и переносить куски готовых решений из других исходников не проблема. Поэтому когда та же Bethesda говорит что не перейдет на анрил - она кривит душей, соединить движки что бы получить плюсы от двух движков сюрприз не самая сложная задача, им просто жалко 5% отчислений)
И финальная система симуляции мира останется без сильных изменений в сравнение с версией 2007года. Из ожидаемых нововведений - это адаптация "войны группировок" на новом уровне - что группы сталкеров будут воевать не только между собой - но и со зверушками, которые будут выбивать их обжитых зон.
Не удивлюсь если часть локаций из оригинальной игры будет перенесена на unreal 1 в 1 с соответствующей заменой моделей и текстур на более современные.
Ну поехали
О, это будет хороший тред
Пожалуй, самая лучшая часть ИИ в Сталкере 2 - это вот эта вот демонстрация, которая начинается на 13 минуте в церкви:
https://youtu.be/jRLJ3lV-_V8
Грига-младший широкими мазками расписывает, что вот у нас такой-то инновационный ИИ, мы не даём ему подсказки, если игрок где-то прячется, ИИ строит теории и гипотезы где игрок,
И всё это время нам показывают кошку, которая сначала не смогла подняться за игроком по ступенькам, а потом стала бегать кругами, носиться по помещению, тупя и крутясь на месте, как это делали ИИ-животные в Готике 1 когда ты на камень забирался. Да, вот уж инновационный ИИ, гипотезы строит нах
О да. Нпс которые забыли научить прыгать.
Я их в очень небольшом числе игр видел..
Ретурн ту кастл вульфтейнштейн, да... старфилд: там нпс умеют пользоваться ранцем.
кошку, которая сначала не смогла подняться за игроком по ступенькамГлавное чтобы как в ориге кабаны и псевдогиги не "ходили" по вертикальным лесенкам за игроком
Содержание текста отличное, но вот сам текст абсолютно не вычитан - огромное количество ошибок, несогласований, лишних предлогов и неправильных склонений.
И постоянно "механоЙды" через "й" - где вы это берёте?
Говорить механоИды так же неестественно , как использовать "брелоки" вместо "брелков"
Скорее всего сейчас это просто маркетинговый ход и всё будет заскриптовано, судя по видосам.