Máquina de estados finitos jerárquica de alto rendimiento
Marco FSM jerárquico de solo encabezado en C++11, con una estructura totalmente definida estáticamente (sin asignaciones dinámicas), creado con plantillas variadas.
Soporte del compilador
- Estudio visual: 2015, 2017, 2019, 2022
- CCG: 8, 9, 10, 11, 12, 13
- CCG (BRAZO): 9
- Sonido metálico: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
- AppleClang: 14
Inicio rápido
- Ejemplo mínimo
- Tutorial ampliado
Ver también
- HFSM2 UPlugin : complemento de Unreal Engine para la biblioteca HFSM2
- FFSM2 : Máquina de estados finitos plana de alto rendimiento
- FFSM2 UPlugin : complemento de Unreal Engine para la biblioteca FFSM2
- HFSM Mono : fuentes Unicode de mapa de bits monoespaciadas para bibliotecas HFSM2 y FFSM2
Documentación
Características destacadas
- Licencia MIT permisiva
- Escrito en C++ 11 moderno (más o menos) ampliamente compatible
- Solo encabezado
- Texto repetitivo práctico y mínimo
- Totalmente estático, sin asignaciones dinámicas
- Utiliza polimorfismo en tiempo de compilación compatible con línea, no se utilizan métodos virtuales
- Transiciones con seguridad de tipos:
FSM.changeTo<TargetState>()
con cargas útiles opcionales - Configuración flexible utilizando macros
HFSM2_ENABLE_*
- Escalable, admite una sólida reutilización de estados mediante inyecciones de estado
- Jerárquico , con una selección de regiones compuestas (submáquina) y ortogonales.
- Compatible con desarrolladores de juegos, admite
State::update()
explícito - También admite el flujo de trabajo tradicional basado en eventos con
State::react()
- Inspeccione cualquier cosa: transiciones anteriores y actuales, estado de activación del estado y más.
- Juego compatible con IA con soporte de planificación dinámica
- Soporte de la teoría de la utilidad (puntuación máxima y clasificación aleatoria ponderada)
- Serializable , con soporte de historial de actividad y transición.
- Asistida por depuración , incluye API de visualización automática de estructura y actividad con
#define HFSM_ENABLE_STRUCTURE_REPORT
- Soporte de registro incorporado
Bibliotecas de terceros
- marco de prueba unitaria doctest
- Generadores de números pseudoaleatorios XoShiRo
Ponte en contacto
- Gorjeo: @andrew_gresyk
- Discordia: HFSM.dev
- Gitter: andrew-gresyk/HFSM2
agradecimiento especial
- alexandrosk0
- Casey Sánchez
- DJuego
- Kevin Greene
- Kjeld Mathias Petersen
- Lau Bakman
- Mehdi Houshmand
- mrcmry
- Phil Nash
- Romain Cheminade
- Schopenglas
- Tristán atigrado
- C++::Reunión en Londres
- comunidad de programación en Splash Damage