Немного об AI в моей игре Age Of Noise
Спустя много (действительно много) часов рефакторинга и изменения некоторых фундаментальных концепций и систем в игре, я наконец то смог перейти к реализации AI. Поскольку я делаю игру с высокой степенью симуляции - система AI для врагов должна быть соответствующей. Над текущей системой я работаю около 4х дней, так что строго не судите. Но уже есть что показать.
Я изучил большинство существующих подходов и выбрал так называемый GOAP (Система ориентированная на цели). Идея в том, что у существа есть некая цель, и различные способы её достижения. Эта система использовалась в основном в F.E.A.R и двух последних Shadow Of Mordor.
Обычно в GOAP цели и методы решения сортируются по приоритетам с помощью различных хитрых алгоритмов. К сожалению я не так умён, что бы их понять, так что мною было решено придумать "свой" подход. Я не говорю, что так никто не делал - но я по крайней мере не встречал.
Основная идея в том, что у каждого AI в игре есть 8 параметров, определяющих его действия. Эти параметры я выбирал очень долго (несколько дней) и их комбинации дают практически все возможные архетипы и психотипы личности человека и в целом поведения живых существ. В числе таких параметров: выживание, награда, социальность, автономия и другие.
На видео можно видеть, как я выставляю доминацию на 70, и после запускаю тестовый уровень. Пауки на уровне, которые изначально являются союзной фракцией (друг для друга) начинают нападать друг на друга, поскольку при доминации выше 70ти и социальности ниже 20ти а так же при соблюдении некоторых других условий - их глобальная цель Survive приводит к агрессивной реализации - атаке ближайших целей.
При этом пауки могут отступать, если их показатель survive выше чем dominance (в противном случае они дерутся насмерть). Сейчас система так же поддерживает 8 дополнительных задач, но я пока не буду вдаваться в подробности т.к они находятся на очень ранней стадии разработки и не являются приоритетом.
Однако, поскольку система модульная (Каждая цель, задача и решение это модули) - в будущем можно легко добавить дополнительные элементы AI. Например, помимо глобальной цели Survive, можно добавить цель Reward ориентированную на поиск лута и сражения со случайными, потенциально богатыми целями. Я так же добавил в игру систему предварительной оценки, что бы существа могли оценивать друг друга по потенциалу и уровню риска, и не вступать в конфронтации, если это не "выгодно".
Разумеется, всё это нужно будет тестировать, так что я особо не увлекаюсь AI на текущем этапе. Думаю, ещё немного полишинга, и буду переходить к последнему этапу рефакторинга - глобальной карте
Однако, поскольку система модульная (Каждая цель, задача и решение это модули) - в будущем можно легко добавить дополнительные элементы AI. Например, помимо глобальной цели Survive, можно добавить цель Reward ориентированную на поиск лута и сражения со случайными, потенциально богатыми целями. Я так же добавил в игру систему предварительной оценки, что бы существа могли оценивать друг друга по потенциалу и уровню риска, и не вступать в конфронтации, если это не "выгодно".
Разумеется, всё это нужно будет тестировать, так что я особо не увлекаюсь AI на текущем этапе. Думаю, ещё немного полишинга, и буду переходить к последнему этапу рефакторинга - глобальной карте
геймдев
age of noise