Machine à états finis hiérarchique haute performance
Framework FSM hiérarchique uniquement en en-tête en C++11, avec une structure entièrement définie de manière statique (pas d'allocations dynamiques), construite avec des modèles variadiques.
Prise en charge du compilateur
- Visual Studio : 2015, 2017, 2019, 2022
- CCG : 8, 9, 10, 11, 12, 13
- CCG (ARM) : 9
- Clang : 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
- PommeClang : 14
Démarrage rapide
- Exemple minimal
- Tutoriel étendu
Voir aussi
- HFSM2 UPlugin : plugin Unreal Engine pour la bibliothèque HFSM2
- FFSM2 : Machine à états finis plats haute performance
- FFSM2 UPlugin : plugin Unreal Engine pour la bibliothèque FFSM2
- HFSM Mono : Polices Unicode bitmap monospaces pour les bibliothèques HFSM2 et FFSM2
Documentation
Points forts des fonctionnalités
- Licence MIT permissive
- Écrit en C++11 moderne (ish) largement pris en charge
- En-tête uniquement
- Passe-partout pratique et minimal
- Entièrement statique, pas d'allocations dynamiques
- Utilise un polymorphisme de compilation convivial, aucune méthode virtuelle n'est utilisée
- Transitions de type sécurisé :
FSM.changeTo<TargetState>()
avec charges utiles facultatives - Configuration flexible à l'aide des macros
HFSM2_ENABLE_*
- Évolutif, prend en charge une réutilisation robuste de l'état via des injections d'état
- Hiérarchique , avec une sélection de régions composites (sous-machine) et orthogonales
- Compatible avec les développeurs de jeux, prend en charge
State::update()
explicite - Prend également en charge le flux de travail traditionnel basé sur les événements avec
State::react()
- Inspectez tout : les transitions précédentes et actuelles, l'état d'activation de l'état, et plus encore !
- Jeu compatible avec l'IA avec prise en charge de la planification dynamique
- Prise en charge de la théorie de l'utilité (score maximum et classement aléatoire pondéré)
- Sérialisable , avec prise en charge de l'historique des activités et des transitions
- Assisté par le débogage , inclut une API de visualisation automatique de la structure et de l'activité avec
#define HFSM_ENABLE_STRUCTURE_REPORT
- Prise en charge de la journalisation intégrée
Bibliothèques tierces
- cadre de tests unitaires doctest
- Générateurs de nombres pseudo-aléatoires XoShiRo
Entrer en contact
- Twitter : @andrew_gresyk
- Discorde : HFSM.dev
- Gitter : Andrew-gresyk/HFSM2
Remerciements spéciaux
- alexandrosk0
- Casey Sánchez
- DJuego
- Kévin Greene
- Kjeld Mathias Petersen
- Lau Bakman
- Mehdi Houshmand
- mrcmry
- Phil Nash
- Romain Cheminade
- Verre Schoppeng
- Tristan Brindle
- C++::Rencontre à Londres
- communauté de programmation chez Splash Damage