Buscar en Unity

Menos tiempo de carga en WebGL y comercialización más rápida

Descubre como Marxent unió fuerzas con los servicios profesionales de Unity para optimizar el rendimiento de sus aplicaciones

Marxent: un estudio de caso de los servicios profesionales de Unity

¿Cómo se hace para que dos programas de software sofisticados y un conjunto variado de tecnologías de navegación funcionen juntos para lograr la mejor experiencia del usuario posible? Marxent amplió su equipo de desarrolladores de clase mundial para optimizar una herramienta en línea de diseño de interiores en 3D y 360° que permite a los clientes y los empleados crear y modificar visualizaciones con alto nivel de detalle. Al aprovechar los beneficios de los servicios profesionales de Unity, lograron lanzar al mercado un mejor producto en menos tiempo.

Beck y Barry Besecker fundaron Marxent en 2011 para ayudar a las tiendas al por menor a realizar el amueblamiento y mejoramiento de hogares, aumentar las ventas y reducir la cantidad de devoluciones mediante tecnologías 3D emergentes. Al principio, los hermanos creaban aplicaciones de AR y VR individuales, pero, ante la creciente demanda de rendimiento y la necesidad de contar con gestión de contenido integrado, pronto cambiaron OpenGL por el motor en tiempo real de Unity. Esto les permitió llevar la plataforma Marxent® 3D Cloud a lo más alto del sector, y ahora son líderes mundiales en diseño y visualización 3D omnicanal.

El proyecto

Las visualizaciones interactivas y rápidas aumentan las ventas del servicio de diseño de interiores y reducen la cantidad de devoluciones

El objetivo

Optimizamos el tiempo de carga de apps en diferentes entornos de navegación

Plataformas

WebGL, iOS, Android

Miembros del equipo

80

Ubicación

Miamisburg, Ohio – Austin Landing

El motor en tiempo real de Unity es un componente integral

3D Room Designer es una herramienta de diseño de interiores basada en navegador de Marxent que permite a los clientes y empleados combinar muebles, colores, revestimientos de pared y dimensiones en un entorno 3D detallado. Su interfaz sencilla y de alto nivel de respuesta permite a los compradores configurar los proyectos de diseño visualmente a su gusto y al precio que les parezca.

Durante una demostración de Marxent de una implementación reciente de 3D Room Designer en WebGL, un cliente nuevo indicó que la demora en la carga le significaba un problema. Aunque los ingenieros de Marxent habían realizado grandes optimizaciones generales hacía poco, no lograban identificar la causa de este inconveniente. Aun así, se comprometieron a resolverlo para que el cliente pudiera ofrecer una mejor experiencia al usuario final y, de esa manera, aumentar las ventas.

Lo que faltaba era entender mejor el funcionamiento del motor en tiempo real de Unity y el comportamiento de los programas de renderizado ante formatos de código muchas veces idiosincráticos como WebAssembly. Marxent se puso en contacto con los servicios profesionales de Unity para recibir ayuda en la investigación y la resolución de los problemas que se habían presentado (con el código de Unity, el código de Marxent y la estructura de los archivos .dll y los marcos) y que afectaban los tiempos de arranque y carga, particularmente en la plataforma WebGL.

Estos fueron los resultados:

  • La experiencia del cliente mejoró con un programa 3D más rápido y optimizado
  • Aumentaron los conocimientos de los empleados internos sobre el trabajo con la plataforma de Unity
  • Se estableció una sociedad más colaborativa entre dos empresas de software de clase mundial

El objetivo: reducir los tiempos de carga

La interfaz de usuario de 3D Room Designer está desarrollada en lenguaje HTML y JavaScript nativo, y se comunica con Unity WebGL Player mediante llamadas de JavaScript. Funciona mediante un conjunto de bibliotecas administradas creadas por Marxent y compartidas en todas las aplicaciones de Marxent® 3D Cloud.

Después de que los desarrolladores de Marxent explicaron la arquitectura, los sistemas, el proceso de desarrollo, la configuración y las bibliotecas del proyecto, los equipos de Marxent y de Unity apuntaron a reducir el tamaño del código base y los datos del reproductor de la aplicación de WebGL, y, de esta forma, optimizar su flujo. Más precisamente, esto incluyó:

  • La implementación de WebAssembly
  • La eliminación de assets innecesarios de la compilación del reproductor y la optimización de assets más necesarios
  • La eliminación de paquetes (módulos) de Unity innecesarios
  • La optimización del tamaño de códigos administrados mediante el mejoramiento del fraccionamiento de datos y la eliminación de bibliotecas de códigos administrados
  • La minimización del tiempo de compilación de shaders y los tiempos de carga anticipada de la primera escena
  • La eliminación de otros cuellos de botella en el CPU

