Size: a a a

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

2020 December 09

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Andrey @ozkriff Lesnikóv
Бенчи-то показал?
Реализацией он занимается в 3-х последующих видео.
источник

BD

Berkus Decker in RU Rust GameDev — русскоговорящее сообщество
Mikola Summer Duck
Что меня зацепило так это упомянутая вскользь идея жать энтити не по компонентам, а каким-нибудь LZ4.
тормоLZа же будут, не?
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Berkus Decker
тормоLZа же будут, не?
LZ4 обещает всего 2х слоудаун по сравнению с мемкопи, так что не факт, надо мерить по лейтенси.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
К тому же обычного оверхеда вроде парсинга хедера не будет, так как ты знаешь все параметры наперёд
источник

BD

Berkus Decker in RU Rust GameDev — русскоговорящее сообщество
возможно когда овермного энтитей это и будет полезно, д
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Не ну так-то мы уже делаем это самое сжатие в ецс, но методом знающим про структуру.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
А фишка в том чтоб сделать так, чтоб энтити гет не знал про структуру. Зерокопи сериализатор -> лз4 -> … -> профит!
источник

AL

Andrey @ozkriff Lesn... in RU Rust GameDev — русскоговорящее сообщество
меня таки смущает вопрос кешей - по изначальной задумке же ecs'ы сильно опирались на малое количество кэшмисов как раз за счет того, что в идеале системы итерировались по минимальному количеству упакованных подряд в SOA компонент. вроде как, даже лишний if был не тру штукой.
источник

RA

Roman Akberov in RU Rust GameDev — русскоговорящее сообщество
Andrey @ozkriff Lesnikóv
меня таки смущает вопрос кешей - по изначальной задумке же ecs'ы сильно опирались на малое количество кэшмисов как раз за счет того, что в идеале системы итерировались по минимальному количеству упакованных подряд в SOA компонент. вроде как, даже лишний if был не тру штукой.
Мне казалось, что изначально ECS был не только (или даже не столько) для перформанса, а для решения задач вида "как нам сделать говорящий меч". А потом пришли перформанс фрики со своими линейными кэш-оптимальными итерациями. И достигают их ценой того, что взять/добавить/удалить компонент "дорого/сложно", хранить в компоненте ссылку на другую сущность "дорого/сложно", короче, все кроме простейшего position += velocity * t "дорого/сложно". А от изначальной идеей максимальной гибкости мало чего осталось. При этом условный инди разработчик использует ECS для условного своего рогалика мечты, в котором сущностей будет < 1000 и на кэш локалити можно было бы вообще забить, а вот гибкость как раз хотелось бы иметь.
источник

AL

Andrey @ozkriff Lesn... in RU Rust GameDev — русскоговорящее сообщество
Roman Akberov
Мне казалось, что изначально ECS был не только (или даже не столько) для перформанса, а для решения задач вида "как нам сделать говорящий меч". А потом пришли перформанс фрики со своими линейными кэш-оптимальными итерациями. И достигают их ценой того, что взять/добавить/удалить компонент "дорого/сложно", хранить в компоненте ссылку на другую сущность "дорого/сложно", короче, все кроме простейшего position += velocity * t "дорого/сложно". А от изначальной идеей максимальной гибкости мало чего осталось. При этом условный инди разработчик использует ECS для условного своего рогалика мечты, в котором сущностей будет < 1000 и на кэш локалити можно было бы вообще забить, а вот гибкость как раз хотелось бы иметь.
Я не очень силен в истории ecs'ов) первые упоминания, что я видел - статейки про тони хоука и блог Bitsquid'ов. Там как раз большой упор на оптимизационную сторону вопроса был. Плюс, я тогда еще в варгейминге был и интересовался в первую очередь написанием больших движков, тоже может на оптику восприятия влиять
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Andrey @ozkriff Lesnikóv
меня таки смущает вопрос кешей - по изначальной задумке же ecs'ы сильно опирались на малое количество кэшмисов как раз за счет того, что в идеале системы итерировались по минимальному количеству упакованных подряд в SOA компонент. вроде как, даже лишний if был не тру штукой.
По моему опыту кешфрендлинесс в ецс случается только в простых случаях и когда сойдутся звёзды.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Как только начинается сложная логика кешфрендлинесс проходит. Даже если отбросить случаи когда тебе нужен рандом-аксес, ецс предполагает что энтити будут итерироваться в порядке, в котором они лежат в хранилище, что часто не так, часто бывает что для эффективности твои энтити должны быть отсортированы по какому-то своему свойству, вроде положения в иерархии трансформаций или Z-слоя.
источник

