비헤이비어 트리 사용자 가이드

비헤이비어 트리와 비헤이비어 트리 관련 에셋의 생성 및 편집 방법을 설명합니다.

비헤이비어 트리 에셋 생성

이 섹션에서는 언리얼 엔진 5에서 다양한 비헤이비어 트리(Behavior Tree) 에셋을 생성하는 방법을 설명합니다. 

비헤이비어 트리 생성

비헤이비어 트리 는 본질적으로 AI의 프로세서로서, 각종 결정을 내리고 그 결과를 바탕으로 다양한 분기를 실행할 수 있습니다. 비헤이비어 트리콘텐츠 드로어(Content Drawer) 안에서 다음 방식으로 생성합니다. 

+추가(+Add) 버튼을 클릭하고 고급 에셋 생성(Create Advanced Asset) 아래의 인공 지능(Artificial Intelligence)비헤이비어 트리(Behavior Tree) 를 선택합니다.

Click the Add button then under Create Advanced Asset select Artificial Intelligence and Behavior Tree

그러면 새 비헤이비어 트리 에셋이 콘텐츠 드로어 에 추가되며, 이름을 지을 수 있습니다.

The new Behavior Tree asset will be added to the Content Drawer where you can define its name

또는 우클릭 컨텍스트 메뉴에서 +추가 > 인공 지능 > 비헤이비어 트리 를 선택할 수도 있습니다. **

블랙보드 생성

블랙보드(Blackboard) 에셋은 AI의 두뇌로 생각할 수 있으며, 비헤이비어 트리 가 결정을 내리는 데 사용하는 키(Key) 값을 저장합니다.  블랙보드 에셋은 다음 방법으로 생성할 수 있습니다.

+추가(Add) 버튼을 클릭한 후 고급 에셋 생성(Create Advanced Asset) > 인공 지능(Artificial Intelligence) > 블랙보드 를 선택합니다.

Click the Add button, then under Create Advanced Asset select Artificial Intelligence and Blackboard

그러면 새 블랙보드 에셋이 콘텐츠 드로어 에 추가되어 원하는 대로 이름을 지을 수 있습니다.

The new Blackboard asset will be added to the Content Drawer which you can rename to your desired name

비헤이비어 트리 내부에 블랙보드를 생성하는 방법도 있습니다. 

툴바의 비헤이비어 트리 에디터 에서 새 블랙보드(New Blackboard) 버튼을 클릭합니다. 

Inside the Behavior Tree Editor from the Toolbar by clicking the New Blackboard button

이렇게 해도 콘텐츠 드로어 에 새 블랙보드 에셋이 생성됩니다. 

비헤이비어 트리 태스크 생성

태스크(Task) 는 특정 위치로 이동하거나 무언가를 향해 회전하는 등 AI가 취하게 하려는 '액션'입니다. 

최적화가 중요한 경우, 블루프린트 비헤이비어 트리 태스크를 네이티브 비헤이비어 트리 태스크로 변경하는 편을 고려하는 것이 좋습니다.

기존 태스크 를 사용할 수 있을 뿐 아니라, 자신만의 로직을 갖는 커스텀 태스크 를 생성할 수도 있습니다. 

비헤이비어 트리 에디터 내의 툴바에서 새 태스크(New Task) 버튼을 클릭합니다. 

Click the New Task button from the Toolbar inside the Behavior Tree Editor

그러면 태스크 로직을 제공할 수 있는 BTTask_BlueprintBase 클래스의 새 블루프린트 가 열립니다. 

This will open a new Blueprint of the BTTask_BlueprintBase class where you can provide your Task logic

콘텐츠 드로어비헤이비어 트리 에셋과 동일한 위치에 태스크 블루프린트(Task Blueprint) 가 생성됩니다. 

비헤이비어 트리 에디터 에서 새 태스크 를 생성할 때마다 콘텐츠 드로어 로 가서 에셋의 디폴트 이름 대신 다른 이름으로 변경하는 것이 좋습니다.

태스크 를 생성할 때 기존 비헤이비어 트리 태스크 를 드롭다운 메뉴에서 선택하여 기능을 상속받을 부모 클래스(Parent Class) 로 사용할 수 있습니다. 

You can use an existing Behavior Tree Task as the Parent Class to inherit functionality  by selecting it from the drop-down menu

비헤이비어 트리 데코레이터 생성

