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

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

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

How do you get two sophisticated software programs and a diverse collection of browser technologies to work together for the best user experience? Marxent augmented its team of world-class developers to optimize a 360°, 3D interior-design tool for the web that lets customers and sales associates create and modify rich visualizations. They brought a better product to market faster by leveraging Unity Professional Services.

Beck and Barry Besecker started Marxent in 2011 to help retailers, particularly in home furnishings and home improvement, increase sales and reduce returns by taking advantage of emerging 3D technologies. Initially, the brothers built one-off AR and VR applications, but with the increased performance demands and necessity of integrated content management, they soon switched from OpenGL to the Unity real-time engine. This enabled them to push the Marxent® 3D Cloud platform to the forefront of the industry, where they are now a global leader in omnichannel 3D design and visualization.

  • Проект

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

  • Цель

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

  • Платформы

    WebGL, iOS, Android

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


  • Регион

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

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

Marxent’s 3D Room Designer is a browser-based, interior-design tool that lets customers and sales associates mix-and-match furniture, colors, wall treatments, and dimensions in a rich 3D environment. Its simple, responsive interface encourages buyers to configure and price design projects visually. The Unity real-time engine is an integral component.

When Marxent was demoing a recent WebGL implementation of the 3D Room Designer, a new client mentioned that the longer loading times were an issue. While Marxent engineers had recently made major optimizations overall, the reason for this particular issue wasn’t obvious. Still, they committed to resolving it, which would help the customer deliver better end-user experience and ultimately increase sales.

One missing element was deep insight into the Unity real-time engine and how rendering programs behaved with sometimes-idiosyncratic code formats such as WebAssembly. Marxent got in touch with Unity Professional Services to help investigate and troubleshoot what was going on – with the Unity code, the Marxent code, the way .dlls and frameworks were structured – whatever was impacting launching and loading times, particularly on the WebGL platform.

The results:

  • An enhanced customer experience through a faster, more streamlined 3D program
  • Increased in-house expertise working with the Unity platform
  • A stronger, more collaborative partnership between two world-class software companies

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

Клиентская часть 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 на этом уровне есть несколько очень серьезных операторов, а некоторые трассировки стека прямо-таки нешуточные! Такие знания и опыт были действительно важны для нас».

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

After the APO, Marxent informed its customer that there was a quick solve to the front-end loading issue and that it could be implemented promptly. Besecker said, “We hear from clients pretty quickly if there are issues, and in this case, we had a new client using a prototype in a test environment, so it was easy to show them the improvement.” Overall, Marxent estimated a 30% loading-speed improvement, which they feel is quite significant.

With this experience under their belt, Marxent is currently working on a statement of work for Development Assistance to expand the extensibility of the shader system – the shader pipelines and rendering-system pipelines introduced in Unity 2018.3.

Looking ahead, Marxent anticipates taking advantage of Unity’s commitment to enhancing dynamic and user-generated environments and objects. “I’ve seen Unity projects at developer conferences where there are millions of instances on the screen and way-fewer call counts, and that’s a huge jump forward. But that’s for legions of soldiers shooting arrows. At Marxent, we’re not simultaneously spawning thousands of couches!” according to Kilian.

They are, however, helping sell thousands of couches. Globally, Marxent is leading the development of AR/VR tools for commerce, and collaborations such as the Professional Services engagement work two ways – a product is optimized, and Unity gains profound insight into enhancing and shaping its own product and roadmap. For example, working with Marxent reinforced the importance of the Memory Profiler as a general diagnostic tool and the importance of real-time lighting in the shader system for dynamic retail apps.

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

Barry Besecker, CTO and Co-Founder, Marxent

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