Cómo Jam City construyó Disney Magic Match 3D para un alto rendimiento

Dec 3, 2025
Disney Magic Match 3D | Jam City | Disney

En Disney Magic Match 3D, se invita a los jugadores a restaurar el orden en el encantado Libro de Magia, cuya magia se ha descontrolado, derramando elementos icónicos de Disney y Pixar a través de las páginas. Los jugadores deben emparejar objetos encantados, organizar el desorden caprichoso y redescubrir la alegría de ordenar para restaurar el orden en el Libro de Magia – un nivel acogedor a la vez.

A lo largo del desarrollo, cada equipo de Jam City estableció metas ambiciosas: El equipo de arte abogó por una alta fidelidad visual dentro de estrictos presupuestos de polígonos; el equipo de producto optimizó para objetivos ideales de tiempo de sesión; los diseñadores aseguraron un flujo constante de contenido fresco, y los testers de QA requerían herramientas potentes. Mientras tanto, los ingenieros de Jam City priorizaron un rendimiento técnico de clase mundial, estabilidad, rapidez y más en todas las plataformas. Así es como navegaron por desafíos complejos para dar vida a su visión.

EL DESAFÍO:

Entregando un juego de emparejamiento 3D de alta fidelidad que funciona sin problemas y mantiene un rendimiento constante en una amplia gama de dispositivos

PLATAFORMA:

iOS, Android

UBICACIÓN:

Culver City, California

PROJECT STAFF:

50

Disney Magic Match 3D: Un caso de estudio de Unity

¿Cómo mantiene un estudio el rendimiento mientras gestiona desafíos como el sobrecalentamiento, la entrega de contenido y otros problemas técnicos?

Durante la producción, renderizar cientos de objetos 3D con física en un solo nivel significaba tener cuidado con la iluminación, el post-procesamiento y los recuentos de polígonos.

“El sobrecalentamiento fue un problema importante al principio, especialmente con sesiones de 20 minutos – los teléfonos se calentaban incómodamente,” dice Hebby Mathew, un gerente de ingeniería de software en Jam City y líder técnico en Disney Magic Match 3D. “Abordamos esto mejorando el rendimiento y desarrollando una forma de medir consistentemente el calor del dispositivo en varios hardware.”

Otro desafío fue la entrega de contenido: transmitir activos de forma asíncrona sin afectar la tasa de fotogramas. “El Editor extensible de Unity nos ayudó a construir herramientas eficientes para gestionar cuándo y cómo se cargaba el contenido”, dice Mathew.

Finalmente, mientras se perfilaba el juego en dispositivos de gama baja, media y alta para identificar cuellos de botella en el rendimiento, el equipo identificó problemas clave como llamadas de colisión excesivas y modelos de alta poligonación, especialmente para GPUs de gama baja.

“Optimizar esos trajo tanto ganancias de rendimiento como ayudó a resolver los problemas de sobrecalentamiento”, dice Mathew.

Disney Magic Match 3D

Los resultados

- Aumentó la tasa de fotogramas en 40 fps en dispositivos Android de gama baja y 35 fps en dispositivos de gama media

- Redujo la cantidad de llamadas de dibujo en un 40% en iOS y un 45% en dispositivos Android

- Disminuyó el uso de RAM en un 30% en iOS y un 15% en dispositivos Android

- Disminuyó el tiempo de carga de procesamiento no relacionado con la red en un 55%

- Redujo el número de mallas con más de 10,000 triángulos de 33 a 0

- Cortó el número de mallas con 5,000 a 10,000 triángulos de 324 a 235

- Redujo la cantidad de luces en un 67%

Disney Magic Match 3D | Jam City | Disney

Captura de pantalla en el Editor de los tiempos de carga iniciales del juego

Seguimiento del rendimiento a través de fotogramas y sistemas

Cuando el equipo encontró problemas de rendimiento, recurrieron a herramientas de perfilado para obtener una visión más profunda.

Los marcadores del Profiler de Unity fueron especialmente útiles para rastrear tareas de múltiples fotogramas,” dice Kevin Johnson, ingeniero de software en Jam City. “También utilicé el Analizador de Profiler para comparaciones.”

