개인 프로젝트 준비를 위해 당분간 TIL 작성은 간결하게 진행하겠다.
대신 이번 프로젝트도 마찬가지로 제작일지를 동시에 작성 예정.
기본적으로 코드로 복습 예정인데
예시 코드는 기존과 같이 비공개로 업로드 예정.
Behavior Tree에 대해 알아보고
유니티에서 지원하는 Unity Behavior - Behavior Graph에 대해 알아보자.
나무 모양의 계층적 구조를 가지며, 루트 노드(Root Node) 에서 시작하여 자식 노드들을 순회하며 실행
유한 상태 머신 FSM의 문제점
따라서 대규모 시나리오 관리 등의 복잡한 사례에서 FSM의 대안으로 활용됨.
트리의 루트 노드부터 시작하여 로직을 한 번 순회하도록 지시하는 주기적인 신호
주로 Update 루프에 맞춰 프레임마다 발생.
Success, Failure, Running
BT의 노드는 크게 세 가지 범주로 나뉘며, 이들이 결합하여 복잡한 행동을 구현.
자식 노드의 실행 순서와 규칙을 정의하는 제어 노드.
아래 나열된 3가지 이외에 데코레이터 노드 등이 존재.
자식 노드들을 순서대로 실행, 하나라도 Failure를 반환하면 Failure를 반환하고 중단
자식 노드들을 순서대로 실행, 하나라도 Success를 반환하면 Success를 반환하고 중단
여러 자식 노드를 동시에 실행, 성공/실패 임계값(Threshold)을 설정하여
일정 수 이상의 자식이 성공/실패하면 자신도 해당 결과를 반환.
트리의 가장 아래(리프 노드)에 위치하며, AI가 실제로 수행하는 단일 행동을 정의
추후에 더 배울 예정.
유니티 6에 추가된 BT 구조 가시화 그래프

패키지매니저에서 Behavior 추가!

노드의 종류는 크게 2가지로 구성.
로직이 그래프를 따라 어떻게 흐를지 결정
기존 BT 노드에서
Composite Nodes (Sequence, Selector)
Decorator Nodes (Conditional, Loop) 와 흡사.
실제 행동(Task)을 정의
아래 Self 로 시작하는 액션을 통해
C# 스크립트와 쉽게 상호 작용하여 그래프와 데이터를 주고받을 수 있음.
기존 BT 노드에서 Leaf/Action Nodes와 흡사.
칠판!
그래프에서 사용되는 모든 변수를 중앙에서 관리하는 시스템
그래프 내의 모든 노드가 접근하거나 수정 가능
이번에도 기능에 치우친 내용이라
추후 복습을 통해 반복 숙달이 필요하다.