BT와 FSM을 활용해 몬스터 AI 구현
349
1 asked
Behaviour Tree Node와
해당 강의에서 사용된 FSM StateMachine을 활용해 몬스터 AI를 구현하려고 합니다
몬스터의 큰 동작같은 경우 BT에 맡기고
세부적인 동작들을 FSM으로 제어하는것이 좋을까요?
BT
├── 상황판단
│ │ ├── TargetRange→ AttackAction << FSM 사용
│ └── Patrol
Answer 2
1
수강해주셔서 감사합니다.
기본적으론 말씀하신대로가 맞습니다.
모든 세부 동작을 FSM으로 구현할 필요는 없구요, FSM은 Skill처럼 동작이 순차적으로 진행되는 Sequence를 이룰 때 활용하면 좋습니다.
전체 로직과 단발적 동작들은 BT와 Node가 제어하되, 상태에 대한 제어와 Sequence에 대한 제어는 FSM에 맡기는게 좋습니다.
BT
├ 조건 (범위 안에 적이 있나?) ─ 조건 (Entity가 Idle 상태인가?) ─ Skill 사용 (SkillSystem.Use)
────────────├ Patrol (단발적 동작)────├ 스킬 사용 완료까지 대기
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. Lavin님.
Behaviour Tree(BT)와 Finite State Machine(FSM)을 결합하여 몬스터 AI를 구현하는 것은 매우 효과적인 접근 방식입니다. 두 가지 시스템의 장점을 살릴 수 있으며, 각각의 역할을 명확하게 구분하여 설계할 수 있습니다.
제안하는 AI 구조:
Behaviour Tree(BT) 활용:
- BT는 몬스터의 상위 레벨의 행동, 즉 상황 판단과 같은 크고 복잡한 로직을 관리하기에 적합합니다.
- 예를 들어, “TargetRange”와 “Patrol”과 같은 큰 동작들을 BT의 노드로 관리할 수 있습니다. 이러한 노드들은 몬스터가 어떤 상황에 처해 있는지를 판별하고, 어떤 행동을 취할지 결정하는 역할을 합니다.
- BT는 몬스터의 상위 레벨의 행동, 즉 상황 판단과 같은 크고 복잡한 로직을 관리하기에 적합합니다.
Finite State Machine(FSM) 활용:
- FSM은 각 행동 내에서의 세부적인 모델링에 적합합니다. 즉, 특정 행동이 결정된 후 그 행동의 세부적인 동작(예: “AttackAction”)을 관리하는 데 사용됩니다.
- FSM을 사용하면, “AttackAction” 내에서의 상태 전환(예: 공격 준비, 공격 수행, 공격 종료 등)을 효율적으로 제어할 수 있습니다.
- FSM은 각 행동 내에서의 세부적인 모델링에 적합합니다. 즉, 특정 행동이 결정된 후 그 행동의 세부적인 동작(예: “AttackAction”)을 관리하는 데 사용됩니다.
추천 자료 및 참고 링크:
- BT와 FSM을 활용한 AI 사례
- 애니메이션과 상태 머신을 활용한 캐릭터의 공격 구현 방법 등의 내용이 포함되어 있습니다.
- 애니메이션과 상태 머신을 활용한 캐릭터의 공격 구현 방법 등의 내용이 포함되어 있습니다.
러닝 커브가 있을 수 있지만, BT와 FSM을 결합하여 사용하는 방식은 AI의 이해와 제어를 더 체계적이고 모듈화할 수 있게 해줍니다. 이러한 접근은 특히 복잡한 행동 패턴이 요구되는 게임에서 매우 유용할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Indicator와 SelectionAction 및 SearchAction 간의 관계에 대해 질문있습니다.
0
70
2
ChargingState에서 질문이 있습니다.
0
49
1
Effect.GetData 함수 질문있습니다.
0
45
2
CanTransitionToSelf 질문 있습니다.
0
53
2
Stat의 MaxValue에 관하여 질문이 있습니다.
0
42
1
Stat vs StatScaleFloat
0
75
4
애니매이션 버그가 있는것 같습니다.
0
65
2
StatsOverride질문이 있습니다.
0
50
2
SetBonusValue함수 질문있습니다.
0
46
2
오늘 수강시작한 취준생입니다.
0
49
1
사소하지만 에디터 관련 질문있습니다
0
69
1
스킬시스템을 데이터 테이블화 하는 법에 대해 감이안잡혀서 질문드립니다.
0
143
2
TargetSearcher에 대해서 질문이 있습니다
0
52
1
돌진해서 몸박을하면 피격자를 날리면서 데미지를 입히는 스킬은 이 시스템에서 어떻게 만들 수 있을까요??
0
116
2
스킬 관련 질문입니다
0
110
2
통일된 Stat을 사용하지 않고 모듈화 방식으로 Stats를 만드신 이유가 궁금합니다.
0
152
1
Effect에 기능 확장에 대해서 질문이 있습니다.
0
149
2
SkillData 구조체 질문
0
122
1
스킬트리 저장 질문입니다
0
135
2
MonoStateMachine을 만든 이유가 잘 이해가 가지 않습니다.
0
128
1
근접 콤보 공격을 만들고 싶습니다.
0
153
1
하나의 스킬 내에서 타겟, 이펙트가 여러번 바뀌게 하는 방법이 궁금합니다.
0
189
1
올해에 예정된 새로운 강의가 있으신지요?
0
114
2
스킬트리 질문입니다
0
152
3

