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 验证的测试套件测试。
相关
- 项目
- 项目
- 项目
- 项目