Спасибо большое за статью, особенно за примеры и то, что не забыли про фильтрацию сущностей и JobSystem. Я как раз хотел написать свой обзор Unity ECS, но вы меня опередили) Уже несколько лет занимаюсь вопросом разработки на ECS, тема для меня горячая, можно почитать в моих последних статьях на Хабре.
Что хотелось бы добавить: текущая реализация пока работает только редакторе. Она пишется, можно сказать, всем миром, т.к. Unity стараются собрать по максимуму опыт специалистов в области и их реализация еще сто раз может измениться. На ближайшей Unite Berlin скорее всего расскажут о дальнейшем развитии.
Также добавил вас в свой небольшой обзор статей про ECS на Хабре (см. в конце статьи). Примечательно, что наши статьи вышли практически одновременно, это очень горячая тема на сегодня.
Точно так же подошли бы: поискали бы готовый движок 3d-физики, который бы мог вписаться в наши техтребования (например, C#, детерминизм/недетерминизм и тд). Или вы имеете ввиду, какие конкретные физические движки мы бы выбрали?
В GameState есть сущности с компонентом UserInput от каждого игрока. Есть система, которая проходится по всем компонентам этого типа и обрабатывает ввод.
По поводу событий: в некоторых реализациях ECS («закрытых» пока для внешнего мира, поэтому тут не упомянул) я видел подходы с реализованными событиями. Мне лично понравилось и мы думаем над ними.
Вы имеете ввиду моменты, относящиеся к нашей реализации? Было бы интересно послушать, ибо это наш первый опыт, и мы работаем над тем, чтобы сделать еще круче.
Да. Если в случае с рекламой обычно всегда есть источник трафика (обычно, «вшивается» в ссылку), то с органикой нет особо инфы о том, где пользователь узнал о вашем приложении/сайте, где кликнул на ссылку. Вот Google пытается для нас это установить. Очень полезная инфа.
Google каждый год выдает «комплект для выживания»: солнцезащитные очки, крем против загара, футболка, термос для водички. Температура в Долине во время ивента градусов двадцать, но солнце палит жутко. Я намазался только после обеда, но было уже поздно — обгорел. Остальные дни спасался перебежками из тенька в тенечек.
Под органикой подразумеваются все те пользователи, которые сами каким-то образом нашли ваше приложение (например, в поиске Google), а не через рекламу.
Да, говоря про юнит-тесты, я больше имел ввиду клиента и геймплей. У нас есть тесты на стороне meta-сервера, мы подумываем про юнит-тесты на системные классы/задачи в клиенте. На геймплей пока нет, по причинам, которые вы уже сами раскрыли. А вот системные/интеграционные тесты на мета-часть игры (загрузка профиля, покупки, смена снаряжения, нажатие кнопок и тд) задача стоит на специальный отдел, который делает это для всех проектов в компании. Как они это делают — можем тоже отдельную статью написать.
Про prediction и rollback будет отдельная большая статья. В целом, недетерминизм физики на них особо сильно не влияет. Во многих «взрослых» играх это работает и без детерминированной физики, у нас тоже.
Честно говоря, выбор Volatile Physics был плохим решением. На момент решения других альтернатив на C# особо не было, а еще один проект в компании уже использовал эту библиотеку и тогда еще особо проблем не было. Вообще, Volatile Physics — это больше «проба пера» одного программиста. Использованы самые неоптимальные алгоритмы, много багов. Например, в одном месте вместо sin использован cos(или наоборот, не помню). Мы уже форкнулись и сделали пуллриквесты с фиксами. Подумываем о замене физического движка, благо с нашей архитектурой это не будет большой проблемой.
Спасибо за фидбек!
На самом деле большая часть компании работает над War Robots и команда проекта только растет. Проекту уже 4 года, но нового запланировано еще на годы вперед :)
А на новый проект мы набрали новую команду, потому что проект с технической точки зрения отличается от WR. Мы придерживаемся принципа „Нет опыта в чем-то — найми тех, кто уже такое делал и научись у них».
Мы судим по отзывам и аналитикам в абсолютных значениях. По нашим данным, у проекта все хорошо, более того, новые обновления аналогично отлично заходят)
Изначально юнит-тесты не задумывались и сейчас пока не видится это критичным. Сейчас игра на стадии проверки гипотез, а для этого юнит-тесты не нужны, к тому же код достаточно качественный. (но на другом проекте, например, юнит-тесты есть).
Отдельная команда будет писать тесты по дизайн-документу. В основном это тесты UI и меты, пока что. Им для этого не нужно ничего знать о коде, они работают на верхнем уровне, уровне приложения, с точки зрения игрока.
TDD нет. Т.е. мы в первую очередь пишем код игры. Но о юнит-тестах думаем. В планах подключить в первую очередь тест-сценарии на реальных устройствах типа «игрок загрузил игру, нажал туда-то, потом сюда, получил такой-то результат и тд». У нас есть отдельная команда по автотестам на разные проекты, сами тест-сценарии пишут QA.
Что хотелось бы добавить: текущая реализация пока работает только редакторе. Она пишется, можно сказать, всем миром, т.к. Unity стараются собрать по максимуму опыт специалистов в области и их реализация еще сто раз может измениться. На ближайшей Unite Berlin скорее всего расскажут о дальнейшем развитии.
Также добавил вас в свой небольшой обзор статей про ECS на Хабре (см. в конце статьи). Примечательно, что наши статьи вышли практически одновременно, это очень горячая тема на сегодня.
По поводу событий: в некоторых реализациях ECS («закрытых» пока для внешнего мира, поэтому тут не упомянул) я видел подходы с реализованными событиями. Мне лично понравилось и мы думаем над ними.
На самом деле большая часть компании работает над War Robots и команда проекта только растет. Проекту уже 4 года, но нового запланировано еще на годы вперед :)
А на новый проект мы набрали новую команду, потому что проект с технической точки зрения отличается от WR. Мы придерживаемся принципа „Нет опыта в чем-то — найми тех, кто уже такое делал и научись у них».
Отдельная команда будет писать тесты по дизайн-документу. В основном это тесты UI и меты, пока что. Им для этого не нужно ничего знать о коде, они работают на верхнем уровне, уровне приложения, с точки зрения игрока.