조건식으로도 알려져 있는 데코레이터(Decorator)비헤이비어 트리 에서 노드에 어태치하여 트리 내의 분기 또는 단일 노드가 실행 가능한지 결정하는 데 사용됩니다. 비헤이비어 트리 에는 사용할 수 있는 디폴트 데코레이터 가 일부 준비되어 있지만, 커스텀 데코레이터를 생성할 수도 있습니다.

비헤이비어 트리 에디터 내의 툴바에서 새 데코레이터(New Decorator) 버튼을 클릭합니다. 

Click the New Decorator button from the Toolbar inside the Behavior Tree Editor

그러면 데코레이터 로직을 제공할 수 있는 BTDecorator_BlueprintBase 클래스가 열립니다. 

This will open a new BTDecorator_BlueprintBase class where you can provide your Decorator logic

콘텐츠 드로어비헤이비어 트리 에셋과 동일한 위치에 데코레이터 블루프린트(Decorator Blueprint) 가 생성됩니다. 

비헤이비어 트리 에디터 에서 새 데코레이터 를 생성할 때마다 콘텐츠 드로어 로 가서 에셋의 디폴트 이름 대신 다른 이름으로 변경하는 것이 좋습니다.

데코레이터 를 생성할 때 기존 비헤이비어 트리 데코레이터 를 드롭다운 메뉴에서 선택하여 기능을 상속받을 부모 클래스 로 사용할 수 있습니다. 

You can use an existing Behavior Tree Decorator as the Parent Class to inherit functionality from by selecting it from the drop-down menu

비헤이비어 트리 서비스 생성

서비스(Service)컴포짓(Composite) 노드에 어태치되어 분기가 실행되는 동안 정의된 빈도로 실행됩니다. 이 노드는 종종 블랙보드 를 확인하고 업데이트하는 데 사용되며, 다른 비헤이비어 트리(Behavior Tree) 시스템의 전통적인 병렬(Parallel) 노드를 대체합니다. 디폴트로 사용할 수 있는 서비스 가 준비되어 있기는 하지만, 커스텀 서비스 를 생성하여 비헤이비어 트리 의 실행 방식을 결정하는 데 보조적으로 사용하는 경우가 많습니다. 

최적화가 중요한 경우, 블루프린트 비헤이비어 트리 서비스를 네이티브 비헤이비어 트리 서비스로 변경하는 것도 고려하는 것이 좋습니다.

비헤이비어 트리 에디터 내의 툴바에서 새 서비스(New Service) 버튼을 클릭합니다. 

Click the New Service button from the Toolbar inside the Behavior Tree Editor

그러면 서비스 로직을 제공할 수 있는 BTService_BlueprintBase 클래스가 열립니다. 

This will open a new BTService_BlueprintBase class where you can provide your Service logic

콘텐츠 드로어비헤이비어 트리 에셋과 동일한 위치에 서비스 블루프린트(Service Blueprint) 가 생성됩니다. 

비헤이비어 트리 에디터 에서 새 서비스 를 생성할 때마다 콘텐츠 드로어 로 가서 에셋의 디폴트 이름 대신 다른 이름으로 변경하는 것이 좋습니다.

서비스 를 생성할 때 기존 비헤이비어 트리 서비스(Behavior Tree Service) 를 드롭다운 메뉴에서 선택하여 기능을 상속받을 부모 클래스 로 사용할 수 있습니다. 

You can use an existing Behavior Tree Service as the Parent Class to inherit functionality from by selecting it from the drop-down menu

블랙보드 편집

보통은 블랙보드비헤이비어 트리 보다 먼저 생성하게 되는데, 비헤이비어 트리 가 결정을 내리는 프로세스에서 블랙보드 를 참조하기 때문입니다. 필요하다면 나중에 언제든지 를 추가할 수도 있습니다. 블랙보드 에셋은 콘텐츠 드로어 에서 에셋을 더블클릭하여 블랙보드 에디터 를 실행하는 방법으로 편집할 수 있습니다.

You can edit a Blackboard asset by double-clicking on the asset in the Content Drawer to open it up in the Blackboard Editor

블랙보드 가 할당된 비헤이비어 트리 를 편집하고 있는 경우, 창 우측 상단의 탭을 클릭하여 블랙보드 로 전환할 수 있습니다.

You can switch to the Blackboard by clicking the tab in the upper-right corner of the window

블랙보드 디테일(Blackboard Details) 패널에서 다른 블랙보드부모 로 할당하고 를 상속받을 수 있습니다.

In the Blackboard Details panel you can assign a different Blackboard as the Parent, inheriting Keys from it

