미치광이 병원에서 살아남기: 행동 트리 설계 가이드라인
개요
행동 트리가 제대로 작동하지 않거나 서브트리 설계가 지나치게 복잡해 보이나요? 이 페이지는 중요한 것에 집중하는 데 도움을 줍니다... 패딩 룸(정신병동)에 들어가지 않도록 말이죠.
참고: 이러한 대부분의 가이드라인은 시행착오를 통해 발전해 왔으며, 거의 전적으로 급증하는 복잡성(일명 '날아다니는 스파게티 괴물')을 피하기 위한 필요에 의해 작성되었습니다. 자유롭게 실험하고 여기에 여러분의 통찰력도 공유해 주세요!
행동(Behaviours) 관련 지침
- 생성자(constructor)를 최소화하세요: 오프라인 렌더링을 위해 행동을 인스턴스화할 수 있도록
- 하드웨어나 런타임 관련 초기화는 setup()에 넣으세요
- update() 메서드는 가볍고 논블로킹(non-blocking)이어야 합니다: 트리가 계속 동작할 수 있도록
- 단일 행동의 범위를 좁고 집중되게 유지하세요: 더 큰 재사용 가능한 개념은 서브트리(관용구)로 구현하세요
복합체(Composites) 관련 지침
- 새로운 복합체 생성을 피하세요: 이는 의사 결정 복잡성을 기하급수적으로 증가시킵니다
- 단순히 자동 채우기를 위해 서브클래스화하지 마세요: 대신 create_<xyz>_subtree() 라이브러리를 구축하세요
트리 관련 지침
- 트리를 설계할 때는 의미 없는 행동으로 대체하세요: 설명적인 이름, 복합체 유형에 집중하고 설계 과정을 가속화하기 위해 dot 그래프를 렌더링하세요(특히 협업할 때)
- 사전/사후 틱 핸들러와 방문자(visitors)가 모두 매우 가볍게 유지되도록 하세요
- 상위 수준의 의사 결정을 위한 좋은 틱-톡 속도는 약 1-500ms입니다
이러한 가이드라인을 따르면 행동 트리를 더 효과적으로 설계하고 관리할 수 있으며, 불필요한 복잡성을 피할 수 있습니다.