Ajustar la app para que funcionase correctamente con WebAssembly resultó ser una parte fundamental de este proyecto de optimización de rendimiento de aplicaciones (APO). WebAssembly es un formato de texto de rápida ejecución para código desarrollado por el World Wide Web Consortium (W3C) a modo de complemento de JavaScript. Según Vince Kilian, desarrollador principal de productos de Marxent, "La integración de WebAssembly es una de las capacidades más importantes para nosotros de la versión Unity 2018.3".

La diferencia que puede hacer una persona

Uno de los ingenieros de asistencia principales de Unity pasó una semana junto al equipo del cliente. Barry Besecker, director de tecnología y cofundador de Marxent, dijo, "La profundidad y el alcance de su experiencia técnica eran muy altos, pero tal vez lo más importante fue que encajó muy bien en nuestro equipo. La colaboración fue extraordinaria gracias a su fantástica contribución". Además de ser un experto en la resolución de problemas y una persona altamente experimentada en el funcionamiento de la plataforma de Unity a nivel empresarial, fue un gran comunicador, y se contactó con otros desarrolladores e ingenieros de Unity que lograron colaborar para llegar a la solución. Particularmente, hablaba mucho por mensaje directo con uno de los gurús de WebGL en Unity durante las sesiones de trabajo, quien lo ayudó a aportar ideas y resolver problemas complicados.

Muchas veces, su papel fue ofrecer una orientación útil y práctica para trabajar con la "caja negra" de Unity, sin dejar de proteger la propiedad intelectual de la empresa. Según Kilian, "A veces es necesario saber ciertas cosas de diseño del sistema para poder determinar la raíz más profunda del problema. Unity tiene algunas instrucciones anidadas muy complejas, ¡y algunos de los seguimientos de pila no son para cualquiera! El haber contado con su experiencia y perspectiva fue muy importante para nosotros".

Una colaboración muy productiva

Después de la APO, Marxent informó a su cliente que se había encontrado una rápida solución al problema de la carga de la interfaz y que podían retomar de inmediato su implementación. Besecker dijo, "Los clientes no tardan en comunicarse cuando surgen problemas, y, en este caso, nuestro nuevo cliente estaba usando un prototipo dentro de un entorno de prueba, así que fue sencillo mostrarle la mejora". En general, Marxent estimó un 30 % de aumento de la velocidad de carga, y la toman como una mejora significativa.

Con esta experiencia bajo el hombro, Marxent se encuentra trabajando en una instrucción de trabajo para asistencia de desarrollo a fin de ampliar el alcance del sistema de shaders: las estructuras de producción de shaders y del sistema de renderizado incluidos en Unity 2018.3.

Unity se ha comprometido a mejorar los entornos y objetos dinámicos generados por el usuario, y Marxent apunta a aprovechar este servicio en el futuro. Kilian dijo, "En conferencias de desarrolladores, he visto los proyectos de Unity, en los que hay millones de instancias en pantalla y muchísimo menos cantidad de llamadas, lo cual es un gran avance. Pero eso puede aplicarse a legiones de soldados que disparan flechas. ¡En Marxent no necesitamos reproducir miles de sofás al mismo tiempo!".

Sin embargo, sí están ayudando a vender miles de sofás. A nivel mundial, Marxent está a la cabeza del desarrollo de herramientas de AR/VR para el comercio. Las colaboraciones como el acuerdo con los servicios profesionales tienen estas dos características: se optimiza un producto y Unity descubre cómo mejorar y ajustar su propio producto y hoja de ruta de forma precisa. Por ejemplo, al trabajar con Marxent, se reforzó la importancia del Memory Profiler como herramienta de diagnóstico general y la utilidad de la iluminación en tiempo real en el sistema de shaders para crear apps dinámicas de venta al por menor.

"Ni siquiera pensamos en otros proveedores, acudimos directo a Unity. Ellos aprobaron la tecnología, y la investigación y desarrollo que tanto nos enorgullecía, y sabíamos que su gente era la indicada para ayudarnos a optimizar la app. Además, contaban con personal experimentado disponible para asignar al proyecto".

Barry Besecker, CTO and Co-Founder, Marxent

We use cookies to ensure that we give you the best experience on our website. Click here for more information.