Skip to content
/ HFSM2 Public
forked from andrew-gresyk/HFSM2

Hierarchical Finite State Machine Framework with Planning and Utility Support

License

Notifications You must be signed in to change notification settings

DonMathi/HFSM2

 
 

Repository files navigation

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
  • Clang 3.7, 3.8, 3.9, 4, 5, 6, 7

Tutorial

Check Wiki for basic usage and more info.


Feature Highlights

  • Permissive MIT License
  • Written in widely-supported modern(ish) C++14
  • Header-only
  • 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()
  • 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
  • Built-in logging support
  • Convenient, minimal boilerplate

3rd Party Libraries

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

Get Updates


Special Thanks

About

Hierarchical Finite State Machine Framework with Planning and Utility Support

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 99.2%
  • Other 0.8%