BehaviorTree.CPP 버전 3과 버전 4의 주요 차이 (Key Differences Between BehaviorTree.CPP Version 3 and Version 4)

BehaviorTree.CPP 버전 3과 버전 4의 주요 차이 (Key Differences Between BehaviorTree.CPP Version 3 and Version 4)

1. 개요

BehaviorTree.CPP 4.x는 3.x 대비 스크립트 엔진, 새로운 노드 상태, 개선된 포트 시스템 등 다수의 중요한 변경을 도입하였다. 본 절에서는 두 버전 간의 주요 차이를 정리한다.

2. 주요 차이 비교

기능버전 3.x버전 4.x
XML 포맷BTCPP_format="3"BTCPP_format="4"
노드 상태SUCCESS, FAILURE, RUNNING, IDLE+ SKIPPED 추가
스크립트 속성미지원_skipIf, _failureIf, _while, _onSuccess
SkipUnlessUpdated미지원지원
새 데코레이터기본 세트+ RunOnce, Delay, KeepRunningUntilFailure 등
포트 시스템기본 포트개선된 포트 (자동 변환, 타임스탬프 추적)
블랙보드기본 기능항목별 시퀀스 번호, 자동 변환
서브트리기본 지원개선된 포트 리매핑
Switch 노드미지원SwitchNode 지원

3. SKIPPED 상태

4.x에서 도입된 SKIPPED 상태는 _skipIf, SkipUnlessUpdated 등에 의해 노드가 실행되지 않았음을 나타낸다. SequenceFallback에서 SKIPPED 노드를 건너뛴다.

4. 스크립트 엔진

4.x에서는 모든 노드에 스크립트 속성을 적용할 수 있다.

<!-- 4.x 전용 -->
<Action ID="Navigate"
        _skipIf="goal_reached == true"
        _onSuccess="nav_done = true"/>

5. 마이그레이션 시 고려 사항

3.x에서 4.x로 마이그레이션 시:

  • XML 포맷 버전을 "4"로 변경
  • 새로운 SKIPPED 상태의 처리 확인
  • 사용자 정의 노드의 인터페이스 호환성 확인
  • 새로운 기능(스크립트, SkipUnlessUpdated)의 활용 검토

6. 참고 문헌

  • BehaviorTree.CPP 공식 문서. https://www.behaviortree.dev/
  • BehaviorTree.CPP 마이그레이션 가이드. https://www.behaviortree.dev/migration

버전날짜변경 사항
v0.12026-04-05초안 작성