Система компонентів сутності
Що таке Entity-Component-System?
Entity-Component–System (ECS) — це архітектурний шаблон. Цей шаблон широко використовується в розробці ігрових додатків. ECS дотримується принципу композиції, а не принципу успадкування, що забезпечує кращу гнучкість і допомагає вам ідентифікувати сутності, де всі об’єкти сцени гри вважаються сутністю.
Програмування ECS — це метод написання коду, який за умовчанням забезпечує високу продуктивність.
Ця система складається з трьох термінів.
- Сутність
- Компонент
- SYSTEM
Давайте вивчимо це поняття докладніше:
У цьому підручнику з Entity-Component System ви дізнаєтеся:
- Що таке Entity-Component-System?
- Що таке сутність?
- Що таке компонент?
- Що таке система?
- Склад:
- Перевага ECS
- Недоліки використання ECS
- Приклад системи компонентів сутності
- Потік даних в ECS:
Що таке сутність?
Сутність — це окремий об’єкт, що представляє актора в змодельованому просторі. Він не містить фактичних даних або поведінки. Цей компонент надає об’єкту свої дані. Зазвичай це розпірка або словник.
Наприклад, якщо ми моделюємо всесвіт гри Minecraft, усі видимі, відчутні «речі» в ігровому всесвіті, наприклад, зараховуються в сутності.
Що таке компонент?
Компонент — це окрема поведінка, приписана сутності. Ім’я елемента в ідеалі має повідомляти, яку поведінку демонструватиме сутність. Однак сам компонент не має поведінки. Це багаторазові модулі, які приєднуються до сутностей. Компонент забезпечує зовнішній вигляд, поведінку та функціональність.
Уся логіка реалізована за допомогою компонентів, які допомагають вам визначати різні типи об’єктів шляхом змішування та налаштування компонентів.
Що таке система?
Система буде повторювати багато компонентів для виконання низького рівня
такі функції, як візуалізація графіки, виконання фіз
розрахунки або пошук шляху. Він пропонує глобальний обсяг, управління та послуги для класів компонентів.
Однак системи не є необов’язковими, але ми можемо використовувати їх для розділення логіки та даних. Це також допомагає працювати з логічними компонентами, виступаючи в якості контейнерів даних.
прикладів
- Гравітація (Швидкість) – допомагає прискорити швидкість завдяки гравітації
- Це додає позиції швидкості
- Встановлює введення керованої ботом сутності відповідно до агента ШІ
- Render (Position, Sprite) – малює спрайти
- Керування програвачем (програвач введення) допомагає налаштувати введення об’єкта, яким керує гравець, відповідно до контролера.
Склад:
Композиція – це елемент, до якого можна додати більше компонентів, щоб додати додатковий зовнішній вигляд, поведінку чи функціональність. Ви також можете оновити значення компонента, щоб налаштувати сутність.
Перевага ECS
Ось переваги використання ECS у програмуванні:
- Ви можете створити коротший і менш складний код.
- Дуже гнучка екстрена поведінка.
- Він забезпечує архітектуру для розробки 3D і VR.
- Вмикає сценарії за поведінкою нетехніків.
- Це допоможе вам розділити ваші монолітні класи.
- Легка відмова та компонування.
- Простий варіант для модульного тестування та знущання.
- Це дозволяє створити VR-додаток з точки зору складності.
- Замінити компоненти на імітовані компоненти під час виконання.
- Це допоможе вам розширити нові функції.
- ECS — це зручний метод для паралельної обробки та багатопоточності,
- Допомагає вам відокремити дані від функцій, які з ними працюють
- Забезпечте кращу гнучкість під час визначення об’єктів шляхом змішування з частинами для багаторазового використання.
- Він пропонує чистий дизайн із використанням методів роз’єднання, інкапсуляції, модульності та повторного використання.
Недоліки використання ECS
Ось деякі недоліки використання ECS
- Не так конкретно визначено, як інші шаблони, такі як MVC.
- Важко правильно застосувати, легко використовувати неправильно. Хороші компоненти вимагають більше уваги при проектуванні
- ECS вимагає написання багатьох невеликих систем, які використовують потенційно величезну кількість об’єктів, що створює ризик написання дуже неефективного коду
- Більшість людей навіть не чули про цей шаблон.
Приклад системи компонентів сутності
Розглянемо на прикладі зайчика:
Дивіться пунктирну рамку навколо цих компонентів. Це сутність кролика – не що інше, як контейнер компонентів. Ви також можете визначити сутності як сукупність будь-якої підмножини компонентів.
Ви можете побачити наведене вище зображення. Це одна з сутностей кроликів – не що інше, як контейнер компонентів. Ви можете визначити сутності як агрегацію будь-якої підмножини компонентів, як-от Carrot:
Потік даних в ECS:
Поведінка системи - це модель ECS, це зміна одного стану в інший.
Давайте розберемося на цьому прикладі:
Поведінка: «Зайчик, який сидить на дереві, падає під дією сили тяжіння».
Як реалізувати описану вище поведінку?
Ви можете зробити це за допомогою значення z більше 0, яке з часом зменшується до 0.
Поведінка: «Живі істоти старіють».
Давайте подивимось, як ви можете реалізувати цю поведінку?
Ви можете зробити так, щоб живі компоненти мали вікове значення, яке з часом збільшується.
Основна інформація:
- Entity-Component–System (ECS) — це архітектурний шаблон.
- Сутність — це окремий об’єкт, що представляє актора в змодельованому просторі.
- Компонент — це окрема поведінка, приписана сутності.
- Система буде повторювати багато компонентів для виконання функцій низького рівня, таких як візуалізація графіки, виконання фізичних обчислень або пошук шляху.
- Композиція – це елемент, до якого можна додати більше компонентів, щоб додати додатковий зовнішній вигляд, поведінку чи функціональність.
- Використовуючи шаблон ECS, ви можете створити коротший і менш складний код.
- Це не так конкретно визначено, як інші шаблони, такі як MVC.
- Поведінка системи - це модель ECS, це зміна одного стану в інший.