urosidoki/htn_planner
Ahead-of-time compiled HTN planner and C++ SDK for game AI.
해결하는 문제
게임 AI는 목표를 달성하기 위해 일련의 행동을 결정해야 하는 경우가 많습니다. 계층적 작업 네트워크 (HTN) 플래닝은 상위 수준의 작업을 더 작고 구체적인 단계로 분해합니다. 이 라이브러리는 게임을 위한 HTN 플래너를 제공하며, 선언적 도메인 언어를 사전에 네이티브 C로 컴파일합니다. 즉, 런타임에 도메인 텍스트를 파싱할 필요 없이 플래너를 직접 실행하므로 성능 예측 가능성이 유지됩니다.
작동 방식
Lisp와 유사한 구문으로 도메인을 작성합니다. 예를 들어, 조건 (guard_on_duty)을 확인한 후 체크포인트로 이동하고 영역을 스캔하는 두 가지 기본 작업을 실행하는 순찰 메서드를 작성할 수 있습니다. 포함된 HTNTranslator 도구는 도메인을 검증하고 C 소스 코드를 생성합니다. 생성된 플래너는 게임에 컴파일되거나 별도의 모듈로 컴파일됩니다. 런타임에 플래너는 월드 상태와 호출 항목을 사용하여 실행할 기본 작업을 결정합니다. 엔진은 분해 API를 호출하고 결과 기본 작업을 읽어 하나씩 완료하는 방식으로 작업을 구동합니다. 통합 레이어 (HTNIntegration)는 이를 단순화하기 위한 후크와 플래닝 유닛을 제공합니다. 디버깅을 위해 계측된 빌드는 전체 분해 트리를 캡처하여 시각적으로 보여줄 수 있습니다.
대상 사용자
NPC, 분대 또는 AI 디렉터를 위해 구조화된 의사 결정이 필요한 게임 개발자. README에는 NPC 행동, 활성 계획 검증, 분대 조정 및 AI 디렉터 흐름과 같은 사용 사례가 나열되어 있습니다. Windows x64 및 Linux x64의 C++ 프로젝트를 위해 구축되었으며, Visual Studio 2022 및 Ubuntu 24.04의 GCC/Clang을 지원합니다. 빠르고 오프라인으로 컴파일된 플래너를 게임 엔진에 내장하려는 경우 이 라이브러리가 적합합니다.
주요 특징
- 도메인 소스를 네이티브 C로 컴파일하므로 런타임이 빠르고 파싱 오버헤드가 없습니다.
- 검증 및 C 코드 생성을 위한 명령줄 번역기 (HTNTranslator)를 포함합니다.
- 플래너 후크, 플래닝 유닛 및 월드 상태 데이터베이스를 갖춘 C++ 통합 레이어를 제공합니다.
- SDL/ImGui 시각적 데모와 생성된 실행 디버거가 함께 제공됩니다.
- 에디터 (HTNEditor), 언어 서버 (HTNLanguageServer) 및 VS Code 확장을 제공합니다.
- 생성된 도메인 모듈의 핫 리로드를 지원합니다.
- CMake 통합이 포함된 Windows 및 Linux용 패키지 가능한 SDK.
- 컴파일러, 런타임, 통합 및 ABI 검증을 포함하는 테스트 스위트로 검증되었습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트