Система компонентів сутності

⚡ Розумний підсумок

Система-сутність-компонент, або ECS, – це архітектурний шаблон, який широко використовується в розробці ігор. Він надає перевагу композиції над успадкуванням: сутності – це ідентифікатори, компоненти зберігають дані, а системи містять логіку, яка діє на сутності з відповідними компонентами.

  • 🎮 Шаблон ECS: «Суть-Компонент-Система» – це архітектурний шаблон, поширений у розробці ігор.
  • 🧩 Склад: ECS надає перевагу композиції над успадкуванням для більшої гнучкості.
  • 🆔 Суб'єкт: Сутність — це універсальний ідентифікатор ігрового об'єкта.
  • 📦 компонент: Компонент — це звичайний контейнер даних, який не містить жодної поведінки.
  • Система: Система містить логіку, яка обробляє сутності з заданими компонентами.
  • ???? Продуктивність: Макет, орієнтований на дані, покращує використання кешу та продуктивність виконання.
  • 🤖 Кут штучного інтелекту: Ігрові інструменти на основі штучного інтелекту генерують компоненти та автоматично налаштовують системи.

Система компонентів сутності Archiтектура

Що таке Entity-Component-System?

Entity-Component–System (ECS) — це архітектурний шаблон. Цей шаблон широко використовується в розробці ігрових додатків. ECS дотримується принципу композиції, а не принципу успадкування, що забезпечує кращу гнучкість і допомагає вам ідентифікувати сутності, де всі об’єкти сцени гри вважаються сутністю.

Програмування ECS — це метод написання коду, який за умовчанням забезпечує високу продуктивність.

Ця система складається з трьох термінів.

  1. Сутність
  2. Компонент
  3. SYSTEM

Давайте вивчимо це поняття докладніше:

Що таке сутність?

Сутність — це окремий об’єкт, що представляє актора в змодельованому просторі. Він не містить фактичних даних або поведінки. Цей компонент надає об’єкту свої дані. Зазвичай це розпірка або словник.

Наприклад, якщо ми моделюємо всесвіт гри Minecraft, усі видимі, відчутні «речі» в ігровому всесвіті, наприклад, зараховуються в сутності.

Що таке компонент?

Компонент — це окрема поведінка, приписана сутності. Ім’я елемента в ідеалі має повідомляти, яку поведінку демонструватиме сутність. Однак сам компонент не має поведінки. Це багаторазові модулі, які приєднуються до сутностей. Компонент забезпечує зовнішній вигляд, поведінку та функціональність.

Уся логіка реалізована за допомогою компонентів, які допомагають вам визначати різні типи об’єктів шляхом змішування та налаштування компонентів.

Що таке система?

Система буде повторювати багато компонентів для виконання низького рівня

такі функції, як візуалізація графіки, виконання фіз

розрахунки або пошук шляху. Він пропонує глобальний обсяг, управління та послуги для класів компонентів.

Однак системи не є необов’язковими, але ми можемо використовувати їх для розділення логіки та даних. Це також допомагає працювати з логічними компонентами, виступаючи в якості контейнерів даних.

прикладів

  • Гравітація (Швидкість) – допомагає прискорити швидкість завдяки гравітації
  • Це додає позиції швидкості
  • Встановлює введення керованої ботом сутності відповідно до агента ШІ
  • Render (Position, Sprite) – малює спрайти
  • Керування програвачем (програвач введення) допомагає налаштувати введення об’єкта, яким керує гравець, відповідно до контролера.

Склад:

Композиція – це елемент, до якого можна додати більше компонентів, щоб додати додатковий зовнішній вигляд, поведінку чи функціональність. Ви також можете оновити значення компонента, щоб налаштувати сутність.

Перевага ECS

Ось переваги використання ECS у програмуванні:

  • Ви можете створити коротший і менш складний код.
  • Дуже гнучка екстрена поведінка.
  • Він забезпечує архітектуру для розробки 3D і VR.
  • Вмикає сценарії за поведінкою нетехніків.
  • Це допоможе вам розділити ваші монолітні класи.
  • Легка відмова та компонування.
  • Простий варіант для модульного тестування та знущання.
  • Це дозволяє створити VR-додаток з точки зору складності.
  • Замінити компоненти на імітовані компоненти під час виконання.
  • Це допоможе вам розширити нові функції.
  • ECS — це зручний метод для паралельної обробки та багатопоточності,
  • Допомагає вам відокремити дані від функцій, які з ними працюють
  • Забезпечте кращу гнучкість під час визначення об’єктів шляхом змішування з частинами для багаторазового використання.
  • Він пропонує чистий дизайн із використанням методів роз’єднання, інкапсуляції, модульності та повторного використання.

Недоліки використання ECS

Ось деякі недоліки використання ECS

  • Не так конкретно визначено, як інші шаблони, такі як MVC.
  • Важко правильно застосувати, легко використовувати неправильно. Хороші компоненти вимагають більше уваги при проектуванні
  • ECS вимагає написання багатьох невеликих систем, які використовують потенційно величезну кількість об’єктів, що створює ризик написання дуже неефективного коду
  • Більшість людей навіть не чули про цей шаблон.

Приклад системи компонентів сутності

Розглянемо на прикладі зайчика:

Дивіться пунктирну рамку навколо цих компонентів. Це сутність кролика – не що інше, як контейнер компонентів. Ви також можете визначити сутності як сукупність будь-якої підмножини компонентів.

Ви можете побачити наведене вище зображення. Це одна з сутностей кроликів – не що інше, як контейнер компонентів. Ви можете визначити сутності як агрегацію будь-якої підмножини компонентів, як-от Carrot:

Потік даних в ECS:

Поведінка системи - це модель ECS, це зміна одного стану в інший.

Давайте розберемося на цьому прикладі:

Поведінка: «Зайчик, який сидить на дереві, падає під дією сили тяжіння».

Як реалізувати описану вище поведінку?

Ви можете зробити це за допомогою значення z більше 0, яке з часом зменшується до 0.

Поведінка: «Живі істоти старіють».

Давайте подивимось, як ви можете реалізувати цю поведінку?

Ви можете зробити так, щоб живі компоненти мали вікове значення, яке з часом збільшується.

Поширені запитання

Ці три частини – це сутності, компоненти та системи. Сутності – це ідентифікатори, компоненти – це контейнери даних, а системи містять логіку, яка працює з сутностями, що містять певні компоненти.

Композиція дозволяє уникнути глибоких, жорстких ієрархій класів. Поєднуючи невеликі компоненти, розробники гнучко додають або видаляють поведінку, яку легше підтримувати та розширювати, ніж успадкування у великих іграх.

ECS поширений в ігрових двигунах та високопродуктивних симуляціях. Такі фреймворки, як Unity DOTS, Bevy та EnTT використовують ECS для ефективного управління тисячами об'єктів за допомогою проектування, орієнтованого на дані.

Так. Інструменти штучного інтелекту пропонують структури компонентів, генерують системну логіку та балансують параметри ігрового процесу. Це пришвидшує створення прототипів.ping та допомагає розробникам керувати складною поведінкою сутностей у великих сценах.

штучний інтелект Агенти зчитують дані компонентів через системи, щоб сприймати ігровий світ і приймати рішення про дії. Орієнтована на дані макет ECS робить ефективним передачу стану в моделі машинного навчання.

Підсумуйте цей пост за допомогою: