AI] Behavior Tree 행동 트리
Behavior trees for AI: How they work GAMASUTRA 포스팅
Behavior Trees Nodes Reference 언리얼 엔진
유한상태머신(Finite State Machine)이나 AI 프로그래밍에 사용되는 다른 시스템과 달리, 행동 트리는 계층적으로 구성된 트리로, 이를 통해 AI가 행동을 결정하여 Leaf 노드에서 다양한 명령을 수행합니다.
여러가지 노드로 구성되지만 일부 핵심 기능은 행동 트리의 모든 노드 유형에 공통적입니다.
Success (성공)
Failure (실패)
Running (진행중)
1번과 2번 노드는 부모노드에게 성공,실패를 반환하며 Running 노드의 경우 다음 탐색에서 다시 Success, Failure, Running의 반환을 하게 됩니다.
이 기능은 행동트리의 핵심입니다.
즉 독립된 노드는 모두 결과를 보장 받을 수 있고 이를 통한 흐름은 AI가 원하는 대로 작동하게 해줍니다.
이 공통된 기능과 더불어 중요한 3개의 노드 타입 Composite, Leaf, Decorator 가 있습니다.
Composite는 하나 이상의 자식을 가질 수 있으며 어떤 종류의 Composite인지에 따라 자식 노드를 순차 혹은 랜덤으로 순회하게 되며 종류에 따라 성공 여부를 반환하게 됩니다.
가장 일반적인 Sequence 노드는 순차적인 자식 접근과 한 자식이 실패하는 순간 실패를, 모든 자식이 성공하는 순간 성공을 리턴하게 됩니다.
Decorator는 오직 하나의 자식을 가지며 자식 노드의 결과를 변형하거나 반복하는 등의 역할을 하게 됩니다.
예를 들어 Inverter라는 Decorator는 자식 노드의 결과를 반전하여 리턴하는 역할을 합니다.
Leaf는 최하위 노드로 자식을 가질 수 없지만 가장 강력한 노드로 실제 게임에 필요한 로직(걷기, 공격 등)이 담겨있습니다.
Node
모든 예시가 아닌 몇가지 예시만 적었습니다. 또한 다른 방식으로 응용될 수 있습니다.
Composite
Sequence
순차적으로 자식을 탐사하여 자식 노드에서 Failure가 반환되는 즉시 Failure를 반환, 모든 자식이 Success되면 Success를 반환하게 됩니다.
Selector
순차적으로 자식을 탐사하여 자식 노드에서 Success가 반환되는 즉시 Success를 반환, 모든 자식이 Failure되면 Failure를 반환하게 됩니다.
Parallel
모든 자식 노드가 병렬로 실행됩니다.
Decorator
Condition
조건에 따라 자식을 실행하거나 실패를 반환합니다.
Inverter
자식의 결과를 반대로 바꿔서 반환합니다.
loop
일정 시간 or 횟수 동안 자식을 반복 실행합니다.
Action
Walk
플레이어 이동 명령
Attack
공격 명령
search B.T.
다른 Behavior Tree 탐색
Black Board
행동 트리의 데이터 저장을 맡고 있는 장소로 AI개체 각각이 하나의 BlackBoard를 가지고 있어 행동 트리 내에서 필요한 데이터를 사용할 수 있습니다.
또한 분대 전투, 협력 활동을 위해 다수의 AI개채가 하나의 BlackBoard를 추가로 공유하여 AI들끼리의 통신을 목적으로도 사용하게 됩니다.
✅ @leeyoosung, I gave you an upvote on your first post! Please give me a follow and I will give you a follow in return!
Please also take a moment to read this post regarding bad behavior on Steemit.
Congratulations @leeyoosung! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word
STOPDo not miss the last post from @steemitboard!
Participate in the SteemitBoard World Cup Contest!
Collect World Cup badges and win free SBD
Support the Gold Sponsors of the contest: @good-karma and @lukestokes
Congratulations @leeyoosung! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!