whyliuxing / HFSM2

Hierarchical Finite State Machine Framework with Planning Support

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

License: MIT Build status Build Status Gitter

HFSM2: High-Performance Hierarchical Finite State Machine Framework

Header-only heriarchical FSM framework in C++14, with fully statically-defined structure (no dynamic allocations), built with variadic templates.

Compiler Support

  • Visual Studio 14, 15, 16
  • GCC 5, 6, 7, 8, 9
  • Clang 3.7, 3.8, 3.9, 4, 5, 6, 7, 8, 9, 10

Documentation

Old Wiki docs are being upgraded and moved to the New GitBook.

In-line comment-based docs is an on-going effort.


Feature Highlights

  • Permissive MIT License
  • Written in widely-supported modern(ish) C++11
  • Header-only
  • Convenient, minimal boilerplate
  • Fully static, no dynamic allocations
  • Uses inline-friendly compile-time pylymorphism, no virtual methods were harmed
  • Type-safe transitions: FSM.changeTo<TargetState>()
  • 100% NoUML-compliant
  • Hierarchical, with a selection of composite (sub-machine) and orthogonal regions
  • Gamedev-friendly, supports explicit State::update()
  • Also supports traditional event-based workflow with State::react()
  • AI-friendly with Dynamic planning support
  • Utility theory support (both max score and ranked weighted random)
  • Scaleable, supports robust state re-use via state injections
  • Debug-assisted, includes automatic structure and activity visualization API with #define HFSM_ENABLE_STRUCTURE_REPORT
  • Serializable, with activity and transition history support
  • Built-in logging support

3rd Party Libraries

  • Catch2 unit testing framework
  • XoShiRo pseuto-random number generators

Get Updates


Get In Touch

Please share your comments and suggestions on:


Special Thanks

About

Hierarchical Finite State Machine Framework with Planning Support

License:MIT License


Languages

Language:C++ 99.4%Language:CMake 0.5%Language:Python 0.2%