Разные способы сбилдить в WebGL

Разные способы сбилдить в WebGL

Сообщение Shekn 13 янв 2021, 16:49

Написал про небольшое сравнение разных способов сформировать WebGL-приложение средствами Unity. Вот ссылка: https://github.com/Tugcga/WebGLCompare

Если коротко, то для создания одного и того же небольшого приложения про скачущие шарики использовалось три подхода. Первый - это на основе MonoBehaviour. Ну то есть стандартный инструментарий Unity. И билд в WebGL тоже стандартный. Второй подход - это по максимум использовать DOTS вместе с гибридным рендером. При таком подходе используется URP, а не сущностями остаются только камера, свет и UI. Третий подход - это использовать так называемый Project Tiny. С помощью этого пакета можно делать приложение вообще без использования MonoBehaviour, а используя исключительно принципы ECS. Билд в этом случае делается специальным средством, а не стандартным. Цель сравнения - выяснить, при каком подходе удаётся добиться большего показателя FPS на одном и том же оборудовании.

Краткие результаты: Tiny лучше всего, потом MonoBehaviour, хуже всего показывается себя проект на основе DOTS. Подробнее про замеры и полученные цифры - по ссылке выше. Для standalone билдов ситуация кардинально другая: DOTS лучше всех, потом Tiny, в конце MonoBehaviour.
https://tugcga.github.io/
Аватара пользователя
Shekn
UNIт
 
Сообщения: 85
Зарегистрирован: 05 фев 2016, 14:20

Re: Разные способы сбилдить в WebGL

Сообщение Jarico 13 янв 2021, 19:38

В WebGL вроде не поддерживается многопоток т.к. JavaScript не имеет средств для создания потоков, да и System.Threading недоступен вот и результаты DOTS такие плохие
VK Group: _https://vk.com/salavan_dev
Discord: RedHead#9382
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
RakNet: _https://github.com/ep1s0de3/RakNet_Networking
Аватара пользователя
Jarico
Старожил
 
Сообщения: 876
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Разные способы сбилдить в WebGL

Сообщение Shekn 14 янв 2021, 10:32

Но ведь с другой стороны, при билде в WebGL весь код преобразуется в WebAssembly. А он, вроде как, умеет в многопоточность.
https://tugcga.github.io/
Аватара пользователя
Shekn
UNIт
 
Сообщения: 85
Зарегистрирован: 05 фев 2016, 14:20

Re: Разные способы сбилдить в WebGL

Сообщение Jarico 14 янв 2021, 13:11

Shekn писал(а):Но ведь с другой стороны, при билде в WebGL весь код преобразуется в WebAssembly. А он, вроде как, умеет в многопоточность.


Видимо не включен параметр перед билдингом в WebGL
https://docs.unity3d.com/2019.1/Documen ... pport.html
VK Group: _https://vk.com/salavan_dev
Discord: RedHead#9382
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
RakNet: _https://github.com/ep1s0de3/RakNet_Networking
Аватара пользователя
Jarico
Старожил
 
Сообщения: 876
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Разные способы сбилдить в WebGL

Сообщение Shekn 15 янв 2021, 10:48

Вот ведь, я даже и не знал, что есть какие-то параметры для билда, к которым нет доступа через интерфейс. Но, к сожалению, не удалось сбилдить ни один проект с включенным параметром многопоточности. Даже не пустом проекте выдаёт какие-то ошибки сложные. Жалко, конечно.
https://tugcga.github.io/
Аватара пользователя
Shekn
UNIт
 
Сообщения: 85
Зарегистрирован: 05 фев 2016, 14:20

Re: Разные способы сбилдить в WebGL

Сообщение Shekn 15 янв 2021, 16:46

Добавил ещё сравнение с Three.JS в том же репозитории. Ну то есть та же самая сцена, но собранная исключительно на JavaScript-е и чистом WebGL-е без всяких промежуточных преобразований. Этот подход по производительности приближается (хоть немного и не дотягивет) к Standalone билдам. Получается, что Unity не очень подходит для создания WebGL-игр. То же самое можно сделать гораздо эффективнее в плане производительности другими средствами. А у Unity только один плюс - если уже есть проект под другую платформу, то можно задёшево сделать ещё и плохую WebGL версию. В которую всё равно играть невозможно. Ну да, зато программист быстро всё сделал и пошел отдыхать.
https://tugcga.github.io/
Аватара пользователя
Shekn
UNIт
 
Сообщения: 85
Зарегистрирован: 05 фев 2016, 14:20

Re: Разные способы сбилдить в WebGL

Сообщение Tolking 15 янв 2021, 17:35

Ну на Юнити будет плохая WebGL версия, а на Three.JS, возможно, никакой версии не будет... Если бы средства разработки сравнивались в лоб по производительности, то сейчас кроме си не было-бы ничего... А может и на ассемблере остановились...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2597
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Разные способы сбилдить в WebGL

Сообщение Shekn 16 янв 2021, 10:21

Это да, никто не спорит. Кажется, что это нормально, когда за работу игрового движка приходится платить какую-то цену производительности. Вопрос только какую. Вот в этом конкретном случае кажется, что цена слишком уж высокая. Хотя Unity как инструмент, мне, например, все равно очень нравится.
https://tugcga.github.io/
Аватара пользователя
Shekn
UNIт
 
Сообщения: 85
Зарегистрирован: 05 фев 2016, 14:20


Вернуться в Tips & Tricks

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1