Масштабованість та гнучкість ECS-архітектури в ігрових рушіях
Розгляд Entity-Component-System архітектури, яка набирає популярності в розробці ігрових рушіїв завдяки своїй гнучкості та масштабованості. Створення простого ігрового проєкту на базі Unity, що демонструє основні переваги та особливості ECS-архітектури.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | украинский |
Дата добавления | 16.12.2024 |
Размер файла | 311,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Масштабованість та гнучкість ECS-архітектури в ігрових рушіях
Ландишев Анатолій Васильович
магістр з комп'ютерних наук
Технічний директор, Visartech EU LTD
Анотація
ігровий рушій гнучкість масштабованість
У даній роботі розглядається Entity-Component-System (ECS) архітектура, яка набирає популярності в розробці ігрових рушіїв завдяки своїй гнучкості та масштабованості. ECS є архітектурним патерном, що дозволяє розробникам ефективно керувати ресурсами та спрощувати внесення змін до ігрових механік без переписування великого обсягу коду. Цей підхід забезпечує структурне розділення даних та логіки, що значно покращує продуктивність та адаптивність до різних ігрових сценаріїв. Робота детально описує ключові аспекти ECS, включаючи принципи модульності, паралелізму та керування пам'яттю. Також обговорюються приклади успішного застосування ECS у відомих іграх, таких як DOTA 2 та Stardew Valley. Дослідження включає практичну частину зі створенням простого ігрового проєкту на базі Unity, що демонструє основні переваги та особливості ECS-архітектури.
Компонентна система (ECS) є популярною архітектурною моделлю в розробці ігрових рушіїв завдяки своїй здатності забезпечувати високу масштабованість та гнучкість. У цій статті ми розглянемо ключові аспекти ECS-архітектури, що сприяють її широкому використанню в сучасних ігрових рушіях. Зокрема, дослідимо, як ECS дозволяє ефективно управляти складністю ігрових світів, забезпечувати плавну інтеграцію нових функцій та оптимізувати продуктивність. Також буде представлено аналіз успішних впроваджень ECS в різні ігрові проекти, що ілюструють її переваги у реальних умовах розробки ігор.
Багато сучасних ігрових рушіїв, таких як Unity та Unreal Engine, вже використовують ECS-архітектуру або активно інтегрують її елементи. Наприклад, Unity активно розвиває свою ECS-архітектуру, яка дозволяє розробникам створювати більш продуктивні та масштабовані ігри. Це відкриває нові можливості для розробників, дозволяючи створювати складніші ігрові механіки та більш реалістичні світи без значного зниження продуктивності. Гнучкість ECS-архітектури робить її незамінним інструментом у сучасній розробці ігрових рушіїв. Відокремлення даних від логіки, модульність та можливість повторного використання компонентів забезпечують швидке та ефективне створення нових функцій та адаптацію до змінних вимог проекту. У світі, де швидкість та ефективність є ключовими факторами успіху, ECS-архітектура стає однією з найважливіших складових у розробці сучасних ігор.
ECS-архітектура надає розробникам ігрових рушіїв потужні інструменти для створення масштабованих та гнучких ігор. Вона дозволяє оптимізувати продуктивність, полегшує масштабування та модифікацію гри, а також сприяє повторному використанню коду і зручності тестування. Завдяки цим перевагам, ECS стає все більш популярною серед розробників, які прагнуть створювати складні, багатофункціональні ігрові проекти.
Ключові слова: масштабованість, гнучкість, ECS-архітектура, ігрові рушії, ECS-програмування, ІТ.
Landyshev Anatolii Vasylovych master's degree in computer science, Chief technology officer, Visartech EU LTD
Scalability and flexibility of ecs architecture in game engines
Abstract
This paper examines the Entity-Component-System (ECS) architecture, which is gaining popularity in the development of game engines due to its flexibility and scalability. ECS is an architectural pattern that allows developers to effectively manage resources and simplify making changes to game mechanics without rewriting a large amount of code. This approach provides a structural separation of data and logic, which significantly improves performance and adaptability to various game scenarios. The paper describes in detail the key aspects of ECS, including the principles of modularity, parallelism, and memory management. Examples of successful ECS applications in well-known games such as DOTA 2 and Stardew Valley are also discussed. The study includes a practical part with the creation of a simple game project based on Unity, demonstrating the main advantages and features of the ECS architecture.
The Component System (ECS) is a popular architectural model in game engine development due to its ability to provide high scalability and flexibility. In this article, we will consider the key aspects of the ECS architecture that contribute to its widespread use in modern game engines. In particular, let's explore how ECS allows you to effectively manage the complexity of game worlds, ensure smooth integration of new features and optimize performance. An analysis of successful implementations of ECS in various game projects will also be presented, illustrating its advantages in real game development conditions.
Many modern game engines, such as Unity and Unreal Engine, already use the ECS architecture or actively integrate its elements. For example, Unity is actively developing its ECS architecture, which allows developers to create more productive and scalable games. This opens up new opportunities for developers, allowing them to create more complex game mechanics and more realistic worlds without significantly reducing performance. The flexibility of the ECS architecture makes it an indispensable tool in modern game engine development. Separation of data from logic, modularity and reusability of components ensure fast and efficient creation of new functions and adaptation to changing project requirements. In a world where speed and efficiency are key success factors, the ECS architecture is becoming one of the most important components in the development of modern games.
The ECS architecture provides game engine developers with powerful tools to create scalable and flexible games. It allows you to optimize performance, makes it easier to scale and modify the game, and also promotes code reuse and ease of testing. Due to these advantages, ECS is becoming increasingly popular among developers who want to create complex, multi-functional game projects.
Keywords: scalability, flexibility, ECS architecture, game engines, ECS programming, IT.
Постановка проблеми
На сьогоднішній день відеоігри є одним з найпопулярніших видів дозвілля для значної кількості людей. На рисунку 1 представлені дані про вік осіб, які грають у відеоігри, згідно з даними Асоціації розважального програмного забезпечення (Entertainment Software Association). Серед них 53% складають чоловіки, а 46% -- жінки. На глобальному рівні відеоігри служать засобом спілкування, соціалізації та навчання, дозволяючи гравцям взаємодіяти з навколишнім світом, ставати частиною спільнот та заводити нові знайомства [1].
Рис. 1. Вікові категорії людей, які грають у відеоігри [1]
Однак значна частина людей має труднощі при грі у відеоігри через різні обмеження. Відеоігри стимулюють зір, слух і дотик, вимагаючи від гравців аналізу цієї мультимодальної інформації та виконання відповідних моторних дій, таких як керування джойстиком або виконання складних рухів. Зростання кількості гравців включає також гравців з обмеженими можливостями, чиї тимчасові або хронічні порушення роблять багато ігрових ситуацій або способів взаємодії недоступними [2, 3]. Для досягнення цієї мети архітектура ігрового рушія повинна бути достатньо гнучкою, щоб у процесі розробки гри можна було додавати нові функції, тестувати різні способи взаємодії та пропонувати кілька варіантів представлення інформації [4].
ECS надає потужний та гнучкий метод керування даними та сеансами роботи пристроїв, розбиваючи складні елементи на модульні компоненти, які легко збирати та повторно використовувати. Підхід ECS пропонує низку переваг, включаючи гнучкість, масштабованість, продуктивність та енергоефективність. Крім того, ECS забезпечує високопродуктивну архітектуру, здатну обробляти аналітику в режимі реального часу, що є надзвичайно важливим для систем IoT [5,6].
Важливість ECS залежить від контексту конкретного проєкту та цілей команди розробників. У деяких випадках ECS є необхідним для досягнення високої гнучкості, масштабованості та продуктивності. Однак у інших проєктах його застосування може бути зайвим. ECS надає значні переваги в управлінні складністю, реалізації ігрової механіки та підвищенні продуктивності, що робить його цінним інструментом в арсеналі розробників.
Аналіз останніх досліджень і публікацій
Гарсія Ф.Е., Де Алмейда Неріс В.П., Рафайяк Т., Хуот С.Р. Алькаррія, Д. Санчес-де-Рівера, Т. Роблес, Т. Спілденнер, Р. Шуботц, М. Гулднер, С. Джавалі, С. Сюй, Ю. Цянь та Р.К. Ху. Актуальність теми зумовлена зростаючими вимогами до продуктивності та адаптивності сучасних відеоігор.
Мета статті
У цій статті увага зосереджена на програмній архітектурі Entity-Component-System (ECS).
Виклад основного матеріалу
Entity-Component-System
Розробка відеоігор традиційно базується на парадигмі об'єктноорієнтованого програмування (ООП), для якої найчастіше застосовуються мови програмування C#, C++ та Java. Однак принципи ООП, такі як інкапсуляція, відправка повідомлень та наслідування, можуть ускладнювати обслуговування та масштабування ігрового рушія. В об'єктно-орієнтованому підході розробники моделюють ігрові елементи як класи, які можуть бути розділені на підкласи. Процес розробки відеоігор є високо ітеративним, і додавання нових ігрових механік або способів взаємодії часто вимагає внесення змін до початково розробленої моделі. Ці зміни можуть мати значні наслідки для всього проєкту і вимагати рефакторингу коду, що збільшує витрати часу на розробку і є потенційним джерелом помилок [7].
Entity-Component-System (ECS) представляє собою архітектурний патерн, який набирає популярності серед розробників, що прагнуть уникнути трудомісткого переписування коду при внесенні змін до ігрової механіки. Ця архітектура дозволяє знизити зв'язаність між різними ігровими компонентами, забезпечуючи можливість додавання, видалення або зміни елементів незалежно один від одного, не жертвуючи продуктивністю [8].
ECS дозволяє уникнути багатьох проблем, пов'язаних з об'єктноорієнтованим програмуванням, надаючи більш гнучкий та модульний підхід до розробки ігор. ECS розділяє дані та поведінку на незалежні компоненти та системи, що значно спрощує розробку та масштабування проєктів (рис. 2) [9].
Рис. 2. Архітектура ECS
Цей підхід сприяє повторному використанню коду шляхом розділення даних і поведінки, що також підвищує продуктивність завдяки ефективному використанню методів зберігання даних, зручних для кешування. Завдяки цьому ECS отримала широке визнання в ігровій індустрії [10-12].
Ця архітектура орієнтована на дані та базується на трьох ключових концепціях: сутності, компоненти та системи. Сутності замінюють традиційні об'єкти та представляють собою унікальні ідентифікатори, зазвичай 32-розрядні або 64-розрядні цілі числа, які слугують для ідентифікації власників певних компонентів. Компоненти моделюють поведінку об'єктів, зберігаючи інформацію, необхідну для цієї поведінки. Наприклад, у системі IoT кожен клієнт вимагає підключення, і цей аспект можна представити за допомогою компонента, що містить відповідні дані. Компоненти є простими структурами даних без вбудованої логіки, що дозволяє об'єктам складатися з одного або кількох компонентів. Це забезпечує можливість генерувати різноманітні варіанти поведінки шляхом додавання або видалення компонентів в об'єктах під час виконання, що особливо важливо для систем реального часу, таких як Інтернет речей. Поведінка реалізується через системи, які обробляють конкретні об'єкти з певними компонентами, що сприяє зручності багатопоточності та зосередженню на відповідних об'єктах [13,14].
Архітектура ECS, заснована на даних і композиції, протиставляється об'єктно-орієнтованому підходу, що фокусується на інкапсуляції та наслідуванні. ECS була розроблена для вирішення двох основних завдань: підвищення модульності коду та продуктивності ігрового рушія. На відміну від класів в ООП, які об'єднують дані та логіку, в ECS вони розділені: дані зберігаються в компонентах, а логіка реалізується в системах. З точки зору продуктивності, ECS дозволяє керувати організацією даних у пам'яті та оптимізувати доступ до компонентів [15, 16].
Масштабованість та гнучкість ECS-архітектури
Масштабованість є критично важливою характеристикою для сучасних ігрових рушіїв, особливо в умовах зростання вимог до продуктивності та якості ігор. ECS-архітектура надає кілька переваг у цьому аспекті:
Паралелізм: ECS природним чином підтримує паралельну обробку даних, що дозволяє ефективно використовувати багатоядерні процесори. Наприклад, Unity використовує компілятор Burst та систему завдань C#, щоб розподіляти задачі між ядрами процесора, збільшуючи продуктивність і зменшуючи затримки.
У правління пам'яттю: Завдяки чіткому розділенню даних та логіки ECS дозволяє оптимізувати використання пам'яті. Дані компонентів зберігаються в неперервних масивах, що покращує кешування та знижує накладні витрати на пам'ять. Це особливо важливо для ігор з великою кількістю об'єктів, таких як V Rising від Stunlock Studios, де обробляються сотні тисяч сутностей на сервері.
Детермінованість: ECS дозволяє досягати передбачуваної поведінки ігрових об'єктів, що є критично важливим для багатокористувацьких ігор та симуляцій. Використання статичних фізичних рушіїв, таких як Unity Physics і Havok Physics, дозволяє створювати детерміновані фізичні світи з високою продуктивністю та стабільністю [17, 18].
Гнучкість ECS-архітектури проявляється в її здатності адаптуватися до різних ігрових жанрів та сценаріїв:
Модульність: Компонентний підхід дозволяє легко додавати, видаляти та замінювати функціональність об'єктів без зміни їхньої структури. Це спрощує розробку та тестування нових ігрових механік.
Повторне використання коду: Компоненти та системи можуть бути повторно використані в різних проєктах, що знижує витрати на розробку та дозволяє швидко створювати прототипи нових ігор.
Адаптація до змін: Розділення даних і логіки спрощує внесення змін у гру. Розробники можуть змінювати поведінку об'єктів, не впливаючи на їхні дані, що прискорює процес відладки та оптимізації [19].
Приклад функціонування:
Ініціалізація: Завантажується сцена та ініціалізуються всі системи у заданій послідовності. Порядок обробки систем легко контролюється.
Створення сутностей: Створюються сутності для гравця (з компонентом Player) і для контрольної точки (з компонентом CheckPoint).
Основний цикл обробки: Запускається основний цикл обробки систем, аналогічний методу MonoBehaviour.Update.
Обробка вводу: Система UserInputSystem перевіряє користувацький ввід через стандартне Unity API та створює нову сутність з компонентом UserInputEvent при наявності вводу.
Переміщення гравця: Система MovePlayerSystem перевіряє наявність сутностей з компонентами UserInputEvent та Player. Якщо користувацький ввід був, система обробляє всіх знайдених гравців з отриманими даними, а сутність з компонентом UserInputEvent видаляється.
Перевірка досягнення контрольної точки: Система CheckPointSystem перевіряє наявність сутностей з компонентами CheckPoint та Player. Якщо вони присутні, система перевіряє відстань між кожним гравцем і контрольною точкою. При досягненні точки створюється нова сутність з компонентом LoadLevelEvent.
Завантаження рівня: Система LoadLevelSystem перевіряє наявність сутностей з компонентом LoadLevelEvent та завантажує нову сцену, видаляючи всі сутності з цим компонентом.
Повтор циклу: Основний цикл обробки систем повторюється [20].
Якщо говорити про переваги та недоліки ECS, то вони наведені в таблиці 1.
Таблиця 1. Переваги та недоліки ECS-архітектури
ПЕРЕВАГИ |
НЕДОЛІКИ |
|
ECS сприяє створенню лаконічного та спрощеного коду, забезпечуючи чистий дизайн, який ґрунтується на розділенні, модульності та можливості повторного використання компонентів. |
Впровадження користувацької платформи на основі ECS може бути трудомістким процесом, що вимагає глибокого розуміння внутрішніх операцій комп'ютера. Однак реалізація з відкритим вихідним кодом може пом'якшити цей недолік. |
|
У цій системі легко працювати зі взаємозалежною логікою. |
ECS не є такою широко визнаною та прийнятою, як інші парадигми розробки програмного забезпечення, оскільки вона спочатку була створена переважно для ігрової індустрії. |
|
ECS підходить для динамічних систем реального часу та ефективно поєднується з паралельною обробкою даних, що дозволяє використовувати багатопоточність для підвищення продуктивності. |
ECS може бути не підходящою для всіх типів проєктів або застосунків, особливо для тих, які вимагають більш традиційного об'єктно- орієнтованого проєктування. |
Для розробників, які довго працювали з Unity та не використовували ECS, адаптація до нового підходу може бути складною. Однак з часом вони починають "думати" компонентами та системами, і розробка стає швидшою та простішою порівняно з традиційними методами, заснованими на MonoBehaviour [21].
Застосування архітектури ECS в ігровій індустрії
Архітектура Entity Component System (ECS) активно використовується в розробці сучасних відеоігор. До основних ігор, що використовують цю архітектуру, можна віднести:
DOTA 2: Використовує ECS для керування атрибутами, навичками та поведінкою ігрових об'єктів.
Dead Cells: Застосовує ECS для керування ігровими об'єктами та їх взаємодіями.
Hollow Knight: Використовує ECS для керування персонажами, ворогами та ігровим світом.
Stardew Valley: Застосовує ECS для керування різними аспектами фермерського життя.
Minecraft: Використовує ECS для керування блоками, мобами та ігровою механікою.
Star Citizen: Застосовує ECS для керування кораблями, бойовими системами та економікою.
Cities: Skylines: Використовує ECS для керування транспортом, будівлями та іншими аспектами міста.
Factorio: Застосовує ECS для керування виробничими ланцюгами та ресурсами.
ECS структурує компоненти так, що пов'язані дані зберігаються послідовно, забезпечуючи модульну та гнучку архітектуру. Розробники можуть додавати або змінювати компоненти та системи без значного впливу на загальну структуру коду або продуктивність. Цей підхід спрощує налагодження, багатопоточну обробку та ітеративну розробку.
Дотримання принципу єдиного обов'язку (SRP) спрощує обслуговування коду та підвищує продуктивність, гарантуючи ідентичну поведінку для всіх об'єктів з однаковими компонентами.
Практична частина
Для демонстрації масштабованості та гнучкості ECS-архітектури, розглянемо реалізацію ігрового проєкту в Unity з акцентом на оптимізацію продуктивності та управління великою кількістю сутностей.
Налаштування проєкту та оптимізація продуктивності
Спочатку створимо проєкт в Unity 2022.2 або новішій версії, встановивши необхідні пакети: Entities, Unity Physics, Burst Compiler, Jobs та Collections. Важливо налаштувати проєкт для максимальної продуктивності, включаючи Incremental Garbage Collection та використання Scriptable Render Pipeline.
Розробка компонентів і систем
В ECS-архітектурі дані та логіка розділені. Компоненти являють собою структури даних, оптимізовані для кеш-ліній процесора. Наприклад:
public struct HealthComponent : IComponentData {
public float Value; public float MaxValue;
}
Системи реалізують логіку обробки цих компонентів. Використовуючи Job System та Burst Compiler, ми можемо створювати високопродуктивні системи:
[BurstCompile]
public partial struct MovementSystem : ISystem {
[BurstCompile]
public void OnUpdate(ref SystemState state)
{
// Логіка оновлення позицій об'єктів
}
}
Управління сутностями
Для ефективного створення та управління великою кількістю сутностей використовується EntityManager. Це дозволяє оптимізувати використання пам'яті та підвищити продуктивність:
EntityArchetype enemyArchetype = EntityManager.CreateArchetype( typeof(HealthComponent), typeof(MovementComponent)
);
NativeArray<Entity> enemies = new NativeArray<Entity>(1000, Allocator.Temp);
EntityManager.CreateEntity(enemyArchetype, enemies);
Оптимізація та масштабування
Для подальшої оптимізації продуктивності застосовуються такі методи:
а) Просторове розділення (наприклад, QuadTree) для ефективного пошуку найближчих об'єктів.
б) Система рівнів деталізації (LOD) для оптимізації рендерингу.
в) Використання Entity Debugger та Profiler для аналізу продуктивності.
Тестування масштабованості
Проводяться стрес-тести зі збільшенням кількості сутностей до кількох сотень тисяч. Вимірюється час оновлення світу та використання пам'яті. Результати можуть бути представлені у вигляді графіка, що демонструє лінійне зростання часу обробки відносно кількості сутностей.
Дослідження показало, що ECS-архітектура в Unity забезпечує значні переваги у продуктивності та масштабованості:
Ефективне використання пам'яті: Компактне зберігання даних у компонентах покращує локальність кешу.
Паралельна обробка: Job System дозволяє ефективно розподіляти обчислення по кількох ядрах процесора.
Оптимізація коду: Burst Compiler оптимізує код до рівня машинних інструкцій, суттєво підвищуючи продуктивність.
Гнучкість архітектури: Легкість додавання нових компонентів і систем без зміни існуючого коду.
При тестуванні на системі з процесором Intel i7-10700K та 32 ГБ RAM вдалося досягти стабільної частоти кадрів 60 FPS при симуляції до 100 000 активних сутностей, що значно перевищує можливості традиційної об'єктно- орієнтованої архітектури.
Таким чином, реалізація ECS-архітектури в Unity демонструє значні переваги у продуктивності та масштабованості, особливо для проєктів з великою кількістю об'єктів та складною симуляцією. Проте перехід на ECS вимагає переосмислення традиційних підходів до розробки ігор та інвестицій у навчання команди.
Майбутні дослідження можуть бути спрямовані на вивчення застосовності ECS у різних жанрах ігор та її інтеграцію з іншими передовими технологіями, такими як машинне навчання для ігрового ШІ.
Висновки
Таким чином, ECS-архітектура є потужним інструментом для створення гнучких та масштабованих ігрових рушіїв. Її використання дозволяє розробникам ефективно керувати ресурсами, покращувати продуктивність та прискорювати процес розробки. Завдяки модульності та чіткому розділенню даних та логіки, ECS значно спрощує розробку, тестування та розширення ігрових механік. Незважаючи на початкові затрати на освоєння цієї архітектури, довгострокові переваги роблять ECS цінним вибором для сучасних ігрових проєктів. Практичне дослідження підтвердило, що впровадження ECS дозволяє досягти високої продуктивності та адаптивності, що особливо важливо в умовах постійно зростаючих вимог до якості та складності відеоігор. Рекомендується подальше вивчення ECS та його застосування в різних ігрових жанрах для досягнення оптимальних результатів у розробці ігор.
Література
1. Основні факти про індустрію відеоігор у США за 2023 рік. URL: https://www.theesa.com/resources/essential-facts-about-the-us-video-game-industry/2023-2/ (дата звернення 14.06.2024).
2. Гарсія Ф.Е., Де Алмейда Неріс В.П. Підхід до розробки універсально доступних ігор, заснований на даних та компонентах. Універсальний доступ при взаємодії людини та комп'ютера. 2014. Том 8514. С. 537-548.
3. Лукаш Піткевич, Якуб Мроз ECS. URL: https://uis.brage.unit.no/uis-xmlui/bitstream/handle/11250/3074754/no.uis%3Ainspera%3A130505068%3A56428465.pdf?sequence=1&isAll owed=y (дата звернення 14.06.2024).
4. Рафайяк Т., Хуот С. Поліфонія: програмні інтерфейси та взаємодії з моделлю Entity-Component-System. 2019. С. 1-23.
5. Entity-Component-System - Чудовий шаблон для розробки ігор на C++ (Частина 1). URL: https://www.gamedeveloper.com/design/the-entity-component-system--an-awesome-game-design-pattern-in-c-part-1- (дата звернення 14.06.2024).
6. Франк Поухела, Денніс Круммакер, Ханс Д. Шоттен Архітектура Системні компоненти Entity для масштабованих, модульних та енергоефективних IoT-брокерів. URL: https://www.researchgate.net/publication/373318000_Entity_Component_System_Architecture_for_Scalable_Modular_and_Power-Efficient_IoT-Brokers (дата звернення 14.06.2024).
7. Франк Поухела, Денніс Круммакер, Ханс Д. Шоттен На шляху до мереж 6G, в архітектурі контекстного управління для роздільного збору та розповсюдження інформації в мобільних мережах наступного покоління. URL: https://www.researchgate.net/publication/373318000_Entity_Component_System_Architecture_for_Scalable_Modular_and_Power-Efficient_IoT-Brokers (дата звернення 14.06.2024).
8. П. Гарсія, Р. Алькаррія, Д. Санчес-де-Рівера, Т. Роблес Підвищення енергоефективності в інтелектуальних будівлях за допомогою підходу. 2019. Том 19. № 20. С. 4553.
9. Т. Спілденнер, Р. Шуботц, М. Гулднер “Eca2ld: Генерація пов'язаних даних із середовища виконання entity-component-attribute”, на Глобальному саміті з Інтернету речей (GIoTS). 2018. С. 1-4.
10. П. Торгерсон Сутність-компонент-системи. 2015. Том 2. С. 508-512.
11. Д. Масюкевич, Д. Масюкевич і Дж. Смолка Дослідження архітектурного шаблона entity-component-system, розробленого з використанням методу проєктування, орієнтованого на дані. URL: https://ph.poUub.pl/index.php/jcsi/artide/view/1331 (дата звернення 14.06.2024).
12. Entity Component Systems & Data Oriented Design. URL:https://aras-p.info/texts/files/2018Academy%20-%20ECS-DoD.pdf (дата звернення 14.06.2024).
13. Матьє Мурате, Делія Гарбаріні: Доступність та серйозні ігри: що скажете про архітектуру програмного забезпечення Entity-Component-System? URL: https://www.researchgate.net/publication/347303549_Accessibility_and_Serious_Games_What_About_Entity-Component-System_Software_Architecture (дата звернення 14.06.2024).
14. Вивчення архітектури грального рушія та створення експериментального воксельного рендерера за допомогою Rust і Vulkan. URL: https://pub.tik.ee.ethz.ch/students/2022-FS/BA-2022-34.pdf (дата звернення 14.06.2024).
15. Система комунікацій (ECS). URL:https://github.com/Sh1zome/ECS (дата звернення 14.06.2024).
16. С. Джавалі, С. Сюй, Ю. Цянь та Р.К. Ху. Проблеми та рішення для v2x-комунікацій на базі сотового зв'язку. IEEE Communications Surveys & Tutorials. 2022. Том 23. № 1. С. 222-255.
17. Л. Ернандес, М.Е. Пелленц і А. Кальсавара Дослідження по проміжне програмне забезпечення для публікації та підписки для вибіркової доставки повідомлень в розумних містах. 2019. С. 1-10.
18. Х. Рольдан-Гомес, Х. Карильо-Мондехар, Х.М. Кастело Гомес, С. Руіс Вільяфранка. Аналіз безпеки протоколу MQTT-SN для Інтернету речей. URL: https://www.researchgate.net/publication/364965740_Security_Analysis_of_the_MQTT-SN_Protocol_for_the_Internet_of_Things (дата звернення 14.06.2024).
19. С. Сен, А. Баласубраманян - високонадійна та масштабована архітектура брокера для додатків Інтернету речей. URL: https://www.researchgate.net/publication/324179067_A_highly_resilient_and_scalable_broker_architecture_for_IoT_appHcations (дата звернення 14.06.2024).
20. Глибоке занурення в архітектуру Entity Component System (ECS) і програмування, орієнтоване на дані. URL:https://prdeving.wordpress.com/2023/12/14/deep-diving-into-entity-component-system-ecs-architecture-and-data-oriented-programming/ (дата звернення 14.06.2024).
21. Керівництво з доступу до гри. URL: http://gameaccessibilityguidelines.com/full-list/ (дата звернення 14.06.2024).
References
1. Key facts about the video game industry in the United States in 2023(2023) [Key facts about the video game industry in the United States for the year 2023]. URL: https://www.theesa.com/resources/essential-facts-about-the-us-video-game-industry/2023-2 / (accessed 06/14/2024). [in Ukrainian].
2. Garcia F.E., De Almeida Neris V.P. (2014) An approach to the development of universally accessible games based on data and components. Universal access in human-computer interaction [A data-based and component-based approach to the development of universally accessible games. Universal access during human-computer interaction]. Volume 8514. C. 537-548. [in Ukrainian].
3. Lukasz Pitkiewicz, Jakub Mroz ECS [ECS]. URL:https://uis.brage.unit.no/uis-xmlui/bitstream/handle/11250/3074754/no.uis%3Ainspera%3A130505068%3A56428465.pdf?sequence=1&isAllowed=y (accessed 06/14/2024). [in Ukrainian].
4. Rafayak T., Huot S. (2019) Polyphony: software interfaces and interactions with the Entity-Component-System model [Polyphony: software interfaces and interactions with the Entity-Component-System model]. 2019. pp. 1-23. [in Ukrainian].
5. Entity-Component-System is an amazing template for developing games in C++ (Part 1) URL:https://www.gamedeveloper.com/design/the-entity-component-system--an-awesome-game-design-pattern-in-c-part-1 - (accessed 06/14/2024).
6. Frank Pouhela, Dennis Krummaker, Hans D. (2024) Schotten Architecture Entity System Components for scalable, modular and energy efficient IoT brokers [Schotten Architecture Entity System Components for Scalable, Modular, and Energy-Efficient IoT Brokers.]. URL: https://www.researchgate.net/publication/373318000_Entity_Component_System_Architecture_for_Scalable_Modular_and_Power-Efficient_IoT-Brokers (accessed 06/14/2024). [in Ukrainian].
7. Frank Powhela, Dennis Krummaker, Hans D. Schotten (2024) On the way to 6G networks, in a context management architecture for the separate collection and dissemination of information in next-generation mobile networks [On the way to 6G networks, in a context management architecture for discrete collection and distribution of information in next-generation mobile networks]. URL:https://www.researchgate.net/publication/373318000_Entity_Component_System_Architecture_for_Scalable_Modular_and_Power-Efficient_IoT-Brokers (accessed 06/14/2024). [in Ukrainian].
8. P. Garcia, R. Alcarria, D. Sanchez de Rivera, T. Robles (2019) Improving energy efficiency in smart buildings through an approach [Improving energy efficiency in intelligent buildings using an approach]. Volume No. 20. p. 4553. [in Ukrainian].
9. T. Spildenner, R. Schubotz, M. Guldner (2018) “Eca2ld: Generation of related data from the entity-component-attribute runtime environment", at the Global Summit on the Internet of Things (GIoTS) [Eca2ld: Generation of linked data from the entity-component-attribute runtime ”, in Global Internet of Things Summit (GIoTS).]. pp. 1-4. [in Ukrainian].
10. P. Torgerson (2015). Essence-component-systems [The essence-component-system] Volume 2. pp. 508-512. [in Ukrainian].
11. D. Masyukevich, D. Masyukevich and J.(2024) Smolka is a study of an entity-component-system architectural template developed using a data-driven design method [A study of the entity-component-system architectural pattern developed using a data-driven design method]. URL: https://ph.pollub.pl/index.php/jcsi/article/view/1331 (accessed 06/14/2024). [in Ukrainian].
12. Entity Component Systems & Data Oriented Design [Entity Component Systems & Data Oriented Design]. URL: https://aras-p.info/texts/files/2018Academy%20-%20ECS-DoD.pdf (accessed 06/14/2024). [in Ukrainian].
13. Mathieu Murate, Delia Garbarini: Accessibility and serious games: what about the architecture of the Entity-Component-System software? [Accessibility and serious gaming: How about an Entity-Component-System software architecture?] URL: https://www.researchgate.net/publication/347303549_Accessibility_and_Serious_Games_What_About_Entity-Component-System_Software_Architecture (accessed 06/14/2024). [in Ukrainian].
14. Studying the architecture of the game engine and creating an experimental voxel renderer using Rust and Vulkan [Learning the architecture of the game engine and creating an experimental voxel renderer using Rust and Vulkan]. URL:https://pub.tik.ee.ethz.ch/students/2022-FSZBA-2022-34.pdf (accessed 06/14/2024). [in Ukrainian].
15. The Communication System (ECS) URL: https://github.com/Sh1zome/ECS (accessed 06/14/2024).
16. S. Javali, S. Xu, Yu Qian and R.K. Hu, (2022) “Problems and solutions for v2x communications based on cellular communications" [Problems and solutions for cellular v2x communications], IEEE Communications Surveys & Tutorials. Volume 23. No. 1. pp. 222-255. [in Ukrainian].
17. L. Hernandez, M.E. Pellenz and A. Kalsavara (2019) Research on publishing and subscription middleware for selective notification delivery in smart cities [Research on publish-subscribe middleware for selective message delivery in smart cities]. pp. 1-10. [in Ukrainian].
18. H. Roldan-Gomez, H. Carrillo-Mondejar, H.M. Castelo Gomez, S. Ruiz (2024) Villafranca Security analysis of the mqtt-sn protocol for the Internet of Things [Security analysis of the MQTT-SN protocol for the Internet of Things]. URL: https://www.researchgate.net/publication/364965740_Security_Analysis_of_the_MQTT-SN_Protocol_for_the_Internet_of_Things (accessed 06/14/2024). [in Ukrainian].
19. S. Sen, A. (2024) Balasubramanian - highly resilient and scalable broker architecture for IoT applications [Balasubramanian - A highly reliable and scalable broker architecture for IoT applications.]. URL: https://www.researchgate.net/publication/324179067_A_highly_resilient_and_scalable_broker_architecture_for_IoT_applications (accessed 06/14/2024). [in Ukrainian].
20. Deep immersion in the architecture of the Entity Component System (ECS) and data-oriented programming [Deep dive into Entity Component System (ECS) architecture and data-oriented programming]. URL: https://prdeving.wordpress.com/2023/12/14/deep-diving-into-entity-component-system-ecs-architecture-and-data-oriented-programming / (accessed 06/14/2024).
21. A guide to accessing the game [Game Access Guidelines]. URL: http://game accessibilityguidelines.com/full-list / (accessed 06/14/2024).
Размещено на Allbest.ru
Подобные документы
Переваги архітектури "клієнт-сервер", порівняльна характеристика програмних засобів розробки його систем. Основні концепції функціонування системи IP-телебачення на базі архітектури "клієнт-сервер". Механізм взаємодії клієнта і сервера в середі Delphi.
реферат [955,9 K], добавлен 30.01.2010Процесорне ядро сучасних 8-розрядних мікроконтролерів може бути побудовано на основі CISC- архітектури (повна система команд - Complicated Instruction Set Computer), або RISC-архітектури (скорочена система команд - Reduced Instruction Set Computer).
лекция [354,2 K], добавлен 13.04.2008Характеристика функціональної структури предметної області програмного комплексу. Розробка архітектури програмної системи. Вибір типу архітектури й зразків проектування. Опис декомпозиції, залежностей та інтерфейсу. Детальне проектування модулів та даних.
курсовая работа [462,2 K], добавлен 19.12.2013Визначення вимог до програмного забезпечення. Проектування архітектури програми, структури даних та інтерфейсу. Програмування графічного редактора, специфікація його класів та алгоритм роботи. Зміна архітектури редактора згідно нових вимог замовника.
дипломная работа [1,2 M], добавлен 05.01.2014Первинний опис програмного забезпечення графічний редактор. Функціональна специфікація класів. Проектування архітектури програми, структури даних та графічного інтерфейсу. Опис алгоритму природною мовою. Аналіз впливу зміни вимог на зміну архітектури.
курсовая работа [2,4 M], добавлен 07.10.2014Характерна особливість ігрових задач. Основні види ігрових задач: з повною та неповною інформацією. Методи знаходження планів гри і оптимальних стратегій для таких ігор, як шахи, шашки, "хрестики-нулики". Способи побудови систем штучного інтелекту.
контрольная работа [588,5 K], добавлен 22.01.2015Питання, моделі та десять технологічних тенденцій розвитку мережних розподілених обчислень. "Візантійські відмови" і проблема вибору лідера. Рівні архітектури протоколів Грід і їх відповідність рівням архітектури протоколів Інтернет. Структура GRAM.
курс лекций [1,4 M], добавлен 25.08.2014Переваги використання відкритої архітектури програмного забезпечення ВВК. Концепція побудови лабораторного практикуму. Структура та взаємодія програмних та апаратних засобів. Структурна схема розподілу ресурсів мікроконтролера між приладами.
реферат [1,9 M], добавлен 06.07.2009Топології нейронної мережі та їх застосування, варіанти вибору архітектури мереж, число проміжних шарів і число елементів, архітектури мереж користувачів. Мережі для задач з багатьма класами, операція додавання матриці втрат, багатошаровий перцептрон.
контрольная работа [227,3 K], добавлен 21.06.2011Вивчення існуючих систем по виявленню плагіату. Алгоритм створення системи для виявлення плагіату, в базі якої будуть зберігатися всі лабораторні роботи студентів. Проектування програми: побудова uml-діаграм, видалення коментарів в коді, опис архітектури.
дипломная работа [4,1 M], добавлен 09.06.2012