Hochleistungsfähige hierarchische Finite-State-Maschine
Hierarchisches Nur-Header-FSM-Framework in C++11 mit vollständig statisch definierter Struktur (keine dynamischen Zuweisungen), erstellt mit variadischen Vorlagen.
Compiler-Unterstützung
- Visual Studio: 2015, 2017, 2019, 2022
- GCC: 8, 9, 10, 11, 12, 13
- GCC (ARM): 9
- Klang: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
- AppleClang: 14
Schnellstart
- Minimales Beispiel
- Erweitertes Tutorial
Siehe auch
- HFSM2 UPlugin : Unreal Engine-Plugin für die HFSM2-Bibliothek
- FFSM2 : Hochleistungsfähige flache Finite-State-Maschine
- FFSM2 UPlugin : Unreal Engine-Plugin für die FFSM2-Bibliothek
- HFSM Mono : Monospaced-Bitmap-Unicode-Schriftarten für HFSM2- und FFSM2-Bibliotheken
Dokumentation
Feature-Highlights
- Zulässige MIT-Lizenz
- Geschrieben in weithin unterstütztem modernem (ish) C++11
- Nur Header
- Praktisches, minimalistisches Boilerplate
- Vollständig statisch, keine dynamischen Zuweisungen
- Verwendet Inline-freundlichen Polymorphismus zur Kompilierungszeit, es werden keine virtuellen Methoden verwendet
- Typsichere Übergänge:
FSM.changeTo<TargetState>()
mit optionalen Payloads - Flexible Konfiguration mit
HFSM2_ENABLE_*
Makros - Skalierbar, unterstützt robuste Zustandswiederverwendung über Zustandsinjektionen
- Hierarchisch , mit einer Auswahl an zusammengesetzten (Sub-Machine) und orthogonalen Regionen
- Gamedev-freundlich, unterstützt explizite
State::update()
- Unterstützt auch den traditionellen ereignisbasierten Workflow mit
State::react()
- Überprüfen Sie alles: frühere und aktuelle Übergänge, Statusaktivierungsstatus und mehr!
- Spiel-KI-freundlich mit dynamischer Planungsunterstützung
- Unterstützung der Nutzentheorie (maximale Punktzahl und gewichtete Zufallsbewertung)
- Serialisierbar , mit Unterstützung für Aktivitäts- und Übergangsverlauf
- Debug-unterstützt , beinhaltet automatische Struktur- und Aktivitätsvisualisierungs-API mit
#define HFSM_ENABLE_STRUCTURE_REPORT
- Integrierte Protokollierungsunterstützung
Bibliotheken von Drittanbietern
- Doctest- Unit-Test-Framework
- XoShiRo Pseudozufallszahlengeneratoren
Nehmen Sie Kontakt auf
- Twitter: @andrew_gresyk
- Discord: HFSM.dev
- Gitter: andrew-gresyk/HFSM2
Besonderer Dank
- alexandrosk0
- Casey Sanchez
- DJuego
- Kevin Greene
- Kjeld Mathias Petersen
- Lau Bakman
- Mehdi Houshmand
- mrcmry
- Phil Nash
- Romain Cheminade
- Schoppenglas
- Tristan Brindle
- C++::London-Treffen
- Programmier-Community bei Splash Damage