ECS Comrade
1K subscribers
21 photos
2 videos
2 files
129 links
Welcome, comrade, to ECS Community! This channel is for those who study, create and develop projects based on a system of entities and components. All stuff for studying ECS are dropped here

Feedback: @ECSCBot
Chat: @ecschat
Download Telegram
Хорошая статья, поможет не только новичкам, но и тем кто пытается понять ECS глубже.

https://medium.com/clean-code-channel/entity-component-system-ace3611c9b30
Нас 1000! Ура.

В честь этого включаем реакции!
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
Что можно посоветовать для нубаса, чтобы разобраться в 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 ссылка на видео и статью на хабре)
Внимание! Внимание!

Дуров завёз фичу с темами для чатов. В ECS Chat почти 1000 подписчиков. А значит мы можем сделать маленький телеграм-форум и разобрать его на топики. Будем производить апгрейд и делить на разделы или всё в рамках одной ленты чата?
Anonymous Poll
67%
Да, классная идея. Все обсуждения будут отсортированы на топики, даже появится флудилка.
33%
Да ну. Одна лента лучше, всё в одном месте.
Ну что же. Давайте попробуем! 🔥

Чат превратился в форум со следующими топиками:
- 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 сообщений

Можно смело сказать, что все адаптировались к новому формату и ни у кого с коммуникацией проблем не возникает. Даже получилось всё отсортировано и понятно.

Но всё-таки давайте проголосуем)
Unity снова увольняет разработчиков, в этот раз целых 600 человек. Джон Риччитьелло, великий СЕО 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
Меня зовут Игорь Гулькин, и я Senior Unity Developer. За 5 лет накопилось много опыта, и я хотел бы поделиться с вами новым подходом, с помощью которого можно описывать игровые объекты декларативно внутри и компонентно снаружи.

https://habr.com/ru/articles/735244/