Tempo de carregamento WebGL e de comercialização mais rápidos

Como Marxent utilizou os serviços profissionais Unity para otimizar o desempenho do aplicativo.

Marxent: um estudo de caso de serviços profissionais Unity

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.

  • O projeto

    Visualizações rápidas e interativas aumentam as vendas de design de interiores e reduzem as devoluções

  • O objetivo

    Otimizando o tempo de carregamento do aplicativo em diversos navegadores

  • Plataformas

    WebGL, iOS, Android

  • Membros da equipe

    80

  • Lugar

    Miamisburg, OH – Austin Landing

A engine em tempo real de Unity é um componente integral

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

A meta: reduzir o tempo de carregamento

O front end do 3D Room Designer é construído com HTML e JavaScript nativos que se comunicam com o leitor WebGL de Unity via conexões externas com JavaScript. Ele utiliza um conjunto de bibliotecas criadas e gerenciadas por eles próprios que são compartilhadas em todos os aplicativos 3D em nuvem da Marxent®.

Depois que os desenvolvedores da Marxent explicaram a arquitetura, os sistemas, o processo de implantação, a configuração e as bibliotecas do projeto, as equipes Marxent e Unity buscaram reduzir o tamanho dos dados do leitor do aplicativo WebGL e o seu código de base, e buscaram otimizar o fluxo do aplicativo. Mais precisamente, isso incluiu:

  • Implementação de WebAssembly
  • Remoção de assets desnecessários na construção do leitor, enquanto otimizavam o tamanho de grandes assets que eram necessários
  • Remoção de pacotes Unity desnecessários (módulos)
  • Otimização do tamanho do código gestionado, melhorando suas funcionalidades e eliminando partes das bibliotecas de código gestionado
  • Minimização dos tempos de compilação de Shader e do tempo de carregamento das primeiras cenas
  • Eliminação de outros gargalos de CPU

Sincronizar o aplicativo com o WebAssembly acabou ocupando boa parte deste projeto de otimização de desempenho do aplicativo (Application Performance Optimization, APO, em inglês). WebAssembly é um formato de texto com execução rápida para o código desenvolvido pelo World Wide Web Consortium (W3C) para complementar o JavaScript. De acordo com Vince Kilian, líder de desenvolvimento de produto da Marxent, “a integração com WebAssembly é uma das funcionalidades mais importantes para nós no lançamento do Unity 2018.3.”

A diferença que uma pessoa só pode fazer

Um dos engenheiros líderes de suporte de Unity passou uma semana com a equipe do cliente. Barry Besecker, CTO e cofundador da Marxent disse, “a profundidade e abrangência dos seus conhecimentos técnicos eram impressionante, mas talvez o mais importante de tudo tenha sido ele se dar muito bem com a equipe. A colaboração foi significativa devido à presença deste recurso fantástico.” Além de ser um mestre na resolução de problemas e ter um profundo conhecimento da plataforma Unity sendo utilizada em escala corporativa, ele também era um ponto de contato com outros desenvolvedores e engenheiros de Unity, que puderam ajudar a encontrar a solução. Em particular, ele trocava mensagens frequentemente com um dos gurus em WebGL de Unity durante as sessões de trabalho, para ajudar a identificar e resolver problemas mais difíceis.

Frequentemente, sua função era fornecer orientação prática e útil quando trabalhávamos com a "caixa preta" do Unity e, ao mesmo tempo, proteger a propriedade intelectual do Unity. De acordo com Kilian, “algumas vezes são necessárias determinadas informações sobre a construção do sistema para conseguir diagnosticar problemas em um nível mais profundo. O Unity tem alguns comandos muito aninhados e encontrar vestígios deles não é fácil! Ter este tipo de experiência e conhecimento é muito importante para a gente.”

Uma colaboração altamente produtiva

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.

“Nós não consideramos outros fornecedores, fomos direto para Unity. Eles validaram a tecnologia e P&D dos quais temos imenso orgulho, e sabíamos que Unity seria o parceiro ideal para a otimização do aplicativo. E, honestamente, eles tinham especialistas disponíveis para entrar de cabeça no projeto.”

Barry Besecker, CTO and Co-Founder, Marxent

Usamos cookies para garantir a melhor experiência no nosso site. Visite nossa página da política de cookies para obter mais informações.

Eu entendi