高效能分層有限狀態機
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 的程式設計社區