
高性能分层有限状态机
C++11 中的仅标头分层 FSM 框架,具有完全静态定义的结构(无动态分配),使用可变参数模板构建。
编译器支持
- Visual Studio: 2015、2017、2019、2022
- 海湾合作委员会: 8、9、10、11、12、13
- 海湾合作委员会(ARM): 9
- 叮当声: 6、7、8、9、10、11、12、13、14、15
- 苹果铿锵: 14
快速入门
参见
- HFSM2 UPlugin :HFSM2 库的虚幻引擎插件
- FFSM2 :高性能平面有限状态机
- FFSM2 UPlugin :FFSM2 库的虚幻引擎插件
- HFSM Mono :用于 HFSM2 和 FFSM2 库的等宽位图 Unicode 字体
文档
功能亮点
- 宽松的MIT 许可证
- 用广泛支持的现代 C++11 编写
- 仅标头
- 方便、最少的样板
- 完全静态,无动态分配
- 使用内联友好的编译时多态性,不使用虚方法
- 类型安全转换:带有可选负载的
FSM.changeTo<TargetState>() - 使用
HFSM2_ENABLE_*宏进行灵活配置 - 可扩展,通过状态注入支持稳健的状态重用
- 分层的,具有复合(子机器)和正交区域的选择
- 游戏开发友好,支持显式
State::update() - 还通过
State::react()支持传统的基于事件的工作流程 - 检查任何内容:以前和当前的转换、状态激活状态等等!
- 游戏人工智能友好,支持动态规划
- 效用理论支持(最高分和排名加权随机)
- 可序列化,具有活动和转换历史记录支持
- 调试辅助,包括带有
#define HFSM_ENABLE_STRUCTURE_REPORT的自动结构和活动可视化 API - 内置日志记录支持
第三方库
- doctest单元测试框架
- XoShiRo伪随机数生成器
联系我们
- 推特: @andrew_gresyk
- 不和谐: HFSM.dev
- 吉特: andrew-gresyk/HFSM2
特别感谢
- 亚历山德罗斯克0
- 凯西·桑切斯
- 迪尤戈
- 凯文·格林
- 凯尔德·马蒂亚斯·彼得森
- 刘柏文
- 迈赫迪·豪什曼德
- 先生
- 菲尔·纳什
- 罗曼·切米纳德
- 绍彭格拉斯
- 特里斯坦·布林德尔
- C++::伦敦聚会
- Splash Damage 的编程社区