블랙보드 창에서 새 키(New Key) 버튼을 클릭하여 를 추가할 수 있습니다.

You can add Keys by clicking the New Key button in the Blackboard window

로 저장될 수 있는 변수 타입에 대한 자세한 설명은 블루프린트 변수 를 참고하세요.

가 생성되면 블랙보드 디테일 패널에서 와 관련된 프로퍼티를 정의할 수 있습니다.

You can define properties associated with the Key in the Blackboard Details panel

프로퍼티

설명

엔트리 이름(Entry Name)

사용자 정의 키 이름입니다.

엔트리 설명(Entry Description)

해당 블랙보드 키에 대한 설명을 적을 수 있습니다.

키 타입(Key Type)

키를 생성할 때 정의되며, 오브젝트(Object)클래스(Class) 키는 특정 클래스 를 정의하는 추가적인 옵션을 제공합니다. 이를 통해 오브젝트(액터 등)에서 상속받는 모든 타입의 데이터를 저장할 수 있습니다.

동기화된 인스턴스(Instance Synced)

키가 블랙보드의 모든 인스턴스에서 동기화될지 여부를 결정하는 데 사용됩니다.

키의 이름을 변경 하거나 키를 삭제 하려면 를 우클릭하여 컨텍스트 메뉴를 열거나, 를 선택하고 F2Delete 를 누릅니다.

To Rename or Delete Key right-click a Key to bring up the context menu

클래스오브젝트 키의 경우 키 타입 옆의 작은 삼각형을 클릭하여 어떤 베이스 액터 클래스를 사용할지 정의할 수 있습니다.

For Class and Object Keys you can click the little triangle beside Key Type

열거형(Enum) 키의 경우 키 타입 옆의 작은 삼각형을 클릭하여 추가적인 프로퍼티를 설정할 수 있습니다.

For Enum Keys there are additional properties that can be set by clicking the little triangle beside Key Type

프로퍼티

설명

열거형 타입(Enum Type)

사용하도록 할당된 열거형입니다.

열거형 이름(Enum Name)

C++ 코드로 정의된 열거형 이름으로, 열거형 타입 에 할당된 에셋보다 우선합니다.

열거형 이름 유효 여부(Is Enum Name Valid)

열거형 이름 오버라이드가 유효하고 가능하며 활성화된 경우 설정합니다.

비헤이비어 트리 편집

비헤이비어 트리 를 편집하려면 비헤이비어 트리 에셋을 열어야 합니다. 

콘텐츠 드로어 에서 비헤이비어 트리 에셋을 더블클릭하여 비헤이비어 트리 모드(Behavior Tree Mode) 로 들어갑니다. 

Double-click a Behavior Tree asset in the Content Drawer to enter Behavior Tree Mode

또는 다음과 같이 비헤이비어 트리 모드 로 전환합니다.

비헤이비어 트리 에디터 우측 상단의 비헤이비어 트리 탭을 클릭합니다. 

Click the Behavior Tree tab in the upper-right corner of the Behavior Tree Editor

비헤이비어 트리 모드 로 전환하려면 현재 실행 중인 비헤이비어 트리 에셋이 있고, 전환 전에는 블랙보드 모드(Blackboard Mode) 였어야 합니다. 

블랙보드 할당

비헤이비어 트리블랙보드 에 액세스하려면 블랙보드 에셋을 할당해야 합니다. 

그래프의 루트(Root) 노드를 선택하거나 모든 노드의 선택을 취소한 후 디테일(Details) 패널에서 원하는 블랙보드 에셋(Blackboard Asset) 을 설정합니다. 

In the Details panel set your desired Blackboard Asset

블랙보드 를 할당한 후에는 블랙보드 패널이 관련된 블랙보드 키(Blackboard Keys) 로 업데이트됩니다.

The Blackboard panel will update with its associated Blackboard Keys

노드 작업

컴포짓 또는 태스크비헤이비어 트리 그래프에 추가하려면 그래프를 우클릭하여 컨텍스트 메뉴를 열고 원하는 노드를 선택하면 됩니다. 

Right-click the graph to bring up the context menu and select your desired node

비헤이비어 트리루트 노드에는 컴포짓 노드만 어태치할 수 있습니다.

또한 노드를 드래그하여 컨텍스트 메뉴에서 추가할 노드를 선택할 수도 있습니다. 

You can also drag off a node and select a node to add from the context menu