Andrea Ramirez, otra ingeniera, amplió el análisis utilizando archivos de registro binarios para capturar instantáneas específicas de fotogramas. “Eso nos permitió analizar el rendimiento sin necesidad de que el perfilador estuviera activo”, explica ella.

Disney Magic Match 3D | Jam City | Disney

Captura en el editor de los tiempos de carga más rápidos del juego después de la optimización

El equipo personalizó aún más el perfilador, añadiendo elementos desechables para agilizar la activación y el registro. Más allá del perfilado de CPU, monitorearon la memoria con el perfilador de memoria y resolvieron problemas de renderizado utilizando el depurador de fotogramas. El grabador de perfilador les permitió rastrear estadísticas de rendimiento global durante pruebas repetibles.

“Una de las mayores fortalezas del motor es lo extensible que es el editor”, añade Ramirez. “Al capturar instantáneas de múltiples fotogramas y scriptar pruebas, recopilamos datos de rendimiento consistentes y confiables.”

Disney Magic Match 3D | Jam City | Disney

Disney Magic Match 3D | Jam City | Disney

Reducción de grandes picos de rendimiento

El perfilado reveló grandes picos de rendimiento al inicio del nivel, causados principalmente por la compilación de shaders cuando los activos aparecieron por primera vez. Usando Addressables, el equipo identificó activos duplicados que provocaban compilaciones innecesarias de shaders.

“Precargamos elementos de UI y piezas del juego antes”, dice el desarrollador John Enney. “Los paquetes de activos agrupados incorrectamente fueron un problema clave, lo que causó compilaciones repetidas de shaders, algo que inicialmente pasé por alto.”

Al principio, integraron Esquema Rápido para añadir resaltado de piezas rápidamente. Si bien introdujo algo de sobre-dibujo – carga adicional de renderizado – las optimizaciones les permitieron mantenerlo sin una reescritura completa.

El audio también contribuyó a los picos de rendimiento. “Cada pieza del juego activaba su propio sonido de colisión”, explica Enney. “Eso funcionó bien al principio, pero con 300 piezas cayendo simultáneamente, los tiempos de fotograma aumentaron a 500 ms. Reemplazar esos múltiples sonidos con un solo sonido ambiental de caída redujo eso a 20-30 ms – y en realidad sonó mejor.”

Disney Magic Match 3D | Jam City | Disney

Captura en el editor de los picos de rendimiento iniciales grandes durante el juego

La retroalimentación háptica también requería ajustes finos. “Limitamos las llamadas hápticas durante colisiones masivas”, dice el director técnico Troy Lee. “Aplicar esta restricción mejoró el rendimiento de manera consistente a lo largo del juego.”

La iluminación presentó otro desafío. Aunque el renderizado diferido mejoró el rendimiento, entró en conflicto con los objetivos artísticos. “El renderizado hacia adelante tiene problemas con múltiples luces porque requiere pasadas costosas por objeto”, explica Ramirez. Para equilibrar calidad y eficiencia, Enney desarrolló una solución de iluminación horneada que preservaba la fidelidad visual mientras mejoraba el rendimiento en tiempo de ejecución.

La complejidad de la geometría también era una preocupación. “Nuestros modelos iniciales superaron los 10,000 triángulos”, dice la artista técnica principal Kristen Weeks. “Reducimos la mayoría de los modelos a menos de 2,500 triángulos para asegurar un buen rendimiento en dispositivos de gama baja.”

Disney Magic Match 3D | Jam City | Disney

Captura en el editor de los picos de rendimiento más pequeños después de la optimización

Optimización de la inicialización y manejo de activos

Al principio, la carga de activos y la inicialización del sistema que involucraba llamadas web causaron problemas importantes. Para evitar ralentizaciones durante el juego o interacciones de la interfaz de usuario, el equipo cargó inicialmente todos los activos por adelantado. Sin embargo, a medida que las características y activos del juego se expandieron, los tiempos de inicio se volvieron excesivamente largos.

Optimizaron moviendo algunos activos para que se cargaran de manera asíncrona en segundo plano, reduciendo los tiempos de carga iniciales mientras mantenían una experiencia fluida en el juego. También paralelizaron las tareas de carga utilizando el sistema de tareas de .NET, y estas mejoras junto con la carga nativa de paquetes de activos trajeron ganancias significativas.

