컴포짓(Composities) : 상태들의 시작점, 상태가 복귀, 실행 플로우에서 어떻게 행동하는지 정의한다.
Selector, Sequence, Simple Parallel 세 종류가 있다.
Behavior Tree : AI 캐릭터를 만들기 매우 유명한 도구 중 하나다.
계층적 FSM, 스케쥴링, Planning, Action Execution 등 개념이 결합되어 있다.
BT의 메인 요소 Task
Task는 복잡한 액션을 표현하는 서브트리로 구성
Task들은 동일한 기본 구조를 가짐 -> 하나의 task가 가동된 후 결과는 성공과 실패의 형태(boolean)로 출력
Task의 종류 3가지 Condition, Action, Composite
Condition : 조건에 대한 검사를 의미
ex) 적이 unit 반경 내에 존재 유무, LOS(Line of Sight) 검사, 캐릭터 상태(무기 보유, 상태치) 등 현재 캐릭터가 원하는 질의를 표현.
Action : 게임의 상태를 변경
ex) 애니메이션에 대한 액션 변경, 캐릭터 움직임, 캐릭터 내부 상태의 변경(자체 스텟이 올라가는 등), Audio 샘플의 플레이, 특정 AI 코드의 실행 등 실제 캐릭터의 변화에 대한 수행을 의미
Composite : Condition이나 Action은 BT에서 단말노드에 존재. 그 외 다른 비단말 노드는 Composite Task로 구성.
Composite는 Condition, Action 그리고 다른 Composite를 자식노드로 결합하는 역할을 한다.
Composite Task Type 종류 : Selector, Sequence, Parallel Task
Selector와 Sequence는 모두 순차적으로 자식 노드를 방문, 자식 노드 수행 완료시 결과값을 반환
결과값을 보고 계속 진행할지 멈출지 결정
Selector는 자식노드가 성공하면 바로 그 결과 반환, 하나의 자식노드가 실패시 바로 다음 자식노드로 이동
모든 자식노드 실패할 경우를 제외하면 성공 시점에서 실행을 멈춤
Sequence : 자식 노드가 성공하면 계속 순차 방문, 자식 노드 실패시 실행 중지
데코레이더는 객체지향설계에서 자주 언급되는 디자인 패턴 중 하나인 Decorator Design pattern과 같은 의미의 단어다.
즉, 기존 존재하는 class를 수정하지 않고 기능을 변경하기 위하여 class를 감싸서 목적을 달성하는 패턴이다.
class 변경없이 부가적인 기능을 덧붙일 수 있는 장점을 지님
데코레이터의 종류
- 필터 : 자식이 수행을 할지 말지 결정하는 데코레이터
쉽게 말해서 if의 기능을 수행한다.
서비스는 연결된 컴포짓이 활성화되어 있는 동안 계속 구동된다.
-> 주로 AI 상태 변경에 사용(항상 호출되기에)
Blackboard의 필요성
BT에서 Task와 Data를 함께 저장하면 효율성이 너무 떨어진다.
Data를 보관, 관리하는 친구를 만든다. 이를 blackboard라고 부른다.
'Unreal Engine 5 > MMORPG 개발' 카테고리의 다른 글
시간 흐름 제어 (2) | 2024.11.24 |
---|---|
Networking content (0) | 2024.11.24 |
언리얼 엔진 5 경로 관련 참고 사이트 (0) | 2024.10.03 |
Damage Indicator Object Pooling (0) | 2024.08.18 |
ue5 DataTable 구조체 제작 (0) | 2024.08.07 |