그래프에서 노드를 제거하려면 노드 한 개 또는 여러 개를 선택한 뒤 Delete 를 누르거나 우클릭하고 삭제(Delete) 를 선택합니다. 

To remove nodes from the graph select a node or nodes and press Delete or right-click and select Delete

노드를 서로 연결하려면 한 노드의 출력 핀에서 다른 노드의 입력 핀으로 좌클릭하고 드래그합니다. 

To connect nodes together left-click and drag from the output pin, to an input pin on another node

비헤이비어 트리 에서 노드를 연결하려면 오직 출력 핀에서 입력 핀으로만 연결해야 합니다. 입력 핀에서 출력 핀으로 연결할 수는 없습니다.

노드의 연결을 해제하려면 노드를 우클릭하거나 여러 노드를 선택하고 원하는 모든 핀 링크 끊기(Break All Pin Link) 를 선택합니다. 

To disconnect nodes right-click a node or define a selection of nodes and select your desired Break Link(s) method
모든 핀 링크 끊기 로는 핀이 연결된 링크 한 개나 여러 개를 끊을 수 있습니다. 다음 링크 끊기...(Break link to...) 는 지정된 노드로의 연결을 끊습니다. 

입력 핀이나 출력 핀을 Alt+좌클릭하여 연결을 끊을 수도 있습니다.

노드를 편집하려면 노드를 하나 선택하고 디테일 패널에서 프로퍼티를 조정하면 됩니다.

Select a node and in the Details panel you can adjust its properties

선택한 노드와 그 세팅을 복사하고 붙여넣을 수도 있습니다. 그러려면 노드를 한 개 선택하거나 선택 박스를 드래그하여 여러 개 선택하고 Ctrl+C(복사), Ctrl+V(붙여넣기)를 누르면 됩니다. 

To copy or paste a node select a node  then press ctrl+c to copy and ctrl+v to paste

노드 데코레이터 및 서비스

노드 컨텍스트 메뉴를 사용하여 데코레이터 또는 서비스비헤이비어 트리 그래프의 노드에 추가할 수 있습니다.

그러려면 컴포짓 또는 태스크 노드를 우클릭하고 노드에 추가하고 싶은 데코레이터 또는 서비스 를 선택합니다. 

To do this right-click a Composite or Task node then select the Decorator or Service you want to add to the node

노드에서 데코레이터 또는 서비스 를 제거하려면 데코레이터 또는 서비스 를 선택하고 Delete 를 누르거나 우클릭 컨텍스트 메뉴를 사용합니다. 

To remove a Decorator or Service from a node select a Decorator or Service then press the Delete key or use the right-click context menu

노드에 어태치된 데코레이터 또는 서비스 를 편집하려면 먼저 데코레이터 또는 서비스 를 선택하고 디테일 패널에서 원하는 프로퍼티를 조정할 수 있습니다. 

To edit a Decorator or Service attached to the node first select the Decorator or Service then you can adjust your desired properties in the Details panel

노드에 추가된 컴포짓 데코레이터 는 열어서 편집할 수 있습니다. 

컴포짓 데코레이터를 열려면 컴포짓 데코레이터 를 더블클릭하여 부울 값(True 또는 False)을 반환하는 그래프를 엽니다. 

이미지를 클릭하면 최대 크기로 볼 수 있습니다.

툴바에서 생성된 태스크 , 데코레이터 , 서비스블루프린트 에서 실행하여 편집할 수 있습니다.

커스텀 태스크 , 데코레이터 , 서비스 를 생성하고 그래프에 추가한 후에는 더블클릭으로 실행하여 편집할 수 있습니다. 

After creating a custom Task Decorator or Service and adding it to your graph double-click it to open it for editing

콘텐츠 드로어 에서도 모든 커스텀 태스크 , 데코레이터 , 서비스 를 실행할 수 있습니다.

커스텀 태스크 , 데코레이터 , 서비스콘텐츠 드로어 에서 더블클릭하면 블루프린트 에서 실행하여 편집할 수 있습니다. 

Double-click a custom Task Decorator or Service in the Content Drawer to open it in Blueprint for editing

또한 데코레이터 또는 서비스 를 복사하여 다른 노드에 붙여넣을 수도 있습니다.

데코레이터 또는 서비스를 선택한 뒤 Ctrl+C를 눌러 복사하고, Ctrl+V를 눌러 다른 노드에 붙여넣으면 됩니다. 

Select a Decorator or Service and press ctrl+c to copy and ctrl+v to paste onto another node

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소