FSM은 가장 기본적인 AI 행동 모델 중 하나로, 각 상태는 NPC의 행동을 나타내며, 이벤트나 조건에 따라 상태 전환이 일어납니다.
많은 게임에서 기본적인 NPC 행동 구현에 사용됩니다.
간단한 구현이 필요할 때는 직접 구현하기도 하며, 복잡하지 않기 때문에 대부분의 프로그래밍 언어로 쉽게 구현할 수 있습니다.
그러나 복잡한 NPC 행동을 모델링하기에는 한계가 있습니다.
보다 복잡한 NPC 행동을 구현할 때 사용되며, 트리 구조를 통해 상황에 따라 다양한 행동을 취할 수 있도록 합니다.
Behavior Tree는 FSM보다 유연하며 복잡한 시나리오에 적합합니다.
Unity 같은 게임 엔진에서는 Behavior Designer와 같은 플러그인을 사용하여 비주얼하게 행동 트리를 구성할 수 있으며, C++이나 C# 등에서는 BehaviorTree.CPP, Microsoft의 BT 구현 등 라이브러리를 사용할 수 있습니다.
각 행동에 점수를 매기고 가장 높은 점수를 가진 행동을 선택하는 방식입니다.
이 방식은 NPC에게 다양한 선택지를 제공하며 상황에 따라 최적의 행동을 할 수 있게 합니다.
이 역시 복잡한 NPC 행동에 사용될 수 있습니다. 아폴로니아(Apollonia)와 같은 라이브러리가 예시입니다.
상태 기반의 계획을 통해 목표를 달성하는 행동을 계획합니다.
이 시스템은 특히 복잡한 상호작용이 필요한 게임에서 유용합니다.
ReGoap, Fluid Behavior Tree 등이 GOAP를 지원하는 라이브러리의 예입니다.
자동전투나 자동사냥 같은 기능은 특정 규칙에 따라 NPC나 캐릭터가 자동으로 행동을 선택하고 수행하도록 구현됩니다.
이는 일종의 간단한 AI 시스템으로 볼 수 있으며, FSM이나 간단한 Behavior Tree를 사용하여 구현되는 경우가 많습니다.
이러한 시스템은 주로 플레이어가 게임에 직접 개입하지 않고도 진행할 수 있게 하기 위해 설계됩니다.
현업에서는 프로젝트의 요구 사항, 개발자의 경험, 프로젝트의 규모, 기술 스택 등 여러 요인을 고려하여 결정합니다.
대규모 프로젝트나 복잡한 NPC 상호작용이 요구되는 경우, Behavior Tree나 GOAP 같은 고급 시스템을 선호할 수 있습니다.
반면, 간단한 NPC 행동이 필요한 경우 FSM이나 간단한 Utility AI가 적합할 수 있습니다.
FSM (Finite State Machine)
FSM은 가장 기본적인 AI 행동 모델 중 하나로, 각 상태는 NPC의 행동을 나타내며, 이벤트나 조건에 따라 상태 전환이 일어납니다.
많은 게임에서 기본적인 NPC 행동 구현에 사용됩니다.
간단한 구현이 필요할 때는 직접 구현하기도 하며, 복잡하지 않기 때문에 대부분의 프로그래밍 언어로 쉽게 구현할 수 있습니다.
그러나 복잡한 NPC 행동을 모델링하기에는 한계가 있습니다.
Behavior Tree
보다 복잡한 NPC 행동을 구현할 때 사용되며, 트리 구조를 통해 상황에 따라 다양한 행동을 취할 수 있도록 합니다.
Behavior Tree는 FSM보다 유연하며 복잡한 시나리오에 적합합니다.
Unity 같은 게임 엔진에서는 Behavior Designer와 같은 플러그인을 사용하여 비주얼하게 행동 트리를 구성할 수 있으며, C++이나 C# 등에서는 BehaviorTree.CPP, Microsoft의 BT 구현 등 라이브러리를 사용할 수 있습니다.
Utility AI
각 행동에 점수를 매기고 가장 높은 점수를 가진 행동을 선택하는 방식입니다.
이 방식은 NPC에게 다양한 선택지를 제공하며 상황에 따라 최적의 행동을 할 수 있게 합니다.
이 역시 복잡한 NPC 행동에 사용될 수 있습니다. 아폴로니아(Apollonia)와 같은 라이브러리가 예시입니다.
GOAP (Goal Oriented Action Planning)
상태 기반의 계획을 통해 목표를 달성하는 행동을 계획합니다.
이 시스템은 특히 복잡한 상호작용이 필요한 게임에서 유용합니다.
ReGoap, Fluid Behavior Tree 등이 GOAP를 지원하는 라이브러리의 예입니다.
자동전투, 자동사냥 기능
자동전투나 자동사냥 같은 기능은 특정 규칙에 따라 NPC나 캐릭터가 자동으로 행동을 선택하고 수행하도록 구현됩니다.
이는 일종의 간단한 AI 시스템으로 볼 수 있으며, FSM이나 간단한 Behavior Tree를 사용하여 구현되는 경우가 많습니다.
이러한 시스템은 주로 플레이어가 게임에 직접 개입하지 않고도 진행할 수 있게 하기 위해 설계됩니다.
현업에서는?
현업에서는 프로젝트의 요구 사항, 개발자의 경험, 프로젝트의 규모, 기술 스택 등 여러 요인을 고려하여 결정합니다.
대규모 프로젝트나 복잡한 NPC 상호작용이 요구되는 경우, Behavior Tree나 GOAP 같은 고급 시스템을 선호할 수 있습니다.
반면, 간단한 NPC 행동이 필요한 경우 FSM이나 간단한 Utility AI가 적합할 수 있습니다.