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

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

нет, мы не используем компоненту для этого. У нас у сущности есть поле parent всегда. Это указатель на родительскую сущность. У корня он равен nullptr

А как у вас вообще реализована ECS? Это просто набор компонентов или как сделано у Unity — с архетипами? Насколько ваша реализация cache-friendly? Если ходить в parent по указателю — велик шанс нарваться на cache miss. Родитель должен где-то рядом располагаться.

у нас было что-то похожее на архетипы ранее. Благодаря этому у нас была очень долгая вставка компонент, но константное получение их при этом. Мы заменили на среднюю сложность вставки и среднюю сложность получения и суммарно выиграли от этого. Насчет cache-friendly вопрос слишком абстрактен. Поле parent всегда указывает на валидную сущность, либо равно нулю.

Поддерживаю, как это устроено? Видеть в рантайм коде перебор Conlrol'ов и запросы GetComponent на каждой итерации в контексте ECS выглядит очень странно по мне. Чем тогда это отличается от какого-нибудь сцен-графа с компонентой моделью, например?

не совсем понимаю сравнение сцен-графа и ECS. Сцена-граф это структура данных, а ECS это более, чем просто структура данных — в ECS есть динамика, то есть, системы. А в целом именно пассивная часть да похожа на сцена-граф у нас.

ECS, это прежде всего дата-ориентированный дизайн. Системы в ECS обрабатывают данные т.е. компоненты, а не сущности (Control). Ни каких переборов сущностей и запросов GetComponent там быть не должно, тем более проверок в цикле наличия компонент. Другая идеология. Собственно вопрос локальности обрабатываемых данных здесь принципиален и именно эту задачу, должна решать ECS. Процессинг, который вы привели в листинге, имеет объектно-ориентированный дизайн. Без какого-либо контекста, ровно такой же метод будет в случае со сцен-графом или другой подобной структурой с навешанными на узлы компонентами (компонентной моделью) и мы также будем итерироваться по этим узлам (Control'ам), запрашивать у узла нужны компонент и выполнять какие-то действия.

Дизайн стал приятным, минималистичным и плоским. Но вот картинки для премиум-танков в магазине все равно не очень. Графика достаточно хорошая (для мобильных — топ), физика хорошая. Спасибо команде, которая отвечает за техническую часть.
offtop
Я играю в Blitz уже 6 лет, и мне не нравятся действия со стороны «отдела баланса». Зачем вывели птуров и сделали коллекционными много хороших песочных танков? :)

спасибо за отзыв! Я передам это в соответствующий отдел.

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