MS

Mikola Summer Duck in RU Rust GameDev — русскоговорящее сообщество
Roman Akberov
Мне казалось, что изначально ECS был не только (или даже не столько) для перформанса, а для решения задач вида "как нам сделать говорящий меч". А потом пришли перформанс фрики со своими линейными кэш-оптимальными итерациями. И достигают их ценой того, что взять/добавить/удалить компонент "дорого/сложно", хранить в компоненте ссылку на другую сущность "дорого/сложно", короче, все кроме простейшего position += velocity * t "дорого/сложно". А от изначальной идеей максимальной гибкости мало чего осталось. При этом условный инди разработчик использует ECS для условного своего рогалика мечты, в котором сущностей будет < 1000 и на кэш локалити можно было бы вообще забить, а вот гибкость как раз хотелось бы иметь.
В спарс-сет ECS кстати добавление/удаление быстрое.
источник

AL

Andrey @ozkriff Lesn... in RU Rust GameDev — русскоговорящее сообщество
Кстати, насколько в https://github.com/rust-gamedev/ecs_bench_suite по твоему бенчи в этом плане адекватные имеются?
источник

MS

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

AL

Andrey @ozkriff Lesn... in RU Rust GameDev — русскоговорящее сообщество
Ну вот бенчи же обычно так себе реальное использование показывают. Самое близкое, что я вижу - frag_iter тест
источник

ВМ

Виталий Медоваров... in RU Rust GameDev — русскоговорящее сообщество
Из ежемесячника:
https://github.com/malandrin/another-world-suite

* It has to work in Chrome. I haven't test it in any other browser.
* It has to look fine in my screen. This means it is not web responsive and I haven't test it in other resolutions or devices.
* The frame rate is not such an important. I'm using the canvas context to draw the frames and although I've tried to do it fast enough, probably there are other faster ways.
* There are not too many error checks.
* Although the sounds can be played using the resources viewer, the game itself doesn't have any sounds.

С одной стороны написано честно, с другой, придаёт какого-то неприятного флёра.
Хотя я в своих поделках итого хуже пишу что это просто селф-эдьюкейшн
источник

AL

Andrey @ozkriff Lesn... in RU Rust GameDev — русскоговорящее сообщество
Виталий Медоваров
Из ежемесячника:
https://github.com/malandrin/another-world-suite

* It has to work in Chrome. I haven't test it in any other browser.
* It has to look fine in my screen. This means it is not web responsive and I haven't test it in other resolutions or devices.
* The frame rate is not such an important. I'm using the canvas context to draw the frames and although I've tried to do it fast enough, probably there are other faster ways.
* There are not too many error checks.
* Although the sounds can be played using the resources viewer, the game itself doesn't have any sounds.

С одной стороны написано честно, с другой, придаёт какого-то неприятного флёра.
Хотя я в своих поделках итого хуже пишу что это просто селф-эдьюкейшн
На продокшен не претендует, угу
источник

AL

Andrey @ozkriff Lesn... in RU Rust GameDev — русскоговорящее сообщество
(блин, у меня ретро-мозг залипает на том, что написано "Another World", а не тг превьюшке - Бен)
источник

LM

Loo Maclin in RU Rust GameDev — русскоговорящее сообщество
Andrey @ozkriff Lesnikóv
(блин, у меня ретро-мозг залипает на том, что написано "Another World", а не тг превьюшке - Бен)
)
источник