Laraan
@Laraan
Программирование - основное увлечение в моей жизни

Какие есть иструменты разрбаотки поведения NPC?

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

Изучая движки логических игр, и учитывая десятилетия разработки различных игр и ролевых систем, возник такой вопрос. Наверняка уже кто-то разобрался с вопросом и реализовал инструменты для разработки логики поведения (реакций и стратегий) не игровых персонажей в различных играх. Думаю есть механики, где игрок должен взаимодействовать с NPC по тем же правилам, что и сами не игровые персонажи между собой.
  • Вопрос задан
  • 632 просмотра
Решения вопроса 2
dollar
@dollar
Делай добро и бросай его в воду.
А готовых решений нет и быть не может, потому что они зависят от механик в вашей игре.

То есть нужно взять за основу стейт машину, а еще лучше дерево поведения, т.к. оно лучше для сложной логики, и затем уже привносить туда свою логику.

К примеру, по какому принципу NPC могут объединяться? В Prison Architect они объединяются в банды по цвету кожи. В вашей игре есть цвет кожи и расизм? Скорее всего, нет, значит у вас будет другой, уникальный критерий.

То есть вы пишете какую-то функцию типа getTheBestNpcToMakeFriendsWith(), в которой учитываются различные параметры NPC и свойства окружающей среды, свойственные только для вашей игры, и далее используете эту функцию в дереве поведения для переключения на ту или иную ветку.

А еще социализация может быть размазана по самому дереву решений. И в каждой ветке будет своя функция getBestNpcAround() для всяких целей (подружиться, подраться и т.д.).

И это еще не конец. Поведение придется еще забалансить, чтобы выглядело аутентично и играть было интересно. Ведь геймдев - это искусство. Поэтому коэффициенты внутри этой функции придется подбирать, пробовать разные, да и вообще менять и улучшать саму функцию, и дерево тоже, пока NPC не будут вести так, как вы хотите. Было бы странно найти готовое решение под это.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Вам нужно сформировать дерево триггеров по разным параметрам (расстояние до других объектов по каждому типу, возможности/способности для взаимодействия - полезность для достижения цели (личной или групповой) в процентах, цель личная, цель в группе, цель руководителя группы, цель в цепи и т.д.).
И уже по ним - поставить нужные действия: реакции на конкретные события или их совокупность.
После действия - снова проверка триггеров (и так - по-кругу).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы