Size: a a a

RU Rust GameDev — русскоговорящее сообщество

2020 November 14

AI

Alex Ilizarov in RU Rust GameDev — русскоговорящее сообщество
Mikola Summer Duck
Ивенты же.
Ивенты наверное на многопоточку сложно натянуть
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
??? Почему?
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Тем более большинство ецс менеджит зависимости.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
То есть или у тебя последовательные системы и многопоточность через форк-джоин, или параллельные системы и граф зависимостей. В обоих случаях ивенты работают.
источник

AI

Alex Ilizarov in RU Rust GameDev — русскоговорящее сообщество
Mikola Summer Duck
??? Почему?
Я сейчас может туплю, но в bevy кажись эвенты системы по очереди обрабатывают
источник

AI

Alex Ilizarov in RU Rust GameDev — русскоговорящее сообщество
А вппочем игнорируй меня потому что я не помню че и как
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Честно не знаю как в беви.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Все же злоупотреблять эвентами не надо.
Лучше всего их для чего-то редкого использовать.
Если эвент какой-то будет по тысяче раз каждый кадр срабатывать будет фигово.

is_dirty флаг можно было бы просунуть в саму ecs. В спексе раньше можно было фильтровать даже entity у которых до этого выставлен флаг у нужного компонента. А выставлялся он при мутабельной итерации по этому компоненту. Даже если мутации не произошло.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
В ecs на архетипах можно например в чанки завезти по флагу на компонент и там метить если по компонентам энтити из чанка итерировались мутабельно. А потом фильтровать по dirty/clean
источник

KK

Kirill (Cykooz) Kuzm... in RU Rust GameDev — русскоговорящее сообщество
Roman
Все же злоупотреблять эвентами не надо.
Лучше всего их для чего-то редкого использовать.
Если эвент какой-то будет по тысяче раз каждый кадр срабатывать будет фигово.

is_dirty флаг можно было бы просунуть в саму ecs. В спексе раньше можно было фильтровать даже entity у которых до этого выставлен флаг у нужного компонента. А выставлялся он при мутабельной итерации по этому компоненту. Даже если мутации не произошло.
В bevy есть такой флаг, за счёт специальной обёртки вокруг компонентов получаемых системой. Обёртка имплементит DerefMut, и выставляет внутри себя флаг в true если такой deref случился.
И есть возможность в запросах использовать Changed<MyComponentType>. Только вот видимо не везде это используется внутри самого Bevy
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Вопрос в том, эффектина ли фильтрация
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Или аналоична тому что флаг вставлен в сам компонент
источник

L

Lain-dono in RU Rust GameDev — русскоговорящее сообщество
Roman
В ecs на архетипах можно например в чанки завезти по флагу на компонент и там метить если по компонентам энтити из чанка итерировались мутабельно. А потом фильтровать по dirty/clean
В legion что-то такое как раз есть. Но там немного не так работает. По идее просто версии смотрит. И называется maybe_changed
источник

L

Lain-dono in RU Rust GameDev — русскоговорящее сообщество
Вообще надо полагать эти dirty flags профитны, ежели относительно много вычислять. Если оно хорошо попадает в кэши, а вычислять мало, то выигрыша может быть не так много
источник

L

Lain-dono in RU Rust GameDev — русскоговорящее сообщество
Но надо мерять конкретику
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Maybe потому что хотя бы один из чанка changed заставит проитерироваться по всему чанку
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Скипать целый чанк по-любому профитно
источник

L

Lain-dono in RU Rust GameDev — русскоговорящее сообщество
Roman
Скипать целый чанк по-любому профитно
Да, ты прав
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Но вот как по версии определять? Система помнит последнюю версию?
источник

L

Lain-dono in RU Rust GameDev — русскоговорящее сообщество
Roman
Но вот как по версии определять? Система помнит последнюю версию?
Надо смотреть, я не вникал
источник