
GOAP и реактивное поведение: как достичь гармонии?

Здравствуйте, уважаемые коллеги.
Мои последние недели были посвящены изучению GOAP (Goal Oriented Action Planning), и я достиг значительного прогресса в адаптации этой системы под мои нужды. Однако, я столкнулся с трудностями при интеграции реактивных состояний — тех состояний, к которым агент не испытывает стремления.
Возьмем, к примеру, ситуацию в моей игре, когда персонажи подвергаются эффектам контроля со стороны толпы при определенных условиях. Создание цели вроде "Быть оглушенным" кажется нарушением принципов GOAP, ведь агент никогда бы не захотел оказаться в таком состоянии. Однако, с другой стороны, он и не может этого предотвратить. Альтернативой было бы включение этого условия в предусловия действий — "IsStunned == false", но это может быстро привести к запутанности.
Еще один пример — когда мне нужно, чтобы агент мгновенно реагировал на повреждение, например, совершал действие "Вздрагивание", прекращая движение и проигрывая короткую анимацию. Но и здесь цель "Получить урон" выглядит нецелесообразной.
Я рассматривал возможность интеграции GOAP с конечным автоматом состояний (FSM), где, например, в состоянии "Оглушение" система переходила бы от планирования действий GOAP к состоянию "Оглушен", и обратно после его завершения. Однако я постоянно колеблюсь, пытаясь найти место для реактивного поведения в системе, где это кажется неестественным.
Буду крайне благодарен за любые отзывы или советы из вашего опыта. Также я был бы рад любым рекомендациям по дополнительным источникам, которые помогли бы мне лучше разобраться в этой проблеме. Спасибо!
Комментарии (0)