Behavior Tree Tick
조건을 먼저 좁히고 성공한 행동만 실행한다
비헤이비어 트리는 루트에서 시작해 컴포지트가 자식 순서를 정하고, 데코레이터가 실행 허용 여부를 검사한 뒤, 태스크가 실제 행동을 수행합니다. 서비스는 판단에 필요한 블랙보드 값을 주기적으로 갱신합니다.
판단 단위
- Selector
- 성공하는 첫 대안을 선택
- Sequence
- 모든 단계가 성공해야 통과
- Task
- 행동 후 Success 또는 Fail 반환
| 노드 역할 | 평가 기준 | 성공 시 | 실패 시 |
|---|---|---|---|
| Root | 비헤이비어 트리의 시작점 | 첫 컴포지트로 판단을 넘김 | 트리 실행 상태를 점검 |
| Selector | 자식을 우선순위 순서로 검사 | 첫 성공 행동에서 멈춤 | 다음 대안을 계속 검사 |
| Sequence | 단계를 순서대로 모두 실행 | 다음 단계로 진행 | 즉시 실패를 부모에게 반환 |
| Decorator | 사정거리, 체력, 쿨다운 조건 확인 | 붙은 하위 트리 실행 허용 | 그 행동 전체를 건너뜀 |
| Service | 블랙보드 값을 주기적으로 갱신 | 판단에 최신 값을 제공 | 오래된 값으로 분기할 위험 |
| Task | Move To, Attack, Wait 같은 실제 행동 | 부모 컴포지트에 Success 반환 | 부모 컴포지트에 Fail 반환 |
- 01 Root 진입 AI Controller가 트리 틱을 시작합니다.
- 02 Service 갱신 TargetActor, Health 같은 블랙보드 값을 새로 씁니다.
- 03 Decorator 검사 거리, 시야, 쿨다운 조건으로 실행 가능성을 좁힙니다.
- 04 Composite 결정 Selector는 대안을 고르고 Sequence는 절차를 검증합니다.
- 05 Task 실행 행동 결과를 Success 또는 Fail로 부모에게 돌려줍니다.
공격 분기
플레이어 감지와 사정거리 데코레이터가 동시에 참일 때만 공격 태스크로 들어갑니다.
순찰 분기
높은 우선순위 행동이 모두 실패하면 Selector가 낮은 우선순위의 순찰 행동을 선택합니다.
실패 지점
Sequence는 중간 조건 하나만 실패해도 나머지 태스크를 실행하지 않으므로, 실패한 노드가 디버그 시작점입니다.