Система за компоненти на обекти
⚡ Умно обобщение
Системата от обекти-компоненти, или ECS, е архитектурен модел, широко използван в разработването на игри. Той предпочита композицията пред наследяването: обектите са идентификатори, компонентите съдържат данни, а системите съдържат логиката, която действа върху обекти със съответстващи компоненти.

Какво е Entity-Component-System?
Entity-Component-System (ECS) е архитектурен модел. Този модел се използва широко в разработката на приложения за игри. ECS следва композицията над принципа на наследяване, което предлага по-добра гъвкавост и ви помага да идентифицирате обекти, където всички обекти в сцената на играта се считат за обект.
ECS програмирането е метод за писане на код, който осигурява висока производителност по подразбиране.
Тази система се състои от три термина.
- Единица
- Компонент
- Система
Нека научим тази концепция в детайли:
Какво е същност?
Субектът е отделен обект, представляващ актьор в симулирано пространство. Няма действителни данни или поведение. Този компонент дава на обект неговите данни. Обикновено това е подпора или речник.
Например, ако симулираме вселената на играта Minecraft, всички видими, осезаеми „неща“ във вселената на играта се броят в обекти.
Какво е компонент?
Компонентът е единично поведение, приписано на даден обект. Името на елемент в идеалния случай трябва да съобщава какво поведение ще прояви обектът. Самият компонент обаче няма поведение. Те са модули за многократна употреба, които са прикрепени към обекти. Компонентът осигурява външен вид, поведение и функционалност.
Цялата логика се реализира с помощта на компоненти, които ви помагат да дефинирате различни типове обекти чрез смесване и конфигуриране на компоненти.
Какво представлява системата?
Една система ще повтори много компоненти, за да изпълни ниско ниво
функции като изобразяване на графики, извършване на физика
изчисления или намиране на път. Предлага глобален обхват, управление и услуги за класове компоненти.
Системите обаче не са по избор, но можем да ги използваме за разделяне на логиката и данните. Той също така ви помага да управлявате логическите компоненти, действайки като контейнери за данни.
Примери
- Гравитация (скорост) – Помага ви да ускорите скоростта поради гравитацията
- Добавя скорост към позицията
- Задава входа на субект, контролиран от бот, според AI агент
- Изобразяване (Позиция, Спрайт) – Рисува спрайтове
- Контрол на плейъра (Входен плейър) ви помага да зададете входа на обекта, контролиран от играча, според контролер.
композиция
Композицията е елемент, към който можете да прикачите повече компоненти, за да добавите допълнителен външен вид, поведение или функционалност. Можете също да актуализирате стойностите на компонента, за да конфигурирате обекта.
Предимство на ECS
Ето предимствата на използването на ECS в програмирането:
- Можете да създадете по-кратък и по-малко сложен код.
- Много гъвкаво аварийно поведение.
- Той предоставя архитектура за 3D и VR разработка.
- Позволява скриптове чрез поведение от нетехници.
- Помага ви да разделите вашите монолитни класове.
- Лесен брак и съвместимост.
- Лесен вариант за модулно тестване и подигравка.
- Тя ви позволява да изградите VR приложение по отношение на сложността.
- Замяна на компоненти с фалшиви компоненти по време на изпълнение.
- Помага ви да разширите нови функции.
- ECS е удобен метод за паралелна обработка и многопоточност,
- Помага ви да отделите данните от функциите, които действат върху тях
- Осигурете по-добра гъвкавост при дефиниране на обекти чрез смесване с части за многократна употреба.
- Той предлага изчистен дизайн, използвайки методите за отделяне, капсулиране, модулиране и повторно използване.
Недостатъци на използването на ECS
Ето някои недостатъци на използването на ECS
- Не е толкова конкретно дефиниран като други модели като MVC.
- Трудни за правилно прилагане, лесни за злоупотреба Добрите компоненти изискват повече мислене за дизайна
- ECS изисква писането на много малки системи, които алитерират потенциално огромен брой обекти, което създава риск от писане на много неефективен код
- Повечето хора дори не са чували за този модел.
Пример за система на компонент на обект
Нека да разгледаме примера със зайче:
Вижте пунктираната кутия около тези компоненти. Това е зайчето – нищо друго освен контейнер от компоненти. Можете също така да дефинирате обекти като съвкупност от всяко подмножество от компоненти.
Можете да видите даденото по-горе изображение. Това е едно от зайчетата – нищо повече от контейнер от компоненти. Можете да дефинирате обекти като съвкупност от всяко подмножество от компоненти, като Carrot:
Поток на данни в ECS:
Поведението на системите е ECS моделът е промяна от едно състояние в друго.
Нека разберем с този пример:
Поведения: „Зайче, седнало на дърво, пада поради гравитацията.“
Как да приложим горното поведение?
Можете да го направите чрез z стойност повече от 0, която намалява с времето до 0.
Поведение: „Живите същества остаряват.“
Да видим как можете да приложите това поведение?
Можете да направите така, че живите компоненти да имат възрастова стойност, която се увеличава с времето.


