Записали я Александром(@chromealex) - автором ME.BECS разбор демо игры на фреймворке.
Поговорили про внутреннее устройство и какие фичи уже есть. Алекс рассказал для чего пришлось писать собственный аллокатор для Unity и как работает логика визуального проектирования порядка систем в ECS, где притаилась кодогенерация и причем тут многопоточка.
Получилось очень интересно, как минимум мне самому. Надеюсь, что и вы найдете для себя что-то.
P.S Канал Александра: /channel/unsafecsharp
DOTS development status and next milestones
Unity выкатила официальный пост по состоянию DOTS на ноябрь 2023 года. Они еще раз напомнили, что с версии Unity 2022 LTS DOTS можно использовать в релизе, ну пожалуйста используйте. Собрали список примеров и материалов с которых можно начать погружение, нырнуть с головой, да.
Я приведу их вам прямо тут:
- Entities API Overview
- ECS Samples
- Learn Content
- ECS Network Racing
- Megacity Multiplayer
- Experimental Character Controller Package
- Stickylock Studios - Histera
- Sunblink Entertainment - HEROish
- Walaber Entertainment - JellyCar Worlds
- Kasedo Games - IXION
- Stunlock Studios - V Rising
- Ramen VR - Zenith: The Last City
- Electric Square - Detonation Racing
Ну и показали Roadmap для DOTS. Вот несколько пунктов:
- Добавят инструмент для создания больших миров
- Очень активно работают над системой анимации на DOTS, обещают глубокую интеграцию в инструмент по Open World. Да, вам не показалось, сейчас в релизной версии DOTS пакета анимаций еще нет.
- Eще больше улучшения параллельной работы систем - больше скорости богу скорости.
- Официальная поддержка DOTS для Unity 2023 "скоро будет". Оказывается ее еще нет =_=
Про большие модульные миры - круто. Но я все еще не понимаю почему нельзя было в основу заложить возможность интеграции одного модуля в другой. Представьте - весь ваш огромный Open World на DOTS пакете, который вы скачали из ассет стора. А дальше по нему бегают ваши монобехи.
Стало ли такое решение МАКСИМАЛЬНО быстрым - нет. Было бы такое решение удобным - да. Зачем? Как минимум потому что у компании огромное комьюнити которое уже умеет "иначе". А во вторых это не противоречит идеи скорости. Как по мне при таких огромных системных изменениях как переход на DOD, в основу стоило заложить возможность интеграции с не DOD мирами, пусть и как прослойку.
И в начале развития DOTS так и было, первым появился Hybrid Renderer, который привносил ECS в стандартный мир монобехов. Дальше что-то случилось в разработке и решено было брать только "Чистокровных" потомков ECS. Будем смотреть что получится дальше.
https://coffeebraingames.wordpress.com/2023/06/25/chunk-iteration-in-entities-1-0/
Читать полностью…https://habr.com/ru/articles/742376/?utm_campaign=742376&utm_source=habrahabr&utm_medium=rss
Читать полностью…Меня зовут Игорь Гулькин, и я Senior Unity Developer. За 5 лет накопилось много опыта, и я хотел бы поделиться с вами новым подходом, с помощью которого можно описывать игровые объекты декларативно внутри и компонентно снаружи.
https://habr.com/ru/articles/735244/
Unity снова увольняет разработчиков, в этот раз целых 600 человек. Джон Риччитьелло, великий СЕО Unity, объясняет увольнения «подготовкой к большему росту». Что этот болван собрался там растить без специалистов — непонятно. Возможно, что вырастет лишь уровень буллщита, бизнесмены это любят.
Но вообще я хочу отметить другой важный момент: из Unity увольняется (или его увольняют) Майк Эктон — это один из главных специалистов по ECS в индустрии. Именно он популяризировал в геймдеве data-oriented programming. Можно сказать, что с ним уходит целая эпоха.
DOTS в Unity — это его детище. У DOTS куча проблем, он не сильно удобен, не сильно полезен рядовым разработчикам, и скорее нужен для оптимизации внутренних систем движка. Но, так или иначе, из Unity уходит очень сильный и важный специалист.
В течение последних лет Unity теряла таких спецов чуть ли не каждый месяц. Мне кажется, что ближайшие пару лет будут решающими для всей компании. И я здесь крайне пессимистичен в своих прогнозах.
Всем салют!
Подведём итоги нашей реформы с чатом, где поделили всё на соответствующие топики:
🔸 Всего сообщений в чате: 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 сообщений
Можно смело сказать, что все адаптировались к новому формату и ни у кого с коммуникацией проблем не возникает. Даже получилось всё отсортировано и понятно.
Но всё-таки давайте проголосуем)
https://forum.unity.com/threads/experimental-entities-1-0-is-available.1341065/?ref=dtf.ru
чуть-чуть слоупоки)
Что можно посоветовать для нубаса, чтобы разобраться в 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 ссылка на видео и статью на хабре)
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
Вышла игра, написанная на Unity DOTS от студии Door 407, которую мы так очень ждали!
https://store.steampowered.com/app/1272320/Diplomacy_is_Not_an_Option/
LeoECS за 20 минут! Осваиваем Entity Component System на примере фрейморвка LeoECS
https://www.youtube.com/watch?v=_GthCXWlIdU
Morpeh.Godot
Первая версия демо портирования Morpeh ECS на Godot. Кубики полетели, а значит доказательства получены.
Надо отдать должно авторам с моей стороны не пришлось плясать с бубном, завелось все очень просто.
Что дальше?
- Дальше нужен полноценный демо проект, чтобы проникнуться проблемами инструментария
- Сделать удобный сахар по аналогии с Unity версией
- Дождаться когда Godot 4 добавит поддержку мобильных платформ.
- Репозиторий с Demo проектом
#вакансия
Команда SIXHANDS в поисках Unity Developer для проекта на ME.ECS
Что ждёт:
- Работа над многопользовательской игрой в жанре Арена Шутер (WebGL);
- Плотная работа с бэкенд-разработчиком проекта;
- Прототипирование будущих фич;
- Итеративная работа над имплементацией фич.
Требования:
- Опыт работы с архитектурой ME.ECS;
- Опыт разработки игр с многопользовательским режимом реального времени;
- Портфолио из проектов цифровых игр.
Будет плюсом:
- Опыт разработки на одном из ECS движков: Morpeh, LeoECS, Entities
Более подробное описание вакансии здесь
Откликнуться и написать в личку: @Vasilisa_nes
Разработчик 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
Друзья, на правах рекламы
Админ ECS Comrade со своей командой запустили проект для помощи соло-разработчикам и коллективам в их игровых проектах
https://gdpc.ru
Это интернет-магазин геймдев услуг. В ходе разработки над своими проектами не обойтись над решением геймдизайнерских, музыкальных и маркетинговых задач.
Помогая разработчикам команда gdpc.ru берёт на себя исполнение и создание ассетов, звуковых эффектов и прочих услуг, которые ваш проект не сможет обойти стороной.
Заходите на сайт и выбирайте нужные вам услуги из списка.
Спасибо за внимание! :)
Ну что же. Давайте попробуем! 🔥
Чат превратился в форум со следующими топиками:
- ECS Comrade (Oбщее)
- Unity DOTS
- LeoECS
- Entitas
- Morpeh
- Другие ECS Фреймворки
- Флуд
Чтобы найти предыдущие сообщения:
1. Откройте чат и зайдите в его настройки (три вертикальные точки)
2. Выберите функцию "View As Messages"
3. Для поиск по общему чату
Буквально месяц посмотрим, оценим данную фичу. Всем спасибо за активное участие в развитии нашего сообщества 💪🏻
Тут кто-то собрался с мыслями и доделал прекрасную статью для низкого старта в ECS. Ничего лишнего, всё по делу!
Оставляем комментарии и поддерживаем автора.
https://habr.com/ru/post/665276/
Интересные стаеечки про наш уютный ECS. На этот раз в блоге my.games
https://habr.com/ru/company/mygames/blog/590953/
Хорошая статья, поможет не только новичкам, но и тем кто пытается понять ECS глубже.
https://medium.com/clean-code-channel/entity-component-system-ace3611c9b30