LeoECS Proto - выход в OpenSource

Спустя 2.5 года разработки LeoECS Proto переходит в OpenSource - теперь его можно использовать без подписки.
Благодаря подписчикам, за эти 2.5 года фреймворк развивался, обрастал функционалом и менялся под нужды его пользователей. Можно смело заявить, что на данный момент он не хуже своего предшественника LeoECS Lite, а в определенных моментах - сильно его превосходит:
- Кодовая база фреймворка уменьшилась (на соизмеримом функционале), ее стало проще поддерживать и расширять. Пулы и итераторы теперь могут быть реализованы пользователем.
- Появилась штатная поддержка модулей - пользовательской код теперь проще разделять и подключать в новые проекты.
- Появилась штатная система нелинейного подключения систем - можно явно указывать контрольные точки интеграции.
- Пулы теперь известны на старте мира и не могут быть добавлены в процессе намеренно или случайно.
- Отсутствие фильтров - при большом их количестве (от сотни) и тысячах сущностей, попадающих в них,
LeoECS Protoсерьезно выигрывает по скорости (до х3 раз) при добавлении / удалении компонентов. - Из-за отсутствия фильтров снизилась скорость линейной итерации по сущностям - от 10% с небольшим линейным замедлением в зависимости от количества компонентов в мире. Компенсируется применением кеширующих итераторов.
Код ядра и всех расширений доступен на GitVerse:
- Ядро Proto - содержит минимальный функционал с возможностью расширения его пользовательским кодом:
- Поддержка кастомных пулов.
- Поддержка кастомных итераторов.
- Поддержка кастомных групп систем.
- Поддержка модулей.
- Отсутствие рефлексии.
- Модуль улучшения "качества жизни" (Quality of Life) - содержит все "удобства", что базируются на апи ядра, но не должны там находиться:
- Базовый DI аспект - автоматическое создание пулов/итераторов и их инъекцией в поля аспекта, может использоваться как составной итератор, использующий вложенные поля-пулы как выборку компонентов.
- Инъекция данных в поля систем.
- Поддержка сервисов с рекурсивной инъекцией данных в них, включая сами же сервисы.
- Расширения для пулов - пустой ли он, сколько в нем элементов, получение первого элемента, итерирование по пулу без создания итератора.
- 3 дополнительных спрособа записи итераторов - через обобщения, чейнинг, унифицированный список.
- Кеширующие итераторы, позволяющие переиспользовать выборку в нескольких системах, если она не меняется.
- Модуль интеграции в редактор Unity - поддержка работы с `Unity`:
- Унификация сбора событий с
MonoBehaviourв рантайме - Авторинг - сборка префабов из
ECS-компонентов без необходимости созданияMonoBehaviour-провайдеров. - Отладочное представление сущностей мира с возможностью редактирования данных компонентов через инспектор.
- Унификация сбора событий с
- Модуль интеграции событий Unity Physics2D - поддержка событий 2D-физики в `Unity`.
- Модуль интеграции событий Unity Physics3D - поддержка событий 3D-физики в `Unity`.
- Модуль интеграции событий Unity uGui - поддержка событий uGui в `Unity`.
- Модуль интеграции многопоточной обработки - поддержка многопоточных итераторов.
- Модуль взаимоотношений "родитель-ребенок" для сущностей - поддержка иерархических нецикличных связей между сущностями с возможностью автоматического удаления всей иерархии при удалении "родителя".
- Модуль группировки систем в блоки с условным выполнением - системы-контейнеры, позволяющие реализовывать блоки систем, которые будут выполняться или не выполняться на основании пользовательской логики.
- Модуль UtilityAI - простая реализация `UtilityAI` для использования в `ECS`.
- Модуль интеграции UtilityAI в Unity - поддержка правил для `UtilityAI` в виде `ScriptableObject` в `Unity`.
Поддержка доступна только для актуальных подписчиков, остальным предлагается изучать документацию и код самостоятельно.
LeoECS Proto - это уже третий фреймворк в линейке. Каждый фреймворк расчитан на шестилетний цикл `развития`-`обслуживания`-`снятия с поддержки`:| Этап | Classic | Lite | Proto |
|---|---|---|---|
| Создание | 2018 | 2020 | 2023 |
| Обслуживание | 2021 | 2024 | 2027 |
| Конец жизни | 2023 | 2026 | 2029 |
Из таблицы видно, что LeoECS Proto “опоздал” на год, но так сложились обстоятельства. Сейчас 2025 год и это значит, что настало время появления следующей итерации в линейке LeoECS.
Новая версия называется ProtoN, т.к основана на базе LeoECS Proto, а буква N означает Nimlang. Да, новый фреймворк реализован на Nimlang, тестовая версия на C# есть, но она устарела и не поддерживается. Возможно, когда-нибудь, эта версия будет актуализирована и выложена в общий доступ в виде экспериментальной версии без поддержки, но таких планов пока нет. В одной из следующих статей немного опишу изменения, произошедшие в новой версии.