[자료구조] 59. 행동 트리 (Behaviour Tree)

Connected Brain·2025년 5월 16일

면접 질문 대비

목록 보기
59/60

행동 트리 (Behaviour Tree) 에 대해 설명해주세요.

행동 트리 (Behaviour Tree)

  • 캐릭터의 행동을 제어하기 위한 규칙으로 구성된 트리
  • 루트에서 부터 시작해 현재 조건에 맞는 행동을 결정

주요 구성 요소

1. 컴포지트 노드 (Composite Nodes)

  • 여러 자식 노드의 실행 흐름을 제어합니다.
  1. Sequence (순서): 자식 노드를 왼쪽에서 오른쪽 순서로 실행합니다. 모든 자식 노드가 성공해야 자신도 성공(Success)을 반환합니다. 하나라도 실패(Failure)하면 즉시 자신도 실패를 반환하고 멈춥니다. (AND 논리와 유사)
  2. Selector (선택자): 자식 노드를 왼쪽에서 오른쪽 순서로 실행합니다. 하나라도 성공하면 즉시 자신도 성공을 반환하고 멈춥니다. 모든 자식 노드가 실패해야 자신도 실패를 반환합니다. (OR 논리와 유사)
  3. Parallel (병렬): 모든 자식 노드를 동시에 실행합니다. 특정 조건(예: n개 이상 성공 시 성공)에 따라 결과를 반환합니다.

2. 데코레이터 노드 (Decorator Nodes)

  • 하나의 자식 노드를 가지며, 자식 노드의 실행 결과를 변경하거나 반복 실행하는 등의 추가 기능을 부여합니다.

예: 조건부(Conditional) 노드 (특정 조건이 만족될 때만 자식 실행), 반복(Repeater) 노드 (자식 노드를 여러 번 실행), 반전(Inverter) 노드 (자식 노드의 성공/실패 결과를 반전) 등.
Conditional Aborts와 같은 기능도 데코레이터나 컴포지트 노드의 속성으로 구현될 수 있습니다

리프 노드 (Leaf Nodes)

  • 더 이상 자식 노드를 가지지 않는 맨 끝 노드입니다. 실제 행동을 수행하거나 상태를 확인하는 역할을 합니다.
  1. Action 노드: 특정 행동(예: 이동, 공격, 대기)을 수행합니다. 행동이 완료되면 성공 또는 실패를 반환합니다.
  2. Condition 노드: 특정 조건(예: 적이 보이는가?, 체력이 낮은가?)을 확인하고, 조건 만족 시 성공, 아니면 실패를 반환합니다.

장단점

  • 트리를 구성하는 노드의 조합을 통해 다양한 행동을 구현할 수 있음
  • 또한 각각의 노드가 행동 조건과 실제 행동을 포함하기 때문에 행동 패턴을 직관적이게 파악할 수 있음
  • 그러나 지나치게 복잡한 행동 트리는 최적화에 불리하고, 오히려 직관성을 해칠 수 있음

0개의 댓글