La latencia de la red, especialmente durante la carga inicial, también impactó el rendimiento. Para abordar esto, el equipo cambió de corutinas de Unity a C# async/await para llamadas de red, reduciendo la latencia. “También optimizamos la deserialización de JSON al reemplazar el enfoque basado en reflexión de Newtonsoft con generación de código, mejorando el rendimiento”, dice Johnson.

Los costos de instanciación afectaron aún más los tiempos de carga inicial, con un retraso notable – alrededor de medio segundo en dispositivos de gama media – debido a que el juego crea muchos prefabs de UI y de fondo inmediatamente después del lanzamiento.

Disney Magic Match 3D | Jam City | Disney

Disney Magic Match 3D | Jam City | Disney

“Una gran parte del costo fue la pesada inicialización de Awake() en muchos objetos,” explica Johnson. “Optimizamos la instanciación deshabilitando objetos al crearlos y habilitándolos solo cuando se necesitaban. También diferimos o escalonamos la instanciación en lugar de hacerlo todo de una vez, lo que redujo la latencia visible.”

Para medir el rendimiento de manera más precisa, el equipo utilizó System.Diagnostics.Stopwatch para cronometrar los intervalos de instanciación e instrumentó varias partes del código.

A pesar de estas optimizaciones, la calidad de la red en el mundo real aún impacta los tiempos de carga. Para abordar esto, el equipo está experimentando con la carga diferida – enviando el juego con todas las configuraciones y permitiendo a los jugadores entrar inmediatamente mientras actualizan las configuraciones de manera asíncrona en segundo plano. “Las pruebas iniciales parecen prometedoras, pero estamos monitoreando cautelosamente los resultados en vivo,” dice Mathew.

Disney Magic Match 3D | Jam City | Disney

Disney Magic Match 3D | Jam City | Disney

Abordando las limitaciones de GPU en dispositivos de gama baja

Durante la optimización del rendimiento, el equipo notó que algunos dispositivos de gama baja mostraron una mejora mínima. Descubrieron que estos dispositivos utilizaban predominantemente GPUs Mali, que luchaban por manejar efectivamente los conteos de ítems objetivo del juego. Sin embargo, pudieron mantener el objetivo de 60 fps en todos los niveles de dispositivos.

Weeks elabora sobre estas limitaciones: “Las GPUs Mali de tercera y cuarta generación son renderizadores estrictos basados en mosaicos que fácilmente se vuelven limitados por la geometría. En contraste, muchas otras GPUs utilizan técnicas de renderizado híbrido que ayudan a evitar este cuello de botella. Las GPUs Mali más nuevas, como las que se encuentran en los recientes teléfonos Pixel, tienen más unidades de procesamiento y manejan la geometría mucho mejor.”

Disney Magic Match 3D | Jam City | Disney

Disney Magic Match 3D | Jam City | Disney

Para entender mejor estas limitaciones, Mathew construyó una herramienta al principio del desarrollo que instanciaba el creciente número de objetos en varios dispositivos para rastrear las caídas en la tasa de fotogramas. La herramienta reveló que ciertas GPUs tenían umbrales más bajos, subrayando la necesidad de optimizar cuidadosamente los modelos del juego sin sacrificar la calidad artística.

“En preproducción, el director de arte solicitó un uso intensivo de efectos de post-procesamiento y múltiples luces dinámicas,” dice Weeks. “Sin embargo, eliminamos el post-procesamiento para la producción debido a su significativa contribución al sobrecalentamiento del dispositivo y a la disminución del rendimiento.”

Enney también mejoró la eficiencia al hornear una luz puntual directamente en los shaders, reduciendo el número de luces activas de tres o cuatro a solo una.

Este enfoque colaborativo permitió al equipo lograr un equilibrio óptimo entre calidad visual y rendimiento, asegurando una experiencia fluida en una amplia gama de dispositivos.

Descarga Unity Pro hoy

Comienza a crear juegos que compiten con, e incluso superan, la calidad y el éxito de los lanzamientos de grandes estudios con la ayuda de poderosas herramientas, soporte, socios verificados y una comunidad vibrante.