Как стать автором
Обновить

Комментарии 6

Довольно интересный пост, но заметил неточность с тестами.

MonoBehaviour должен быть несколько другого вида, чтобы избежать несколько аллокаций Vector3:

    void Update()
    {
        var position = transform.localPosition; // тут новый
        transform.localPosition = new Vector3(position.x, position.y, position.z + 1); // тут новый
    }

Думаю каждый фрейм 200к объектов создавать выходит тяжеловато.

Вот более справедливый код:

        private Vector3 point;

        void Start() {
            point = transform.localPosition;
        }

        void Update() {
            point.z += 1;
            transform.localPosition = point;
        }

Добрый день, спасибо большое за рекомендацию. Я провел тест с MonoBeh еще раз и получил другие цифры и возросшую производительность. Стоит уточнить, что девайс не менялся.

Но дело не в аллокациях. Дело в том, что вы не вызываете каждый фрейм get localPosition.

Vector3 отрабатывается на стеке. Это почти бесплатно!

В ECS подходе все эти данные отработаются в одном Update Loop. Что даст еще больший прирост.

MonoBeh - аллокации в Update
MonoBeh - сохранение в локальную переменную

И вот в 2024м году все очень плохо с ситуацией в рамках ECS фреймворков для юнити
Лео сдох, максимально глупо - разраб решил наплодить 3 вариации своего фреймворка и вообще ушел в закрытые исходники - что не есть хорошо для комьюнити; в итоге для новых проектов его брать очень плохая идея (еще мемная ситуация с ним получается, такая же как в свое время с zenject'ом - фигава куча мертвых форков, эх, как же разрабы использующие юнити слюняво не умеют вести свои проекты)
ECS от самих юнитеков перемудрен чрезмерно и по всей день очень больно сетапится в проекте
Unity Actors - выглядит самым вкусным из всех, но плохо развит
Entitas - все еще перемудрен, и в итоге смысл его брать если есть ECS от самой юнити с такой же дичью в разработке
Остальные сдохли по непонятным причинам

На начало 2025:

dots классный, но пока что в нем не хватает анимаций. Да, есть всякие готовые инструменты из asset store для шейдерных анимаций, но они и стоят.. хотя я не пробовал сделать свой такой.. может это и не так сложно..

Вроде как в этом году должен выйти от самих unity новый инструмент для работы с анимациями с поддержкой ecs. На какой-то конференции уже показывали демку.

Как по мне, сейчас нехватает не только некоторого функционала, но и подробного руководства. Т.е. не автосгенерированной "документации", не готовых шаблонов, а именно поэтапного объяснения того, что и как использовать и в каких случаях.

А ещё эти бесячие "особенности", когда нужно создать какую-нибудь систему, которая нигде не документирована вообще, что бы она выполнилась один кадр и что-то там запустила под капотом движка, что бы например начал работать райкаст на клиентской стороне, пока он не подключён к серверу.

Но... Производительность конечно всё окупает! Никогда не думал, что мой ноут со встроенной UHD-видюшкой сможет потянуть рендер нескольких тысяч объектов с V-Sync в стабильных 60 кадрах

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации