-
Notifications
You must be signed in to change notification settings - Fork 0
Behavior Tree 개념
Seong Hyeok OH edited this page May 4, 2023
·
2 revisions
Reference:
- Behavior Tree를 알아봅시다 (linecorp.com)
- How to create a simple behaviour tree in Unity/C# | by Mina Pêcheux | Geek Culture | Medium
- Behavior tree (artificial intelligence, robotics and control) - Wikipedia
- How to create a simple behaviour tree in Unity/C# - Code
- ChatGPT
- 나름 복잡한 ai를 만들 수 있다
- 모듈화가 잘 되어 있어서 유지 보수 + 기능 추가가 쉽다
-
행동을 트리 구조로 기술함
- 트리 구조
-
깊이 우선 탐색
- (무식하게 말하자면 ) 왼쪽 -> 오른쪽
-
3가지 종류의 노드가 있음
- Root Node : 루트 노드
- Control Flow Node: 모든 Nodes between Root and Leaf
- Execution Node: Leaf Node - runs 'actions'
-
'탐색'의 결과는 3가지 상태가 있음 - 그리고 그 결과는 부모 노드에 전달함
- Success
- Failure
- Running
- 크게 두 가지 종류의 Flow Node가 있음
- Composite: 여러 자식 노드 Bunch Of Child
- Decorator: 자식 노드가 하나 Single Child, Condition Node
- 여러 개의 자식 노드를 가지고 있으며, 다음 두 가지 종류가 있다
- Selector: Or gate와 비슷하게 작동
- Sequence: And gate와 비슷하게 작동
-
Or 게이트와 비슷하게 작동함
-
자식 노드 중 하나가 'SUCCESS' 혹은 'RUNNING'을 반환 -> 부모 노드에게 'SUCCESS' 혹은 'RUNNING'을 반환
-
모든 자식 노드가 'FAILURE'를 반환 -> 부모 노드에게 'FAILURE' 반환
-
자식 노드의 결과가 어쨌던 간에 - 오른쪽으로 진행
-
'Running'을 받으면 다음 깊이 노드로 진행
-
And 게이트와 비슷하게 작동함
-
모든 자식 노드가 'SUCCESS' 반환 -> 부모 노드에게 'SUCCESS' 반환
-
자식 노드 중 하나가 'FAILURE' or 'RUNNING' 반환 -> 부모 노드에게 'FAILURE' or 'RUNNING' 반환
-
자식 노드가 'SUCCESS'를 반환해야만 오른쪽으로 진행 - 아님 State값 바로 반환
-
'Runnig'을 받으면 부모 노드로 돌아감
-
하나의 자식 노드를 가지고 있음
-
제어문 Condition으로 분류되기도 함
-
대표적인 조건식
- While
- If
- Loop
- Leaf Node
- 실제 액션을 수행하는 노드