AI Controller를 만들기 위해서는 먼저 Behavior Tree와 Blackboard를 생성해야 한다.
Blackboard에서는 키 값을 생성하고 해당 값들을 토대로 Behavior Tree에서 AI의 행동패턴을 구성한다.

Behavior Tree의 Root노드에서 Blackboard Asset에 만들어 둔 Blackboard를 넣게되면 해당 값들을 사용할 수 있게 된다.

먼저 Root노드는 Behavior Tree에서 가장 먼저 실행되는 노드이다. Tree의 시작은 Root에서 연결되는 노드로 하며 해당 노드는 하나의 자식노드만을 가질 수 있다.

Selector노드는 여러 개의 노드를 가질 수 있고, 왼쪽부터 오른쪽으로의 흐름을 가진다. 흐름대로 노드가 실행되는 도중 True값을 반환하는 노드를 만난다면 해당 노드를 실행하고 더이상 자식노드가 없다면 Root노드로 돌아간다.

Sequence노드는 Seletor노드와 마찬가지의 노드 흐름을 가진다. 허나 흐름대로 노드가 실행되는 도중 만나는 노드가 False값을 반환한다면 그 자리에서 실행을 멈춘다.

위 예시는 AIController의 하나의 예시이다.
다른 노드는 이후의 글에서 소개할 것이고, 해당 글에서는 노드의 흐름만 설명할 것이다.
먼저 Root에서 시작된 흐름은 아래 Selector노드와 연결된다. Selector노드 아래 노드는 AI가 주변을 탐색하며 Target을 찾는 것이다.
이후 왼쪽에 있는 Sequence노드가 실행된다. 해당 노드는 Target을 찾을 수 없을 때 True값을 반환하며, 아래 연결된 노드들을 실행하고 다시 Root노드로 돌아간다.
이 과정에서 Selector노드의 Detect를 통해 Target을 찾았다면 오른쪽에 연결된 노드가 실행된다.
해당 노드는 Player와의 거리가 공격을 할 수 있는 범위 내에 있는지 검사한다. 범위 내에 Player가 없다면 Move To노드를, 범위 내에 있다면 Attack노드가 실행된다.

만약 위처럼 Root노드 이후, Selector노드가 아닌 Sequence노드가 연결되었다고 가정해보자.
이는 첫 번째 실행에서는 Target의 값이 Blackboard에 없을 것이기에 정상적으로 실행이 될 것이다.
허나 Player를 인지하여 Target의 값이 전달되었다면 이후 실행에서 NoTarget을 포함하는 Sequence노드를 만나게 되면 False값을 반환받고, 해당 Tree가 실행을 멈추게 된다.
그렇다면 무조건 Selector노드를 사용하는 것이 좋다고 생각할 수도 있다. 허나 Selctor노드는 위에서 말했듯이 자식노드 중 하나의 노드라도 True값을 반환한다면 그 자리에서 Root노드로 돌아간다.

이와 같은 경우에서 사용이 되었을 때, Wait노드를 실행한 뒤, Root노드로 돌아가기에 이때는 Sequence노드를 사용해야 한다.