행동 트리는 노드 배치보다 Blackboard 키, 중단 범위, 갱신 주기, 실행 결과가 맞물릴 때 안정해집니다.
TargetActor, LastKnownLocation처럼 노드가 읽는 값의 의미를 고정합니다.
Self, Lower Priority, Both 중 현재 행동을 어디까지 멈출지 정합니다.
시야 확인, 거리 계산, 상태 갱신을 필요한 간격으로만 실행합니다.
성공, 실패, 진행 중 상태를 명확히 남겨 디버깅 가능한 행동으로 만듭니다.
| 축 | 좋은 기준 | 흔한 문제 | 확인 증거 |
|---|---|---|---|
| Blackboard | 키 이름과 타입이 노드 의도와 맞고, 값의 소유자가 분명합니다. | Target, Location 같은 넓은 이름이 여러 의미로 재사용됩니다. |
ai.blackboard에서 값 변화가 설명됩니다.
|
| Decorator | 조건이 바뀌면 필요한 브랜치만 재평가됩니다. | Abort 범위가 커서 이동과 공격이 자주 끊깁니다. | Behavior Tree Debugger에서 중단 지점이 보입니다. |
| Service | 감지, 거리, 상태 갱신은 주기와 캐시 기준이 있습니다. | 모든 AI가 매 틱 같은 계산을 반복합니다. | Profiler와 Visual Logger가 갱신 비용을 보여줍니다. |
| Task | 입력 키, 실행 결과, 실패 조건을 반환값으로 드러냅니다. | 커스텀 작업 내부 부작용 때문에 실패 원인이 숨습니다. | 실패 시 Blackboard 값과 이동 결과가 함께 남습니다. |
상위 노드는 목표를 말하고, 하위 노드는 조건과 행동을 분해해야 합니다.
먼 AI는 인지 갱신과 EQS 호출을 낮은 빈도로 옮깁니다.
AIDebugger, Blackboard, Visual Logger를 함께 보며 원인을 좁힙니다.