Behavior Designer / 비헤비어 트리 BehaviorTree

 

# 유니티 에셋스토어 링크

https://prf.hn/click/camref:1101l7zGS/destination:https://assetstore.unity.com/packages/tools/visual-scripting/behavior-designer-behavior-trees-for-everyone-15277

 

Behavior Designer - Behavior Trees for Everyone | 비주얼 스크립팅 | Unity Asset Store

Get the Behavior Designer - Behavior Trees for Everyone package from Opsive and speed up your game development process. Find this & other 비주얼 스크립팅 options on the Unity Asset Store.

assetstore.unity.com

 

 

#. 어떤 에셋인가요?

BehaviorTree를 노드식으로 에디터에서 구성하고 실시간 디버깅도 가능한 프레임워크이다.
무려 10년동안 관리되어온 에셋으로 Odin과 함께 유니티에서 가장 유명한 에셋들 중 하나라고 할 수 있다.

주요 기능은 다음과 같다.
- 수십개가 넘는 기본 제공 노드
- 소스코드 제공, 기본 제공되는 노드들도 수정 가능 / 커스텀한 노드들 손쉽게 제작 가능
- 실시간으로 노드 진행상황 디버깅 가능

 

#. 개인 평가

이전 프로젝트에서 BehaviorTree는 직접 코드로 구현하는 방식을 사용하였다. 
코드로 구현하면 각 노드들이 클래스로 어디서사용하는지 레퍼런스 찾기 편한 장점은 있지만
프로그래머만 수정이 가능하고, 실시간 흐름을 파악하기 힘들어서 디버깅이 어렵다는 단점이 존재했다.

이번 프로젝트는 Behavior Designer를 R&D 중인데 의외로 사용법도 간단해서
비헤비어 트리의 개념을 아는 사람이라면 하루이틀이면 금방 적응 가능하다.

 

#. 주의할 점?

가끔 에디터 버그가 있는데, I2Localizaion의 ScriptableObject 설정값을 조작하다가 드롭다운 메뉴가 아무것도 보이않게된다. 인스펙터탭을 Service등으로 탭 전환했다가 다시 돌아오면 해결된다.
현재 버전에서는 Resource폴더의 ScriptableObject에서 모든 설정을 하지만, 구 버전에서는 Prefab에서 설정했다고함. 문서에서 혼용되어 설명하는 경우가 있다.

 

#. 사용법

역시 문서화가 잘 되어있으니 문서와 영상을 참고할 것.

https://opsive.com/support/documentation/behavior-designer/overview/

 

간단하게 설명하자면,

다음과 같이 특정 오브젝트에 Behavior Tree 컴포넌트를 붙여준다.

기본적으로 별도의 파일이 생성되지 않으며 해당 컴포넌트에 바로 Serialize가 된다.

파일형식으로 재사용하고 싶다면 노드를 제작한 후 익스포트를 하면 된다.

 

익스포트한 파일은 스크립터블 오브젝트이기 때문에 다시 복사하거나 수정이 가능하다.

 

창이 열리면 빈 공간에서 스페이스바를 누르거나 좌측상단의 Task 탭에서 노드를 선택해서 생성할 수 있다.

스크롤바의 크기를 보면 기본제공 노드가 꽤 된다는 것을 확인 할 수 있다. 

노드를 생성하고 연결한다.

 

재생해보면 원하는대로 2초뒤에 로그가 찍히게 된다.

 

각 노드를 우클릭해보면 스크립트를 직접 수정하거나 스크립트의 위치를 Ping 찍어서

복사해서 새로운 노드를 만들면 된다.

 

제공하는 클래스를 상속받기만하면 목록에는 자동으로 나타난다.

 

# 마치며..

기존에 비헤비어 트리를 구현해본 사람이라면 여기까지만 알아도 바로 사용이 가능할 것이다.

 

좀 더 확장해서 기능들을 잘 쓰고싶다면

Behavior Designer의 내부 변수를 외부에서 접근하는 하는 함수들과 SharedVariable로 노드들 간 변수를 공유하는 방법,

VariableSyncronizer로 Behavior Designer와 다른 스크립트 간의 변수를 동기화 하는 부분들이 좀 흥미로우니 공식 문서를 좀 더 살펴보기 바란다.

 

# 애드온 

- 기능을 확장하기 위해 추가 애드온들을 제공한다.

- Movement (이동 관련), Formation (전술 대형), Tactics (방어, 포위 등)

- Movement 애드온은 유명한 에셋인 A* Pathfinding Project와 연계도 가능하다.

 

 

 

 

 

댓글

Designed by JB FACTORY