Pull to refresh
27
Karma
0.1
Rating
Leopotam @Leopotam

Профессиональный хейтер unity3d

Unity. Ленивый ECS

Пулинг нужен, да. Основной посыл был - в выборках энтитей по условиям вообще не должно быть аллокаций в принципе. Как это сделано - достаточно посмотреть любой популярный фрейм, ссылки можно погуглить в соседнем посте https://habr.com/ru/post/665276/

Unity. Ленивый ECS

Осталось посмотреть количество аллокаций на каждый чих и больше никогда не пытаться пилить геймдев-код в enterprise стиле. Про статику во всех-всех вызовах апи вообще молчу - это за гранью добра и зла (TDD отдельно отпинают за углом за невозможность нормально писать тесты ко всему этому добру).

Повторная проверка Unity статическим анализатором PVS-Studio

Если не можешь контролировать js вне песочницы - перестань использовать электрон. Даже не так - перестань использовать на хосте ноду, электрон в песочнице - ок.

Повторная проверка Unity статическим анализатором PVS-Studio

Лучше расскажите про полное отсутствие аудита в их unity hub, что по сути позволило выполнять произвольный код на всех машинах пользователей, став одним из самых крупных ботнетов.

https://forum.unity.com/threads/unity-hub-3-1-release-overview.1253823/

https://github.com/vuejs/vue-cli/issues/7054

https://github.com/RIAEvangelist/node-ipc/issues/233

Деструктивные действия разработчика npm-пакета node-ipc привели к проблемам по всему миру

Но в итоге ты вынужден давать доступ на запись, если ты пилишь unityhub (ланчер движка с автоапдейтом, выкачиванием зависимостей и т.п). Т.е не помогут никак эти запреты.

Повышение производительности в Unity. Как я поднял показатель FPS с 15 до 60

Который поможет только если лоды будут совпадать.

Что у ECS под капотом

Их конечность. Изначально классика была на масках и была лимитирована 64 (1x ulong) компонентами. Потом было расширение на 128, 256, 512 (2-4-8x ulong). Но в любом случае сразу прилетел фидбек. И пришло осознание, что проверка масок много жрет - в случае 512 компонентов это 8 итераций цикла по полной маске. В итоге маски были выкинуты и вместо них стал массив интов индексов типов (пулов) компонентов, повешенных на энтити. В среднем на энтити висит 4-6 компонентов, т.е будет 4-6 итераций для проверки совместимости энтити с фильтрами, что уже выгоднее. И к тому же количество компонентов в мире не ограничено.

Что у ECS под капотом

Собственно, гугль тоже в курсе пары "ecs gamedev".

Что у ECS под капотом

Ecs-подход рассматривается с 2 сторон - как архитектурный, так и перфоманс-паттерн. Dots - это не ecs, а скорее dod, ecs там пришит сбоку. К слову, в большинстве популярных фреймов возможно использование jobs/burst, т.е тот самый dod вполне возможен и вне dots. В общем, когда берут 3dparty ecs-фрейм - пытаются как раз не в dod, а в архитектуру. Архитектурно ecs дает легкость рефакторинга, расширяемость - можно перекроить все механики достаточно быстро, что невозможно в случае классического ООП подхода (ригидность иерархии наследования и вот все это). Об этом писалось не раз, в том числе и на хабре.

Что у ECS под капотом

А, не заметил, сорян. Да, тогда нормально, но зачем лямбда, если можно через тот же итератор и foreach-loop или просто через for-loop?

Что у ECS под капотом

"Классическая" версия не использует спарсеты, там просто пулы с масками компонентов на энтитях и дикты в фильтрах. Советую поглядеть кишки lite-версии, там больше нет никаких масок компонентов и все на спарсетах (пулы, фильтры). Ну и да, нет больше никакой статики в ядре - плохая идея была позаимствована.

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

Про сортинг энтитей "по порядку" - это тоже возможно в лайте как постпроцессинг, причем порядок можно задавать самому на основе данных с энтити.

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

Надо было бежать не по всем, а по самому короткому пулу из констрейнтов с чеком остальных на совместимость - это резко уменьшает количество перебираемых данных в общем случае. Такие проверки дают падение производительности на 20% примерно, но зато убирают необходимость фильтров в принципе - это дает буст на перекладывании данных по фильтрам (убирает все накладные расходы), что чаще является затыком, чем линейный процессинг.

Сжатые атласы в Unity Runtime

Скорее "решение в лоб".

Локализация в Unity

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

Локализация в Unity

Серьезно, я не могу столбики данных менять местами? А если у меня не будет русской локализации, а будет, допустим французская или немецкая - мне код потребуется переписывать? Это удобная локализация?

Локализация в Unity

Да ладно, достаточно было спросить "что если я поменяю местами столбцы EN и RU".

В «М.Видео» и «Эльдорадо» завезли партию PlayStation 5 — как их будут продавать

"Вы были распознаны нашими супер-алгоритмами как перекуп, ваша сосноль уезжает к следующему более сговорчивому покупателю, прощайте!"

Как запустить свой сервер с белым ip из локальной домашней сети

домра выдает белую статику в регионах за 20р в месяц.

Полностью электрический ускоритель космических кораблей

Но, но... это же не Марс, а Арракис на КДПВ.

Распознавание чеков в Google Docs с помощью ABBYY OCR SDK

К сожалению, ни чем не могу помочь - прошло 4 года с момента публикации комментария, бот сгинул с сорцами в районе 2018 после перехода на ApplePay + выписку из банка.

Information

Rating
2,377-th
Location
Россия
Registered
Activity