Skip to content

Introducción

Web Adaptive Performance (WebAP) es una herramienta para la optimización dinámica de aplicaciones Unity WebGL.

Ayuda a encontrar el equilibrio entre la calidad visual y un FPS estable en un amplio espectro de dispositivos, desde PCs potentes hasta teléfonos inteligentes más débiles. En lugar de depender de límites rígidos, el plugin analiza los tiempos de los fotogramas en tiempo real. Detecta la causa raíz de las caídas de rendimiento, reduce suavemente la carga hasta lograr la estabilidad, y restaura la calidad al obtener Margen de Rendimiento (Performance Headroom).

Adaptación al Dispositivo

Configura tu proyecto de Unity con la máxima calidad por defecto. Si el dispositivo actual no puede manejar esa carga, el plugin la reducirá automáticamente durante la ejecución.

¿Por qué elegir WebAP?

¿Por qué no usar el paquete oficial Adaptive Performance?
El paquete oficial de Unity es una herramienta formidable, pero es fundamentalmente incompatible con WebGL. Se basa en dos tipos de proveedores, ambos obstaculizados por las restricciones del navegador:

  1. Proveedores Nativos (Android): Dependen de las API del sistema para recuperar datos térmicos y gestionar la frecuencia. El sandbox del navegador impide cualquier acceso al hardware, haciendo que este enfoque sea imposible. Los nuevos estándares web (como Compute Pressure API) solo monitorean la CPU y no proporcionan datos precisos para gráficos 3D.
  2. Basic Provider: El proveedor matemático multiplataforma de Unity. Depende de FrameTimingManager. Sin embargo, para que funcione, el motor requiere temporizadores de GPU de hardware de alta precisión que, por razones de seguridad (para evitar ataques Spectre/Meltdown), están bloqueados a la fuerza o gravemente ofuscados en el navegador. En consecuencia, el Basic Provider oficial no puede, en la práctica, inicializarse en WebGL.

La Solución WebAP: Diseñamos un enfoque adaptado específicamente a las peculiaridades de la web. WebAP también aprovecha FrameTimingManager, pero en lugar de depender estrictamente de temporizadores de GPU bloqueados, el plugin emplea un análisis heurístico seguro. Elude las anomalías del navegador (como la distorsión de las métricas causada por setTimeout en Emscripten) y usa matemáticas puras para calcular cuellos de botella (CPU vs GPU). Esto proporciona un sistema de optimización de grado AAA que opera legalmente y de manera estable en cualquier navegador.

¿Por qué no usar scripts de escalado estándar?
Las soluciones clásicas simplemente reducen la resolución de la pantalla ante la primera señal de retraso. Esto es inútil si la aplicación tartamudea debido a los cálculos de la CPU (física, scripts, lógica) en lugar de la renderización.

Cómo Funciona WebAP:

  • Detección de Cuellos de Botella
    El plugin determina matemáticamente qué está restringiendo el fotograma: CPU o GPU. Si la física se retrasa, el sistema simplifica la física sin degradar la resolución de la pantalla. Se proporcionan más de 12 Scalers independientes (Sombras, LODs, Culling de Capas, etc.) para este propósito.
  • Sistema de Penalización Anti Yo-Yo
    Resuelve el problema común de la resolución dinámica cuando la calidad parpadea (Quality flickering). Si mejorar los gráficos causa una caída inmediata en los FPS, el sistema implementa un Bloqueo de Penalización temporal para bloquear más aumentos.
  • Preservación de la Claridad de la UI
    Si optas por el modo de escala a través de RenderTexture, la resolución del mundo 3D se reduce, pero la interfaz permanece con la Escala Nativa del Navegador. El componente personalizado WebScaledPhysicsRaycaster recalcula automáticamente las coordenadas de los rayos para que los clics en objetos 3D operen sin problemas, independientemente de la compresión del fotograma.
  • Arquitectura Zero-GC
    Todo el proyecto está diseñado teniendo en mente una estricta economía de memoria. El núcleo utiliza búferes circulares O(1) y no realiza asignaciones en el bucle Update. En consecuencia, el plugin no activa el Garbage Collector (GC).
  • Limpieza Rigurosa de la Build
    Muchos assets inflan las builds de lanzamiento al colocar sus prefabs y texturas en la carpeta Resources (forzando al motor a incluirlos en la build). La arquitectura de WebAP evita este error. A menos que se agreguen expresamente a la escena, todas las utilidades y la interfaz de usuario del Dashboard se eliminan automáticamente durante la compilación. Solo el núcleo ligero llega al proyecto final.
  • Integración Plug-and-Play
    La configuración se consolida en una interfaz unificada dentro de Project Settings. El plugin se inyecta automáticamente en la build — no es necesario colocar manualmente prefabs de gestión en tus escenas.

Compatibilidad

  • Versión de Unity: 2020.3 LTS y más reciente. El plugin aprovecha las API modernas y adopta automáticamente nuevas características del motor (por ejemplo, compatibilidad con Mesh LOD Threshold a partir de Unity 6000.2+).
  • Pipeline de Renderizado: Soporte continuo tanto para el Built-in Render Pipeline (BiRP) como para el Universal Render Pipeline (URP).