Хорошая статья, поможет не только новичкам, но и тем кто пытается понять ECS глубже.
https://medium.com/clean-code-channel/entity-component-system-ace3611c9b30
https://medium.com/clean-code-channel/entity-component-system-ace3611c9b30
Medium
Entity Component System
ECS для преданных объектно-ориентированных разработчиков.
LeoECS за 20 минут! Осваиваем Entity Component System на примере фрейморвка LeoECS
https://www.youtube.com/watch?v=_GthCXWlIdU
https://www.youtube.com/watch?v=_GthCXWlIdU
YouTube
Оптимизация игры на Unity. Entity Component System, LeoECS
LeoECS за 20 минут! Осваиваем Entity Component System на примере фрейморвка LeoECS
Салют, ты на канале Night Train Code 😎
Подробный урок по LeoECS
• 🎮 Скачать материалы из урока:
https://drive.google.com/file/d/1WPhteJQw1dkOerjsKaLsT5T6Y94wGVHk/view?usp=sharing…
Салют, ты на канале Night Train Code 😎
Подробный урок по LeoECS
• 🎮 Скачать материалы из урока:
https://drive.google.com/file/d/1WPhteJQw1dkOerjsKaLsT5T6Y94wGVHk/view?usp=sharing…
Вышла игра, написанная на Unity DOTS от студии Door 407, которую мы так очень ждали!
https://store.steampowered.com/app/1272320/Diplomacy_is_Not_an_Option/
https://store.steampowered.com/app/1272320/Diplomacy_is_Not_an_Option/
Steampowered
Save 55% on Diplomacy is Not an Option on Steam
Diplomacy is Not an Option is a strategy game set in a medieval fantasy world. Build your town and defenses, raise huge armies and fight against massive hordes of enemies. How long can you survive?
Интересные стаеечки про наш уютный ECS. На этот раз в блоге my.games
https://habr.com/ru/company/mygames/blog/590953/
https://habr.com/ru/company/mygames/blog/590953/
Хабр
Что такое ECS и с чем его компилят
Привет! Эта статья — первая в блоге MY.GAMES, международного разработчика и издателя видеоигр. Здесь мы объединим наработки и экспертизу всех 14 наших игровых студий. Впрочем, будем рассказывать не...
Sparse-set based ECS for Unity. Simple, flexible and fast.
Core part of architecture that I'm developing for all our future games, of any scale.
https://github.com/neon-age/Ecstasy
Core part of architecture that I'm developing for all our future games, of any scale.
https://github.com/neon-age/Ecstasy
Тут кто-то собрался с мыслями и доделал прекрасную статью для низкого старта в ECS. Ничего лишнего, всё по делу!
Оставляем комментарии и поддерживаем автора.
https://habr.com/ru/post/665276/
Оставляем комментарии и поддерживаем автора.
https://habr.com/ru/post/665276/
Хабр
Всё что нужно знать про ECS
Привет, Хабр! В этой статье я расскажу всё, что знаю про Entity-Component-System и попытаюсь развеять различные предубеждения об этом подходе. Здесь вы найдете много слов о преимуществах и недостатках...
Что можно посоветовать для нубаса, чтобы разобраться в ECS?
1. Всё что нужно знать про ECS: https://habr.com/ru/post/665276/
2. LeoECS - Легковесный C# Entity Component System фреймворк: https://github.com/Leopotam/ecs
3. Entity component system, основы: https://leopotam.com/2/
4. Создание шутера с LeoECS. Часть 1: https://habr.com/ru/post/573028/
5. Шаблон проектирования Entity-Component-System — реализация и пример игры: https://habr.com/ru/post/343778/
6. Entity Component System FAQ: https://github.com/SanderMertens/ecs-faq
7. ECS back and forth: https://skypjack.github.io/2019-02-14-ecs-baf-part-1/
8. Refactoring Game Entities with Components: https://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
9. Game Object Structure: Inheritance vs. Aggregation: http://gamearchitect.net/Articles/GameObjects1.html
10. Что такое Entity System Framework и зачем он нужен в геймдеве?: https://habr.com/ru/post/197920/
11. Создание dungeon crawler'а с LeoECS Lite. Часть 1: https://habr.com/ru/post/661085/
12. Что такое ECS и с чем его компилят, Андрей Боронников: https://github.com/Red-Cat-Fat/DemoLeoEcs (в readme ссылка на видео и статью на хабре)
1. Всё что нужно знать про ECS: https://habr.com/ru/post/665276/
2. LeoECS - Легковесный C# Entity Component System фреймворк: https://github.com/Leopotam/ecs
3. Entity component system, основы: https://leopotam.com/2/
4. Создание шутера с LeoECS. Часть 1: https://habr.com/ru/post/573028/
5. Шаблон проектирования Entity-Component-System — реализация и пример игры: https://habr.com/ru/post/343778/
6. Entity Component System FAQ: https://github.com/SanderMertens/ecs-faq
7. ECS back and forth: https://skypjack.github.io/2019-02-14-ecs-baf-part-1/
8. Refactoring Game Entities with Components: https://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
9. Game Object Structure: Inheritance vs. Aggregation: http://gamearchitect.net/Articles/GameObjects1.html
10. Что такое Entity System Framework и зачем он нужен в геймдеве?: https://habr.com/ru/post/197920/
11. Создание dungeon crawler'а с LeoECS Lite. Часть 1: https://habr.com/ru/post/661085/
12. Что такое ECS и с чем его компилят, Андрей Боронников: https://github.com/Red-Cat-Fat/DemoLeoEcs (в readme ссылка на видео и статью на хабре)
https://forum.unity.com/threads/experimental-entities-1-0-is-available.1341065/?ref=dtf.ru
чуть-чуть слоупоки)
чуть-чуть слоупоки)
Unity Forum
Official - Experimental Entities 1.0 is available
Hi everyone! We’ve just published a new experimental version of Entities and other ECS-based packages, including a suite of new features and...
Внимание! Внимание!
Дуров завёз фичу с темами для чатов. В ECS Chat почти 1000 подписчиков. А значит мы можем сделать маленький телеграм-форум и разобрать его на топики. Будем производить апгрейд и делить на разделы или всё в рамках одной ленты чата?
Дуров завёз фичу с темами для чатов. В ECS Chat почти 1000 подписчиков. А значит мы можем сделать маленький телеграм-форум и разобрать его на топики. Будем производить апгрейд и делить на разделы или всё в рамках одной ленты чата?
Anonymous Poll
67%
Да, классная идея. Все обсуждения будут отсортированы на топики, даже появится флудилка.
33%
Да ну. Одна лента лучше, всё в одном месте.
Ну что же. Давайте попробуем! 🔥
Чат превратился в форум со следующими топиками:
- ECS Comrade (Oбщее)
- Unity DOTS
- LeoECS
- Entitas
- Morpeh
- Другие ECS Фреймворки
- Флуд
Чтобы найти предыдущие сообщения:
1. Откройте чат и зайдите в его настройки (три вертикальные точки)
2. Выберите функцию "View As Messages"
3. Для поиск по общему чату
Буквально месяц посмотрим, оценим данную фичу. Всем спасибо за активное участие в развитии нашего сообщества 💪🏻
Чат превратился в форум со следующими топиками:
- ECS Comrade (Oбщее)
- Unity DOTS
- LeoECS
- Entitas
- Morpeh
- Другие ECS Фреймворки
- Флуд
Чтобы найти предыдущие сообщения:
1. Откройте чат и зайдите в его настройки (три вертикальные точки)
2. Выберите функцию "View As Messages"
3. Для поиск по общему чату
Буквально месяц посмотрим, оценим данную фичу. Всем спасибо за активное участие в развитии нашего сообщества 💪🏻
Всем салют!
Подведём итоги нашей реформы с чатом, где поделили всё на соответствующие топики:
🔸 Всего сообщений в чате: 62 877
🔸 Флуд: 4 518 сообщений
🔸 Morpeh: 2 729 сообщений
🔸 ECS Comrade (Общее): 2 183 сообщения
🔸 Leo ECS: 1 538 сообщений
🔸 Unity DOTS: 917 сообщений
🔸 Entitas: 120 сообщений
🔸 Другие фреймворки ECS: 65 сообщений
🔸 Unreal ECS: 7 сообщений
Можно смело сказать, что все адаптировались к новому формату и ни у кого с коммуникацией проблем не возникает. Даже получилось всё отсортировано и понятно.
Но всё-таки давайте проголосуем)
Подведём итоги нашей реформы с чатом, где поделили всё на соответствующие топики:
🔸 Всего сообщений в чате: 62 877
🔸 Флуд: 4 518 сообщений
🔸 Morpeh: 2 729 сообщений
🔸 ECS Comrade (Общее): 2 183 сообщения
🔸 Leo ECS: 1 538 сообщений
🔸 Unity DOTS: 917 сообщений
🔸 Entitas: 120 сообщений
🔸 Другие фреймворки ECS: 65 сообщений
🔸 Unreal ECS: 7 сообщений
Можно смело сказать, что все адаптировались к новому формату и ни у кого с коммуникацией проблем не возникает. Даже получилось всё отсортировано и понятно.
Но всё-таки давайте проголосуем)
Привыкли к новому формату в ECS чате?
Anonymous Poll
72%
Да, привыкнув стало удобно общаться на определённые темы
28%
Нет, верните сплошное полотно!
Forwarded from Геймдев, который мы заслужили
Unity снова увольняет разработчиков, в этот раз целых 600 человек. Джон Риччитьелло, великий СЕО Unity, объясняет увольнения «подготовкой к большему росту». Что этот болван собрался там растить без специалистов — непонятно. Возможно, что вырастет лишь уровень буллщита, бизнесмены это любят.
Но вообще я хочу отметить другой важный момент: из Unity увольняется (или его увольняют) Майк Эктон — это один из главных специалистов по ECS в индустрии. Именно он популяризировал в геймдеве data-oriented programming. Можно сказать, что с ним уходит целая эпоха.
DOTS в Unity — это его детище. У DOTS куча проблем, он не сильно удобен, не сильно полезен рядовым разработчикам, и скорее нужен для оптимизации внутренних систем движка. Но, так или иначе, из Unity уходит очень сильный и важный специалист.
В течение последних лет Unity теряла таких спецов чуть ли не каждый месяц. Мне кажется, что ближайшие пару лет будут решающими для всей компании. И я здесь крайне пессимистичен в своих прогнозах.
Но вообще я хочу отметить другой важный момент: из Unity увольняется (или его увольняют) Майк Эктон — это один из главных специалистов по ECS в индустрии. Именно он популяризировал в геймдеве data-oriented programming. Можно сказать, что с ним уходит целая эпоха.
DOTS в Unity — это его детище. У DOTS куча проблем, он не сильно удобен, не сильно полезен рядовым разработчикам, и скорее нужен для оптимизации внутренних систем движка. Но, так или иначе, из Unity уходит очень сильный и важный специалист.
В течение последних лет Unity теряла таких спецов чуть ли не каждый месяц. Мне кажется, что ближайшие пару лет будут решающими для всей компании. И я здесь крайне пессимистичен в своих прогнозах.
Forwarded from Gamedev suffering (Andrei Apanasik)
Разработчик Factorio поделился некоторыми подробностями работы внутренних систем, в частности, рассказал про ECS.
Большая часть игры не использует никакого подобия entity component system. ECS отлично подходит, когда нужно применить некоторое преобразование к набору данных независимо от каких-либо других переменных. К примеру, добавить вектор движения к текущей позиции. Но если у вас 5-10 переменных связаны со сменой позиции, то толку от ECS не будет.
Примером этого являются логистические и строительные роботы. У них есть много разных условий:
- Хватит ли энергии у робота, чтобы совершить полное движение?
- Вышла ли цель за пределы зоны логистической сети, и робот должен отменить задание, которое ему было приказано?
- Есть ли вообще у него работа, которую он должен выполнять, или он просто ждёт команды?
Общая проблема такова: все эти проверки используют данные, характерные для логистических роботов. Если бы робот использовал «компонент положения/движения», этот компонент не имел бы понятия ни об одном из этих условий. Можно попытаться включить эти условия в сам компонент, но он вряд ли будет очень читабельным и, вероятно, будет не очень по производительности.
Боевая система использует два вида снарядов: хитсканы и проджектайлы.
Для отрисовки логика прогоняет видимую область экрана в несколько потоков, находя, что нужно отобразить, и собирая информацию, которая позже отправляется на GPU.
Основные моменты, благодаря которым в Factorio всё хорошо с производительностью:
- Система быстрого сна/пробуждения, когда сущностям не нужно выполнять работу. Когда объект «засыпает», то он полностью исключается из цикла обновлений, пока что-то внешнее снова его не включит. Время сна/пробуждения O(1). Большинство вещей большую часть времени в ожидании изменения состояния. Например: если в сборочной машине заканчиваются ингредиенты, она просто выключается. Как только что-то добавляет ресурсы, действие помещения предметов в инвентарь уведомляет машину о том, что они были добавлены, что «пробуждает» машину.
- В худшем случае никакая часть логики обновления не может превышать O(N); если обновление 5 000 машин занимает 1 миллисекунду, то 10 000 должно занять максимум 2 миллисекунды. В идеале менее 2 миллисекунд, но это редко возможно.
- Уменьшение работы с кусками оперативки, которые необходимо тыкать каждый тик. Процессоры очень быстрые в наши дни, и основными ограничителями в большинстве игр-симуляторов являются загрузка памяти в CPU и выгрузка обратно в ОЗУ.
https://www.reddit.com/r/factorio/comments/13bsf3s/technical_questions/
#factorio
Большая часть игры не использует никакого подобия entity component system. ECS отлично подходит, когда нужно применить некоторое преобразование к набору данных независимо от каких-либо других переменных. К примеру, добавить вектор движения к текущей позиции. Но если у вас 5-10 переменных связаны со сменой позиции, то толку от ECS не будет.
Примером этого являются логистические и строительные роботы. У них есть много разных условий:
- Хватит ли энергии у робота, чтобы совершить полное движение?
- Вышла ли цель за пределы зоны логистической сети, и робот должен отменить задание, которое ему было приказано?
- Есть ли вообще у него работа, которую он должен выполнять, или он просто ждёт команды?
Общая проблема такова: все эти проверки используют данные, характерные для логистических роботов. Если бы робот использовал «компонент положения/движения», этот компонент не имел бы понятия ни об одном из этих условий. Можно попытаться включить эти условия в сам компонент, но он вряд ли будет очень читабельным и, вероятно, будет не очень по производительности.
Боевая система использует два вида снарядов: хитсканы и проджектайлы.
Для отрисовки логика прогоняет видимую область экрана в несколько потоков, находя, что нужно отобразить, и собирая информацию, которая позже отправляется на GPU.
Основные моменты, благодаря которым в Factorio всё хорошо с производительностью:
- Система быстрого сна/пробуждения, когда сущностям не нужно выполнять работу. Когда объект «засыпает», то он полностью исключается из цикла обновлений, пока что-то внешнее снова его не включит. Время сна/пробуждения O(1). Большинство вещей большую часть времени в ожидании изменения состояния. Например: если в сборочной машине заканчиваются ингредиенты, она просто выключается. Как только что-то добавляет ресурсы, действие помещения предметов в инвентарь уведомляет машину о том, что они были добавлены, что «пробуждает» машину.
- В худшем случае никакая часть логики обновления не может превышать O(N); если обновление 5 000 машин занимает 1 миллисекунду, то 10 000 должно занять максимум 2 миллисекунды. В идеале менее 2 миллисекунд, но это редко возможно.
- Уменьшение работы с кусками оперативки, которые необходимо тыкать каждый тик. Процессоры очень быстрые в наши дни, и основными ограничителями в большинстве игр-симуляторов являются загрузка памяти в CPU и выгрузка обратно в ОЗУ.
https://www.reddit.com/r/factorio/comments/13bsf3s/technical_questions/
#factorio
Reddit
From the factorio community on Reddit
Explore this post and more from the factorio community
Меня зовут Игорь Гулькин, и я Senior Unity Developer. За 5 лет накопилось много опыта, и я хотел бы поделиться с вами новым подходом, с помощью которого можно описывать игровые объекты декларативно внутри и компонентно снаружи.
https://habr.com/ru/articles/735244/
https://habr.com/ru/articles/735244/