Система компонентов сущности
Что такое сущность-компонент-система?
Entity-Component-System (ECS) — это архитектурный шаблон. Этот шаблон широко используется при разработке игровых приложений. ECS придерживается принципа композиции, а не наследования, что обеспечивает большую гибкость и помогает идентифицировать сущности, где все объекты в игровой сцене считаются сущностью.
Программирование ECS — это метод написания кода, который по умолчанию обеспечивает высокую производительность.
Эта система состоит из трех терминов.
- Сущность
- Компонент
- Система
Давайте изучим эту концепцию подробно:
В этом учебном пособии по системе Entity-Component вы узнаете:
- Что такое сущность-компонент-система?
- Что такое сущность?
- Что такое Компонент?
- Что такое Система?
- Состав
- Преимущество ECS
- Недостатки использования ECS
- Пример системы компонентов сущности
- Поток данных в ECS:
Что такое сущность?
Сущность — это отдельный объект, представляющий актера в моделируемом пространстве. У него нет фактических данных или поведения. Этот компонент предоставляет объекту свои данные. Обычно это стойка или словарь.
Например, если мы моделируем вселенную игры Minecraft, все видимые, осязаемые «вещи» в игровой вселенной считаются сущностями.
Что такое Компонент?
Компонент — это особое поведение, приписываемое сущности. В идеале имя элемента должно сообщать, какое поведение будет демонстрировать сущность. Однако сам компонент не имеет никакого поведения. Это повторно используемые модули, прикрепленные к объектам. Компонент обеспечивает внешний вид, поведение и функциональность.
Вся логика реализована с использованием компонентов, которые помогают вам определять различные типы объектов путем смешивания и настройки компонентов.
Что такое Система?
Система будет перебирать множество компонентов для выполнения низкоуровневых задач.
такие функции, как рендеринг графики, выполнение физики
расчеты или поиск пути. Он предлагает глобальную область действия, управление и услуги для классов компонентов.
Однако системы не являются обязательными, мы можем использовать их для разделения логики и данных. Это также помогает вам работать с логическими компонентами, выступающими в качестве контейнеров данных.
Примеры
- Гравитация (Скорость) – помогает вам ускорить скорость за счет силы тяжести.
- Это добавляет скорости к положению
- Устанавливает входные данные объекта, управляемого ботом, в соответствии с агентом ИИ.
- Рендеринг (Позиция, Спрайт) – рисует спрайты.
- Управление проигрывателем (проигрыватель ввода) позволяет настроить ввод объекта, управляемого игроком, в соответствии с контроллером.
Состав
Композиция — это элемент, к которому можно присоединить дополнительные компоненты, чтобы добавить дополнительный внешний вид, поведение или функциональность. Вы также можете обновить значения компонента, чтобы настроить объект.
Преимущество ECS
Вот преимущества использования ECS в программировании:
- Вы можете создавать более короткий и менее сложный код.
- Очень гибкое поведение в чрезвычайных ситуациях.
- Он обеспечивает архитектуру для разработки 3D и VR.
- Включает создание сценариев по поведению нетехнических специалистов.
- Это поможет вам разделить монолитные классы.
- Легкий отказ и совместимость.
- Простой вариант для модульного тестирования и макетирования.
- Позволяет создавать VR-приложения разной степени сложности.
- Заменяйте компоненты макетируемыми компонентами во время выполнения.
- Это поможет вам расширить новые функции.
- ECS — это удобный метод параллельной обработки и многопоточности.
- Помогает отделить данные от функций, которые на них воздействуют.
- Обеспечьте большую гибкость при определении объектов, смешивая их с повторно используемыми частями.
- Он предлагает чистый дизайн с использованием методов развязки, инкапсуляции, модульности и повторного использования.
Недостатки использования ECS
Вот некоторые недостатки использования ECS
- Не так конкретно определено, как другие шаблоны, такие как MVC.
- Трудно правильно применить, легко использовать неправильно. Хорошие компоненты требуют большего внимания к дизайну.
- ECS требует написания множества небольших систем, которые аллитерируют потенциально огромное количество объектов, что создает риск написания очень неэффективного кода.
- Большинство людей даже не слышали об этой схеме.
Пример системы компонентов сущности
Давайте посмотрим на примере кролика:
См. пунктирную рамку вокруг этих компонентов. Это сущность кролика — не что иное, как контейнер компонентов. Вы также можете определить сущности как совокупность любого подмножества компонентов.
Вы можете увидеть приведенное выше изображение. Это одна из сущностей-кроликов — не более чем контейнер компонентов. Вы можете определить сущности как совокупность любого подмножества компонентов, например Carrot:
Поток данных в ECS:
Поведение системы — это модель ECS, это переход от одного состояния к другому.
Давайте разберемся на этом примере:
Поведение: «Зайчик, сидящий на дереве, падает под действием силы тяжести».
Как реализовать описанное выше поведение?
Вы можете сделать это, установив значение z больше 0, которое со временем уменьшается до 0.
Поведение: «Живые существа стареют».
Давайте посмотрим, как можно реализовать такое поведение?
Вы можете сделать так, чтобы Живые Компоненты имели значение возраста, которое со временем увеличивается.
Резюме:
- Entity-Component-System (ECS) — это архитектурный шаблон.
- Сущность — это отдельный объект, представляющий актера в моделируемом пространстве.
- Компонент — это особое поведение, приписываемое сущности.
- Система будет перебирать множество компонентов для выполнения низкоуровневых функций, таких как рендеринг графики, выполнение физических расчетов или поиск пути.
- Композиция — это элемент, к которому можно присоединить дополнительные компоненты, чтобы добавить дополнительный внешний вид, поведение или функциональность.
- Используя шаблон ECS, вы можете создавать более короткий и менее сложный код.
- Он не определен так конкретно, как другие шаблоны, такие как MVC.
- Поведение системы — это модель ECS, это переход от одного состояния к другому.