SlideShare a Scribd company logo
ECS в разработке игр - хорошая
архитектура приложений для всех
Кирилл Надеждин
Unity разработчик
2
3
4
Конкретный пример
5
Проблема -
добавление (новых) трюков
6
Обычно -
закрытые классы (менеджеры) с
заранее реализованными
событиями
7
Ощущение контроля, но
8
9
А что если...
10
Логика трюков -
отдельные классы по 5 строчек
Big
Air
Hang
time
Back
Flip
11
Пример кода системы определения трюка “высокий полёт”
12
Создадим и сохраним куда-нибудь эти системы
13
Добавление новых трюков
Big
Air
Hang
time
Back
Flip
Close
call
Upside
down
14
Добавление новых систем
15
16
Данные на первом месте
17
Данные = Сущности + Компоненты
18
Компонент
19
Компонент трюка:
20
Сущность -
набор компонентов
21
Пример с машиной
22
Логика - в системы
23
24
Система 2Система 1 Система 3
КОМПОНЕНТЫ
Система 4 Система 5
КОМПОНЕНТЫ
25
Система 2Система 1 Система 3
КОМПОНЕНТЫ
Система 4 Система 5
КОМПОНЕНТЫ
26
Меняющееся общее состояние -
движущая сила между системами.
27
Состояние - это всё.
28
…
Модель данных - это состояние.
События - это состояние.
Сервисы и зависимости - это состояние.
...
// @mzaks
29
30
Пара сквозных примеров
31
Компонент (трюк):
32
Система
33
Добавление системы в общий список
34
Компонент (аудио эффект):
35
Система
36
Добавление системы в общий список
37
Компонент (нажата педаль газа):
38
Компонент (включен бустер):
39
Система
40
Добавление системы в общий список
41
Компонент (Действие с UI):
42
Система
43
Добавление системы в общий список
44
ECS in game development - good software architecture for everyone
Test Driven - раз плюнуть
46
1.Готовим состояние
2.Прогоняем систему
3.Проверяем результат
47
Окей,
для чего лучше всего подойдёт?
48
49
50
51
https://goo.gl/mfMF7n
52
Онлайн шутер от первого лица?
53
54
55
Полюбим наши “горячие”
данные ещё больше
56
57
58
59
60
61
https://goo.gl/j6oQrR
62
Мне очень нравится Entitas. Нет никакого смысла отказываться если в проекте
используется C#.
I really like Entitas. There's really no point in not using it if you're using C#.
// @justStand
63
На данный момент мы работаем над проектом уже больше полугода. И я должен
сказать, что никогда ещё мне не удавалось менять функционал с такой лёгкостью.
We are currently working for over a half a year on the project and I would say that I
never felt like we could change stuff that freely.
// @StormRene
64
Наша команда экспериментирует с Entitas. ..её использование усложняет наши
попытки сделать код многопоточным. Нам либо придётся менять исходники, либо
полностью отказаться от фреймворка.
We are experimenting with Entitas right now. .. using Entitias would make code harder to
multithread. We are currently considering modifying Entitias or sadly discarding it.
// @Lynx32
65
Мы до сих пор используем Entitas и мы рады, что остановились на этом выборе.
We have used entitas and we are glad we did it. I really enjoy working with it.
// @Lynx32
66
Мы планировали вести проекты вместе с разработчиками, предложенными нашим
клиентом. Они наотрез отказались разбираться в новой технологии. Мы так и не
смогли договориться о дальнейшей работе.
Projects were planned to work in collaboration with other client developers, and they
strictly refused to learn new technology and we couldn't agree on future work.
// @c0ffeeartc
67
68
69
Спасибо
70
Вопросы?
https://goo.gl/mQNpRx - слайды
https://gitter.im/sschmid/Entitas-CSharp - чат Entitas
@KumoKairo на github и twitter

More Related Content

PDF
Никита Шультайс. "Система управления версиями git"
PDF
"Готовим промисы правильно", Андрей Яманов, MoscowJS 24
PPTX
Continuous Integration для C++ разработчика
PPTX
Continuous Integration for C++ engineers
PPTX
Php and frameworks
PDF
Source Control Addon for InterSystems Caché with UDL support
PDF
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
PPTX
системы контроля версий
Никита Шультайс. "Система управления версиями git"
"Готовим промисы правильно", Андрей Яманов, MoscowJS 24
Continuous Integration для C++ разработчика
Continuous Integration for C++ engineers
Php and frameworks
Source Control Addon for InterSystems Caché with UDL support
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
системы контроля версий

Similar to ECS in game development - good software architecture for everyone (18)

PPTX
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
PDF
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...
PPT
Lecture 11 1
PPT
Lecture 11 1
PPTX
ПартФорум DIRECTUM 2013 - разработка прикладных решений
PPTX
Веб, Игры, С++ : Темная Магия / Кирилл Шабордин (Ciliz :: W4)
PPTX
Wargaming.net: Архитектура современных 3D движков
PDF
Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
PDF
Чистая архитектура, Артур Бадретдинов АБЦТ
PPTX
WinRT
PPTX
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
PDF
Непрерывная интеграция при разработке баз данных. (Show version)
PPTX
Продуктивность и производительность в новых скриптовых языках / Антон Юдинцев...
PPT
Владимир Никонов "Вызовы при разработке enterprise продукта"
PDF
Кроссплатформенный .NET и как там дела с Mono и CoreCLR
PDF
"Кроссплатформенный .NET и как там дела с Mono и CoreCLR" Акиньшин Андрей, Je...
PDF
Так круто, что даже отвратительно
PPTX
Когда в C# не хватает C++
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...
Lecture 11 1
Lecture 11 1
ПартФорум DIRECTUM 2013 - разработка прикладных решений
Веб, Игры, С++ : Темная Магия / Кирилл Шабордин (Ciliz :: W4)
Wargaming.net: Архитектура современных 3D движков
Microsoft: Создание игр на DirectX для Windows 8 и Windows Phone 8
Чистая архитектура, Артур Бадретдинов АБЦТ
WinRT
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Непрерывная интеграция при разработке баз данных. (Show version)
Продуктивность и производительность в новых скриптовых языках / Антон Юдинцев...
Владимир Никонов "Вызовы при разработке enterprise продукта"
Кроссплатформенный .NET и как там дела с Mono и CoreCLR
"Кроссплатформенный .NET и как там дела с Mono и CoreCLR" Акиньшин Андрей, Je...
Так круто, что даже отвратительно
Когда в C# не хватает C++
Ad

More from DevGAMM Conference (20)

PPTX
The art of small steps, or how to make sound for games in conditions of war /...
PPTX
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
PPTX
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
PPTX
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
PPTX
AI / ML for Indies / Tyler Coleman (Retora Games)
PDF
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
PPTX
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
PDF
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
PDF
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
PDF
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
PDF
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
PDF
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
PDF
How to increase wishlists & game sales from China? Growth marketing tactics &...
PDF
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
PDF
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
PPTX
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
PDF
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
PPTX
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
PPTX
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
PPTX
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
The art of small steps, or how to make sound for games in conditions of war /...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
AI / ML for Indies / Tyler Coleman (Retora Games)
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
How to increase wishlists & game sales from China? Growth marketing tactics &...
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
Ad

ECS in game development - good software architecture for everyone