How urosidoki/htn_planner works
HTN Planner translates declarative task domains into native generated planners, which decompose top-level goals against a world state into primitive-task plans. The host engine, not the planner, schedules and executes those actions. The graph also captures the documented authoring/tooling, debugging, integration, and dynamic-domain branches. Connections among unsampled subsystems are included only where the README documents them; implementation details there remain unverified.
Main entry points: HTNPlannerHook.h Planner hook · HTNPlanningUnit.h Planning unit · HTNGeneratedPlanner.h Generated planner · main.cpp Translator CLI
Components 27
Domain compilation
- Domain source
- Translator CLI
HTNTranslator/src/main.cpp - Domain lexer
HTNFramework/src/Translator/HTNCompilerDomainLexer.cpp - Syntax parser
HTNFramework/src/Translator/HTNCompilerDomainSyntaxParser.cpp - Domain validation
HTNFramework/src/Translator/HTNCompilerDomainValidator.cpp - Compiler IR
HTNFramework/src/Translator/HTNCompilerIRBuilder.cpp - C generator
HTNFramework/src/Translator/HTNCCodeGenerator.cpp
Planning runtime
- Generated planner
HTNFramework/src/Translator/HTNGeneratedPlanner.h - World state
HTNFramework/src/WorldState/HTNWorldState.cpp - Call-term bindings
HTNFramework/src/Core/HTNCallTermBinding.h - Call-term registry
HTNFramework/src/Core/HTNCallTermRegistry.h - Interned symbols
HTNFramework/src/Core/HtnSymbol.h - Task representation
HTNFramework/src/Core/HTNTask.h - Execution debugger
HTNFramework/src/Translator/HTNGeneratedDebugger.h
Authoring and tools
- Domain editor
HTNEditor/src/main.cpp - Language server
HTNLanguageServer/src - VS Code client
HTNVSCode/extension.js
Engine integration
- Database hook
HTNIntegration/src/Hook/HTNDatabaseHook.h - Planner hook
HTNIntegration/src/Hook/HTNPlannerHook.h - Planning unit
HTNIntegration/src/Hook/HTNPlanningUnit.h - Primitive-task plan
HTNIntegration/src/Hook/HTNGeneratedPlanResult.h - Runtime bridge
HTNRuntimeBridge/src/HTNRuntimeBridge.cpp
Examples and extensions
- Visual planner demo
HTNDemo/src/main.cpp - NPC simulation
HTNDemo/src/AI/AIHTNDemoWandererAgent.cpp - Hot-reload example
HTNHotReloadDemo/src/HTNHotReloadDemo.cpp
Other components
- Domain author
- Game engine
Connections 28
- Domain author → Domain source: writes
README.md - Domain source → Translator CLI: translated by
README.md - Translator CLI → Domain lexer: starts compilation
README.md - Domain lexer → Syntax parser: tokenizes for
README.md - Syntax parser → Domain validation: validates through
README.md - Domain validation → Compiler IR: lowers into
README.md - Compiler IR → C generator: feeds
README.md - C generator → Generated planner: emits C for
README.md - Generated planner → Planner hook: executes via
README.md - Game engine → Planning unit: requests decomposition
README.md - Planning unit → Planner hook: delegates planning
HTNIntegration/src/Hook/HTNPlanningUnit.h - Planning unit → Database hook: uses database
HTNIntegration/src/Hook/HTNPlanningUnit.h - Database hook → World state: owns state
HTNIntegration/src/Hook/HTNDatabaseHook.h - Planner hook → World state: plans against
HTNIntegration/src/Hook/HTNPlannerHook.h - Planner hook → Generated planner: dispatches to
HTNIntegration/src/Hook/HTNPlannerHook.h - Planning unit → Primitive-task plan: returns plan
HTNIntegration/src/Hook/HTNPlanningUnit.h - Primitive-task plan → Game engine: engine executes
README.md - Game engine → Call-term bindings: binds functions
README.md - Call-term bindings → Call-term registry: registers in
HTNFramework/src/Core/HTNCallTermBinding.h - Planner hook → Call-term registry: uses bindings
HTNIntegration/src/Hook/HTNPlannerHook.h - Generated planner → Execution debugger: captures execution
README.md - Domain editor → Translator CLI: uses compiler tooling
- Domain author → Domain editor: authors in
README.md - VS Code client → Language server: language tooling
- Visual planner demo → Generated planner: runs compiled domains
README.md - Visual planner demo → Execution debugger: renders events
README.md - NPC simulation → Planning unit: plans through
HTNDemo/src/AI/AIHTNDemoWandererAgent.cpp - Hot-reload example → Runtime bridge: loads generated module