Entity Component System
Entity-Component-System (ECS, укр. Система компонент суб'єкта) — це шаблон проєктування, який забезпечує велику гнучкість в проєктуванні загальної архітектури програмного забезпечення. Такі великі компанії, як Unity, Epic або Crytek використовують цей шаблон в своїх фреймворках, щоб надати розробникам дуже багатий можливостями інструмент, за допомогою якого вони розробляють власне ПЗ.
Історія
У 2007 році команда, що працювала над Operation Flashpoint: Dragon Rising, експериментувала з патерном ECS, а Адам Мартін пізніше написав докладний опис дизайну ECS, включаючи визначення основної термінології та концепцій. Зокрема, робота Мартіна популяризувала ідеї «систем» як елемента першого класу, «сутності як ідентифікатори», «компоненти як необроблені дані» і «код, що зберігається в системах, а не в компонентах або об'єктах».
Характеристика
Основна ціль ECS — розподіл різних проблем і завдань між сутностями (Entities), компонентами (Components) і системами (Systems). Це три основні поняття цього шаблону. Сутність це контейнер для компонентів. Компонент — це невеликий об'єкт, який не володіє ніякою логікою. Зазвичай компонент містить одне чи два поля. В ідеалі це об'єкти з простою структурою даних. Кожен тип компонента можна прикріпити до сутності, щоб дати їй щось на зразок властивості. Системи містять в собі логіку, наприклад, переміщення чи запуск анімації. Системи працюють с сутностями, які мають потрібний для неї набір компонентів.