Высокопроизводительный иерархический конечный автомат
Иерархическая структура FSM только для заголовков на C++11 с полностью статически определенной структурой (без динамических выделений), построенной с использованием переменных шаблонов.
Поддержка компилятора
- Visual Studio: 2015, 2017, 2019, 2022 гг.
- ССЗ: 8, 9, 10, 11, 12, 13.
- GCC (ARM): 9
- Кланг: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
- AppleClang: 14
Быстрый старт
- Минимальный пример
- Расширенное руководство
См. также
- HFSM2 UPlugin : плагин Unreal Engine для библиотеки HFSM2.
- FFSM2 : Высокопроизводительный плоский конечный автомат
- FFSM2 UPlugin : плагин Unreal Engine для библиотеки FFSM2.
- HFSM Mono : моноширинные растровые шрифты Unicode для библиотек HFSM2 и FFSM2.
Документация
Основные характеристики
- Разрешительная лицензия MIT
- Написан на широко поддерживаемом современном C++11.
- Только заголовок
- Удобный, минимальный шаблон
- Полностью статический, без динамических выделений.
- Использует встроенный полиморфизм времени компиляции, виртуальные методы не используются.
- Типобезопасные переходы:
FSM.changeTo<TargetState>()
с дополнительными полезными данными. - Гибкая настройка с помощью макроса
HFSM2_ENABLE_*
- Масштабируемость, поддержка надежного повторного использования состояния посредством внедрения состояний.
- Иерархический , с выбором составных (субмашинных) и ортогональных областей.
- Удобен для разработчиков игр, поддерживает явный
State::update()
- Также поддерживает традиционный рабочий процесс на основе событий с помощью
State::react()
- Проверяйте все: предыдущие и текущие переходы, статус активации состояния и многое другое!
- Совместимость с игровым искусственным интеллектом и поддержкой динамического планирования .
- Поддержка теории полезности (максимальный балл и ранжированный взвешенный случайный результат)
- Сериализуемый , с поддержкой истории активности и переходов.
- Поддержка отладки , включает API автоматической визуализации структуры и действий с помощью
#define HFSM_ENABLE_STRUCTURE_REPORT
- Встроенная поддержка журналирования
Сторонние библиотеки
- среда модульного тестирования doctest
- XoShiRo генераторы псевдослучайных чисел
Свяжитесь с нами
- Твиттер: @andrew_gresyk
- Дискорд: HFSM.dev
- Гиттер: andrew-gresyk/HFSM2
Особая благодарность
- Александроск0
- Кейси Санчес
- DJuego
- Кевин Грин
- Кьельд Матиас Петерсен
- Лау Бакман
- Мехди Хушманд
- мркмри
- Фил Нэш
- Ромен Шеминад
- Шоппенглас
- Тристан Бриндл
- Встреча по C++::Лондон
- сообщество программистов Splash Damage