Сокращение времени загрузки WebGL и ускорение разработки продукта.

Как Marxent объединила усилия с Unity Professional Services для оптимизации производительности приложения

Marxent: пример использования Unity Professional Services

Как заставить две сложные программы и разнообразный комплекс браузерных технологий работать на удобство пользователя? Maxrent усилила команду разработчиков мирового класса мощным инструментом, который позволяет оптимизировать панорамные или трехмерные средства дизайна интерьеров для браузеров и помогает продавцам и клиентам создавать и модифицировать богатые визуализации. При этом им удалось выпустить улучшенную версию быстрее благодаря Unity Professional Services.

Бек и Барри Бесекер основали Maxrent в 2011 году в помощь розничным продавцам, особенно в мебельной и строительной отрасли, для повышения продаж и снижения количества возвратов с помощью развивающихся 3D-технологий. Поначалу братья разрабатывали AR- и VR-приложения по заказу, но по мере роста требований к производительности и необходимости встроенной системы управления контентом они перешли с OpenGL на Unity, платформу реального времени. Это позволило им вывести платформу Marxent® 3D Cloud в авангард индустрии и занять ведущее место в многоканальном 3D-дизайне и визуализации.

Проект

Быстрая интерактивная визуализация повышает продажи в отрасли дизайна интерьеров и снижает количество возвратов

Цель

Оптимизация времени загрузки приложения в различных браузерах

Платформы

WebGL, iOS, Android

Количество сотрудников

80

Регион

Майамисберг, Огайо – Остин Ландинг

Платформа реального времени Unity — важнейший компонент

Marxent 3D Room Designer — это браузерный инструмент для дизайна интерьеров, который позволяет клиентам и риэлторам менять мебель, переставлять ее, подбирать цвета, покрытия стен и их размеры в трехмерной среде. Простой и отзывчивый интерфейс помогает покупателям создавать и визуально оценивать дизайн-проекты. Unity, платформа реального времени, играет здесь ключевую роль.

Во время демонстрации недавней реализации 3D Room Designer на WebGL, к Maxrent обратился один из новых клиентов и пожаловался на долгую загрузку. Несмотря на объемы проделанной работы по оптимизации, сотрудники Marxent не смогли сразу выявить источник этой проблемы. Тем не менее, они продолжали работать над решением проблемы, стремясь обеспечить максимальное удобство для конечного пользователя, что в свою очередь позволило бы увеличить продажи.

У разработчиков еще не было глубокого понимания принципов работы платформы Unity и поведения программ рендеринга со специфическими форматами кода, например, WebAssembly. Компания Maxrent связалась с поддержкой Unity Professional Services, чтобы разобраться в ситуации и выявить проблему в программах Unity и Maxrent, в структурировании библиотек и сред, во всем, что влияет на время запуска и загрузки, особенно на платформе WebGL.

Результаты:

  • Повышение качества обслуживания клиентов благодаря ускорению и оптимизации работы 3D-программы
  • Повышение квалификации сотрудников, работающих с платформой Unity.
  • Укрепление партнерства и сотрудничества между двумя крупнейшими разработчиками программного обеспечения

Цель: снизить время загрузки

Клиентская часть 3D Room Designer работает на базе нативного HTML и JavaScript, который обменивается данными с Unity WebGL Player посредством внешних вызовов JavaScript. В системе используются управляемые библиотеки, разработанные компанией Maxrent, которые являются частью всех приложений Maxrent® 3D Cloud.

Получив информацию от Marxent об архитектуре проекта, системах, процессе развертывания, настройки и о библиотеках, специалисты Marxent и Unity стали работать над уменьшением объема данных проигрывателя WebGL-приложения и кодовой базы, а также над оптимизацией принципиальной схемы приложения. Работа состояла в следующем:

  • Внедрение WebAssembly
  • Удаление ненужных ресурсов из сборки проигрывателя с оптимизацией размера масштабных ресурсов
  • Удаление ненужных пакетов (модулей) Unity
  • Оптимизация объема управляемого кода путем улучшения алгоритмов удаления мертвого кода и с помощью удаления библиотек управляемого кода
  • Уменьшение времени компиляции шейдеров и ускорение загрузки первой сцены
  • Обход узких мест процессорной обработки

Оптимизация приложения под WebAssembly оказалась важнейшей частью работы по оптимизации производительности приложения. WebAssembly — это быстроисполняемый текстовый формат для кода, разработанный консорциумом World Wide Web Consortium (W3C) в дополнение к JavaScript. Согласно Винсу Килиану, руководителю разработки продуктов Marxent, «для нас интеграция WebAssembly — это одна из важнейших особенностей Unity 2018.3.»

И один в поле воин

Один из ведущих специалистов поддержки Unity провел неделю в студии клиента. Барри Бесекер, главный технический директор и сооснователь Maxrent, сказал об этом следующее: «Его опыт и знания были обширными и глубокими, но что важнее, он отлично вписался в нашу команду, обеспечил эффективность совместной работы благодаря его феноменальной работоспособности». Помимо специализации на устранении проблем и большого опыта работы с Unity для бизнеса, он также помогал связаться с другими специалистами и разработчиками Unity, которые способствовали решению проблемы. Например, он часто непосредственно связывался с одним из гуру в области Unity WebGL, помогая разобраться в сложных проблемах и устранить их.

Очень часто он помогал нам работать с «черным ящиком» Unity, одновременно охраняя интеллектуальную собственность Unity. Согласно Килиану, «иногда нужно знать некоторые вещи об особенностях разработки системы, чтобы выявлять проблемы на действительно глубоком уровне. У Unity на этом уровне есть несколько очень серьезных операторов, а некоторые трассировки стека прямо-таки нешуточные! Такие знания и опыт были действительно важны для нас».

Плодотворное сотрудничество

После завершения работ Maxrent сообщила клиенту, что компания нашла быстрое решение проблемы загрузки клиентской части, и что это решение уже можно реализовать. «Если возникают проблемы, то клиенты охотно о них сообщают, и в этом случае у нас был новый клиент, работающий с прототипом в тестовой среде, что облегчило задачу демонстрации улучшения», — говорит Бесекер. Согласно Maxrent, загрузка ускорилась на 30%, что демонстрирует серьезное улучшение.

Имея за плечами такой опыт, Maxrent объявила о начале работ в рамках Development Assistance по улучшению расширяемости системы шейдеров — процессов шейдинга и системы отрисовки, представленных в Unity 2018.3.

Заглядывая вперед, Maxrent надеется на дальнейшее сотрудничество с Unity в рамках улучшения динамических и создаваемых пользователями сред и объектов. «На конференциях разработчиков я сталкивался с проектами на Unity, имеющих миллионы экземпляров на экране с невероятно низким числом вызовов, и это огромный прыжок вперед. Но это применимо лишь к легионам солдат, стреляющих стрелами. Нам нет необходимости создавать тысячи одинаковых диванов!» — говорит Килиан.

Тем не менее, помочь продать тысячу диванов они умеют. В масштабах планеты Marxent занимает ведущее положение в разработке AR/VR инструментов для бизнеса, а сотрудничество с Professional Services, работает в двух направлениях — оптимизация продуктов и помощь компании Unity для дальнейшей работы над улучшением собственных продуктов. Например, сотрудничество с Maxrent укрепило позиции Memory Profiler как инструмента для общей диагностики и повысило роль освещения реального времени в системе шейдеров для динамических клиентских приложений.

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

Barry Besecker, CTO and Co-Founder, Marxent

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

Согласен