Об этом проекте
Frent — это библиотека C# для создания игр и симуляций на основе композиции сущностей и компонентов. В её README она описывается в первую очередь как фреймворк EC (Entity Component), а не только ECS: компоненты могут включать поведение, управление временем жизни и события, поэтому повторное использование кода достигается через композицию вместо наследования при минимальном объёме шаблонного кода. Также предоставляется опциональный Systems API для запросов к сущностям в традиционном стиле ECS.
Хранение представляет собой гибрид архетипов и разреженных множеств, и проект утверждает, что сущности могут бесшовно перемещаться между этими стратегиями хранения. В README перечислены: небольшая структура сущности размером 8 байт, поддержка до 127 компонентов на сущность, компоненты как структуры и как классы, автоматическая передача унифицированных данных, таких как deltaTime, совместимость с AOT при нулевой рефлексии, связи между сущностями (links), теги, события, буфер команд, многопоточность, автоматическое управление структурными изменениями и возможность создавать сущности в любой момент без буфера команд. Для более быстрого доступа предлагаются EntityMarshal и WorldMarshal.
Краткий пример показывает создание World, порождение сущности с компонентами Position и Velocity, вызов world.Update() и чтение обновлённого Position. В README отмечается, что Frent всё ещё находится в бета-версии и не полностью стабилен. Там есть ссылки на документацию, интерактивное демо и примеры для MonoGame, Unity и Godot. Приведена ссылка на бенчмарк с утверждением, что Frent быстрее большинства реализаций ECS на C#; это утверждение принадлежит самому проекту и здесь независимо не проверялось. В руководстве по участию пользователей просят сообщать об ошибках, предлагать API и открывать issue перед началом работы над крупными функциями.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.