Urho3DФорумОФФТОП

Болталка (422 стр)

Страницы: 1421 422 423 424426 Следующая »
#6315
15:02, 14 окт 2024

1vanK
> А учитывая что ECS задумывался как плоская хрень, то использование в ней иерархии просто заваливание инвалида костылями
Ну так если тебе нужна иерархия объектов, тебе нужно где-то ее сделать, независимо от того, какую реализацию системы сцены ты используешь.

Ты описываешь (словами) пушку как сущность. Попытка сделать ее комопнентом — изначально костыль.

#6316
15:05, 14 окт 2024

Да не нужна мне иерархия, я ее хочу избежать.

Если я начинаю использовать костылеобразную иерархию, мне этот ecs нафиг не вперся, ибо без него иерахия будет лучше выглядеть и работать.

#6317
15:05, 14 окт 2024

1vanK
> Я же писал об этом, это приводит к иерархии, которую я хочу избежать и для которой ECS не очень приспособлен.
Иерархию делать сложнее, да, потому что ты больше не являешься единоличным владельцем всего, а хранишь все штуки в общем хранилище. Но вполне делаемо.

Это сложность — цена за все преимущества плоского хранилища. Упрощаешь вещи в одном месте, усложняешь в другом. Выбираешь, что тебе важнее.

#6318
15:08, 14 окт 2024

1vanK
> Если я начинаю использовать костылеобразную иерархию, мне этот ecs нафиг не вперся, ибо без него иерахия будет лучше выглядеть и работать.
Ну да. Если тебе нужна иерархия, но не нужны фичи плоского хранилища, то зачем использовать плоское хранилище? Используй древохранилище. Ты потеряешь все знание о глобальном состоянии сцены (если ты не будешь трекать его вручную каждый раз), но иерархия будет естественным образом сформирована.

#6319
15:10, 14 окт 2024

Суть в том, что этого никто не мерял, это полная чушь, что оно кэш френдли.

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

#6320
15:11, 14 окт 2024

Eugene
> Ну да. Если тебе нужна иерархия, но не нужны фичи плоского хранилища, то зачем использовать плоское хранилище?

Так в том то и вопрос, это элементарный пример, где без иерархии никак, это какую-то синтетику надо выдумывать, чтобы оно в ecs себя хорошо чувствовало

#6321
15:15, 14 окт 2024

1vanK
> Суть в том, что этого никто не мерял, это полная чушь, что оно кэш френдли.
А причем тут кеш-френдли?

С плоским хранилищем я могу посмотреть на тип компонента Т и мгновенно получить все объекты, у кого он есть. Или мгновенно узнать, есть ли произвольный компонент у объекта. Это невозможно сделать с деревом (без нудной возни с ручным треканием каждого компонента где-то).

Если тебе не нужны эти фичи, не используй плоское хранилище.

#6322
15:18, 14 окт 2024

Как часто тебе надо смотреть все объекты с типом Т? И нужен ли именно для этой задачи ECS?

#6323
15:19, 14 окт 2024

Внутри ECS не делает никакой магии, тот же массив с drawable можно ручками сформировать, а не городить в своем проекте стену из костылей в виде ecs

#6324
15:24, 14 окт 2024

Хотя с drawable плохой пример, в котором ecs обострется еще сильнее, когда их надо хранить в октодереве

#6325
15:25, 14 окт 2024

1vanK
> Как часто тебе надо смотреть все объекты с типом Т?
Ну, поскольку я использую EnTT, у меня 100% кода такие. Сложно сказать, сколько мест я бы смог органично заменить на LogicComponent::Update, а сколько нет. Я не хочу пытаться.

> Внутри ECS не делает никакой магии, тот же массив с drawable можно ручками сформировать
Ну как бы я манал ручками формировать и поддерживать сто массивов. Иерархию я хотя бы один раз сделал и она работает, а костыль в виде ручного массива мне на каждый чих и пук дописывать придется.

#6326
15:30, 14 окт 2024

1vanK
> Хотя с drawable плохой пример, в котором ecs обострется еще сильнее, когда их надо хранить в октодереве
Чем EnTT в этом плане отличается от того, как урха прямо сейчас втыкает объекты в октодерево?) Кстати версия Урхи тоже нерасширяемое днище то еще. Попробуй добавить опциональную альтернативу октодереву.

#6327
15:30, 14 окт 2024

Если что это не нытье от меня, как от чела, который не осилил. Это нытьё от чела, который осилил, и пришел к выводу, что ecs - говнище )) Я переписал леталку на ecs довольно быстро и теперь гораздо больше времени гроблю на то, чтобы оно было человекочитаемым, разбить на компоненты правильно и т.д. https://github.com/dviglo2d-learn/mini_games/tree/fdfddd

#6328
(Правка: 15:40) 15:38, 14 окт 2024

1vanK

> Если что это не нытье от меня, как от чела, который не осилил. Это нытьё от чела, который осилил, и пришел к выводу, что ecs - говнище ))
Чел, который забивает гвозди микроскопом, и жалуется на неудобную ручку.

> Я переписал леталку на ecs довольно быстро и теперь гораздо больше времени гроблю на то, чтобы оно было человекочитаемым, разбить на компоненты правильно и т.д.
"Переписывание" это вообще дурацкая затея кмк. Это как переписывать код с retained mode UI на immediate mode UI или наоборот. Подход к архитектуре насколько разный, что любое переписывание будет невыносимо болезненным и/или хреновым.

Я свой игровой EnTT код на урховские компоненты вообще переписать не смогу (без кучи ручной копипасты и боли), он на них тупо не ложится.

#6329
15:46, 14 окт 2024

Eugene
> Я свой игровой EnTT код на урховские компоненты вообще переписать не смогу (без кучи ручной копипасты и боли), он на них тупо не ложится.
Немного разверну пример.

Вот у меня есть три разные игровые системы, которые делают разные вещи, читают данные, пишут данные.

Одна работает только с объектами, у которых есть компоненты А, Б, В.
Вторая работает только с объектами, у которых есть компоненты А, Б, Г.
Третья работает только с объектами, у которых есть компоненты Б, В, Г.

Вопрос знатокам — как мне переписать эти три системы на урховские компоненты, без использования костылей в виде ручных массивов и трекинга?

В EnTT это просто три цикла в трех разных функциях, проще некуда.

Страницы: 1421 422 423 424426 Следующая »
Urho3DФорумОФФТОП