Перейти к содержанию

Система сущность-компонент

Статья из Авикипедии. Энциклопедии

Система сущность-компонент

Сущность-Компонент-Система (ECS) — это шаблон архитектуры программного обеспечения, используемый преимущественно в разработке видеоигр для представления объектов игрового мира. ECS включает в себя сущности, идентифицируемые уникальным кодом. Компоненты — это данные, связанные с каждой сущностью (хранятся в памяти совместно), доступ к которым осуществляется через идентификатор. Наконец, системы работают с этими компонентами.

ECS следует принципу композиции вместо наследования, что означает, что каждая сущность определяется не иерархией типов, как в традиционном объектно-ориентированном программировании, а набором связанных с ней компонентов. Системы действуют глобально на все сущности, обладающие компонентами, необходимыми для работы данной системы.

Хотя эта архитектура чаще всего применяется в разработке видеоигр, ECS может быть полезен и в других областях, таких как компьютерное моделирование, системы реального времени или автоматизированное проектирование.

Характеристики[править | править код]

Архитектура ECS объединяет идеи, уже устоявшиеся в информатике и теории языков программирования. Например, компоненты можно рассматривать как частный случай миксинов, существующих во многих языках программирования. Компоненты представляют собой специализированный вариант подхода делегирования в целом и протокола метаобъектов.

Сущность: Сущность представляет собой элемент общего назначения. В контексте игрового движка, например, каждый базовый объект игры представлен сущностью. Обычно она состоит только из уникального идентификатора. В реализациях часто используется простое целое число.

Компонент: Компонент характеризует сущность в определённом аспекте и содержит данные, необходимые для моделирования этого аспекта. Например, каждый игровой объект, который может получать урон, может иметь компонент «Здоровье», связанный с сущностью. В реализациях обычно используются структуры, классы или массивы.

Система: Система — это процесс, который воздействует на все сущности с нужными компонентами. Например, физический движок может запрашивать все сущности с компонентами массы, скорости и позиции, а затем итерировать по результатам, выполняя физические расчёты над соответствующими компонентами каждой сущности.

Поведение сущности можно изменять во время выполнения с помощью систем, которые добавляют, удаляют или модифицируют компоненты. Это устраняет проблемы неоднозначности, характерные для глубоких и сложных иерархий наследования в традиционном объектно-ориентированном программировании, которые трудно понимать, поддерживать и расширять. Подходы ECS хорошо сочетаются с методами проектирования, ориентированными на данные, и часто используются совместно с ними. Данные всех экземпляров компонента хранятся в памяти последовательно, что обеспечивает эффективный доступ для систем, работающих с множеством сущностей.

См. также[править | править код]

  • Модель–вид–контроллер
  • Наблюдатель (шаблон проектирования)
  • Стратегия (шаблон проектирования)
  • Реляционная модель

Ссылки[править | править код]

Категория:Шаблоны проектирования Категория:Архитектурные шаблоны (информатика)

Ссылки[править | править код]