Máquina hierárquica de estados finitos de alto desempenho
Estrutura FSM heriárquica somente de cabeçalho em C++ 11, com estrutura totalmente definida estaticamente (sem alocações dinâmicas), construída com modelos variados.
Suporte ao compilador
- Estúdio Visual: 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
- AppleClang: 14
Início rápido
- Exemplo Mínimo
- Tutorial estendido
Veja também
- HFSM2 UPlugin : plugin Unreal Engine para biblioteca HFSM2
- FFSM2 : Máquina de estados finitos planos de alto desempenho
- FFSM2 UPlugin : plugin Unreal Engine para biblioteca FFSM2
- HFSM Mono : fontes Unicode de bitmap monoespaçado para bibliotecas HFSM2 e FFSM2
Documentação
Destaques de recursos
- Licença Permissiva do MIT
- Escrito em C++ 11 moderno (ish) amplamente suportado
- Somente cabeçalho
- Padrão conveniente e mínimo
- Totalmente estático, sem alocações dinâmicas
- Usa polimorfismo em tempo de compilação amigável, nenhum método virtual é usado
- Transições com segurança de tipo:
FSM.changeTo<TargetState>()
com cargas opcionais - Configuração flexível usando macros
HFSM2_ENABLE_*
- Escalável, suporta reutilização robusta de estado por meio de injeções de estado
- Hierárquico , com uma seleção de regiões compostas (submáquina) e ortogonais
- Compatível com Gamedev, suporta
State::update()
explícito - Também suporta fluxo de trabalho tradicional baseado em eventos com
State::react()
- Inspecione qualquer coisa: transições anteriores e atuais, status de ativação do estado e muito mais!
- Jogo compatível com IA com suporte de planejamento dinâmico
- Suporte à teoria da utilidade (pontuação máxima e classificação aleatória ponderada)
- Serializavel , com suporte para histórico de atividades e transições
- Assistido por depuração , inclui estrutura automática e API de visualização de atividades com
#define HFSM_ENABLE_STRUCTURE_REPORT
- Suporte de registro integrado
Bibliotecas de terceiros
- estrutura de teste de unidade doctest
- Geradores de números pseudo-aleatórios XoShiRo
Entre em contato
- Twitter: @andrew_gresyk
- Discordância: HFSM.dev
- Gitter: andrew-gresyk/HFSM2
Agradecimentos especiais
- alexandrosk0
- Casey Sanchez
- DJuego
- Kevin Greene
- Kjeld Mathias Petersen
- Lau Bakman
- Mehdi Houshmand
- mrcmry
- Phil Nash
- Romain Cheminade
- Schoppenglas
- Tristão Tigrado
- C++::Encontro em Londres
- comunidade de programação em Splash Damage