Panel PS1 Budget
El panel PS1 Budget permite comprobar rápidamente si la escena actual todavía se mantiene dentro de los límites del runtime de PlayStation 1 del engine.
Ábrelo desde View > Show PS1 Budget o Build > Tools & Diagnostics > Show PS1 Budget.
Selecciona Open VRAM Inspector desde el panel cuando una fila de colocación requiera un diagnóstico visual. VRAM Inspector utiliza el mismo modelo de colocación de la escena actual.
Qué mide
| Área | Por qué importa |
|---|---|
| Límites del runtime | Evitan que las escenas excedan los arreglos fijos del runtime |
| Estimaciones de memoria | Mantienen visibles la RAM de mallas, los archivos de malla, VRAM, SPU, Lua y el uso de paquetes |
| Carga de trabajo del runtime | Muestra Mesh Renderers, mallas preprocesadas, renderizadores por sector, Lua Behaviours con Update(), recuentos de animación Transform e independiente, geometría y matrices esqueléticas, búfer temporal y las peores estimaciones de triángulos del sector visible |
| Lista de comprobación del flujo | Confirma la configuración de la escena de compilación, la escena de inicio, la cámara, los mandos y el empaquetado de VRAM |
| Colocaciones de VRAM | Muestran las coordenadas de las páginas de textura y las filas de CLUT antes de exportar |
| Problemas y advertencias | Ofrecen un resumen orientado a la compilación sin iniciar la cadena de herramientas |
El panel abierto en el editor muestra una estimación de autoría de la escena cargada. Durante una compilación de PS1, Polygon Engine escribe el presupuesto definitivo del runtime posterior al preprocesamiento después de convertir la geometría integrada en fragmentos de malla de PS1.
Cómo interpretar las advertencias de Problems
Warning indica que conviene revisar un margen de seguridad; por sí solo no significa que la compilación haya fallado. Error identifica un problema que debes resolver. La sección What do these messages mean? de Problems explica esta diferencia.
- Post-bake indica que la revisión usó los assets convertidos de la última compilación de PS1. Validate Again actualiza la validación del editor; vuelve a compilar para actualizar las cifras posteriores a la conversión cuando cambies la escena o sus assets.
- Needs optimization es un resumen. Lee las advertencias de cada escena que aparecen debajo y usa PS1 Budget para identificar el recurso que necesita ajustes.
- Runtime main RAM scene-content margin is tight significa que el pico estimado deja menos de los 160 KiB (163,840 bytes) libres recomendados en la RAM principal de PS1. No se refiere a la RAM disponible en tu PC con Windows.
PS1 tiene 2 MiB de RAM principal. El runtime, el contenido de la escena, Lua y las asignaciones temporales de carga comparten el presupuesto utilizable. La VRAM y la memoria de sonido de la SPU tienen presupuestos separados. Un margen inferior a 96 KiB tampoco cumple el mínimo de publicación.
Un informe anterior puede mostrar 160.0 KB free y aun así advertir de un margen insuficiente: la cifra visible está redondeada, pero la comparación usa los bytes exactos. Por ejemplo, 163,839 bytes están un byte por debajo del objetivo recomendado. Los informes nuevos incluyen los bytes exactos.
Para recuperar RAM principal, reduce los datos residentes de modelos o de animación esquelética, reutiliza assets o divide un nivel grande en escenas. Borrar archivos fuente que no usa la escena no reduce su consumo de memoria. Vuelve a compilar, revisa el informe nuevo y prueba las transiciones y el juego en DuckStation y en tu consola. Cumplir el presupuesto no garantiza una tasa de cuadros determinada.
Advertencias del presupuesto de audio
El audio tiene tres límites distintos:
- Audio clips cuenta clips VAG residentes únicos referenciados por la escena. El límite estricto es 16; varias fuentes que usan el mismo clip no lo duplican en ese conteo. Llegar al 70% de los slots por sí solo no genera una advertencia.
- SPU audio estimate compara bytes de muestras residentes con el presupuesto SPU del proyecto. La advertencia empieza al 70% de esa memoria. Las señales cortas de UI pueden ocupar muchos slots y consumir poca memoria de muestras.
- La reproducción dispone de 24 voces de hardware. Repetir sonidos independientes puede agotarlas aunque los presupuestos estáticos pasen. Es una condición de ejecución: comprueba los resultados y evita disparar señales cada cuadro.
Las pistas CD-XA son música en streaming, no muestras VAG residentes. Bajar el volumen no ahorra memoria. Si la estimación SPU es alta, acorta o remuestrea efectos, reutiliza clips o reproduce el ambiente largo mediante Music.
Comprobaciones en primera y tercera persona
El panel cuenta el uso de Player Input, Player Motor, First Person Controller, Third Person Controller, Camera Rig, Interaction Ray, Interactable y Camera Zone. Una escena normalmente debe tener un host activo para el controlador del jugador y al menos un Camera o Camera Rig.
Para escenas en tercera persona, comprueba que:
- el GameObject del jugador tiene Player Input, Player Motor, Character Controller y Third Person Controller;
- la cámara de seguimiento tiene un Camera Rig que apunta al jugador;
- las Camera Zones opcionales tienen un tamaño claro y prioridades estables;
- el jugador tiene una malla visible y estados de Animator si se espera animación.
Para escenas en primera persona, comprueba que:
- la cámara es hija del rig del jugador o está dirigida por él;
- la altura de los ojos y la distancia de interacción fueron configuradas intencionalmente;
- el cuerpo del jugador no necesita una malla visible para la presentación en primera persona prevista; el engine no tiene un espejo general ni un renderizador de sombras dinámicas.
Salida del informe
Usa Export Report para escribir:
Build/ps1/logs/ps1_budget_current_scene.json
Durante la compilación, la misma ruta se actualiza con el informe del runtime posterior al preprocesamiento de la escena activa. La compilación también escribe:
Build/ps1/logs/ps1_runtime_budget_<scene>_<hash>.json
Build/ps1/logs/ps1_build_performance_report.json
Usa los informes del runtime como fuente de verdad para las comprobaciones de presupuesto del contenido preparado. Incluyen el tamaño final de lectura de .BSN, los recuentos de GameObject y mallas posteriores al preprocesamiento, uso del manifiesto, memoria del runtime cargada más BSS, bytes de contenido de escena, bytes transitorios del cargador, carga de trabajo de scripts, audio y animación, y advertencias cuando el contenido se acerca a los límites fijos de PS1. Los datos de escena .BSN se cuentan como memoria transitoria del cargador, no como memoria permanente de la escena, porque el runtime los libera después de analizarla.
Para escenas esqueléticas, el informe separa registros de Animator, recursos únicos, geometría, datos de matrices preprocesados y búfer temporal de deformación compartido. El búfer temporal usa el requisito del recurso más grande; la geometría y las matrices se acumulan entre los recursos únicos de la escena. Las advertencias esqueléticas comienzan al 70% de sus presupuestos fijos.
El informe de compilación expone el mismo estado de producción que usa el editor:
PS1 Ready: se cumplen todos los objetivos oficiales de producción.Needs optimization: la compilación funciona, pero está demasiado cerca de un límite de PS1 para una plantilla de publicación.Build blocker: el paquete excedería un límite fijo del runtime o no cuenta con datos de publicación definitivos.
Para la aceptación de producción, ps1_build_performance_report.json debe incluir runtimeMemory.available: true. Si falta ese campo, el paquete puede existir en el disco, pero la compilación no se considera un paquete de publicación verificado.
El informe también registra video.region y video.refreshHz. Production Acceptance comprueba esos valores tanto con el proyecto como con el manifiesto del runtime preparado, por lo que una selección PAL o NTSC no puede convertirse silenciosamente en otra compilación.
Las plantillas oficiales deben mantenerse dentro de estos objetivos: 160 KB o más de RAM libre para el runtime, texto del manifiesto de hasta 70%, tamaño de lectura de .BSN de hasta 65% y estimación de paquetes de hasta 80%.
Superposición de rendimiento del runtime
En un juego generado, mantén presionados L1 + R1 y pulsa Select para mostrar u ocultar la superposición oculta de rendimiento del runtime. Informa:
- región activa y frecuencia de actualización;
- intervalos de VSync del último cuadro y del pico, además del contador de cuadros lentos;
- triángulos dibujados;
- uso del búfer de paquetes, pico y paquetes descartados;
- uso de memoria Lua, pico y número de errores;
- ticks de las fases de actualización, envío de renderizado, espera de dibujo y VSync;
- ticks de las subfases de Lua, incluida la recolección de basura, física, navegación y animación;
- heap del engine actual y máximo, pico de carga, solicitud de asignación más grande y errores de asignación;
- recuentos de primitivas opacas o transparentes, y texturizadas o sin textura;
- recuentos de entrada y salida para recorte y subdivisión;
- cambios de páginas de textura y CLUT;
- sectores de CD completados, búsquedas físicas y aciertos o fallos de paquetes de escena;
- número de muestras de la sesión, promedio y pico de ticks por cuadro; y
- conexión del puerto 1, tipo de mando, modo analógico, máscara de botones mantenidos y ambos sticks sin procesar.
Ocúltala con la misma combinación. Es una ayuda de diagnóstico y permanece oculta de forma predeterminada. Su fondo cubre el HUD superior mientras está activa. Las filas de entrada ayudan a distinguir un mando desconectado de un mando que sigue en modo digital. Valores sin procesar cercanos a 127/128 indican que los sticks están centrados; mueve cada stick para comprobar sus ejes. Mientras mantengas la combinación de diagnóstico, esos tres botones quedan reservados y no llegan a la jugabilidad. Mide situaciones representativas en DuckStation y en hardware real antes de publicar un juego. El sufijo SAT indica que un contador acumulado de larga duración alcanzó su límite; los picos y el último cuadro siguen siendo útiles, pero inicia una sesión nueva para obtener promedios nuevos.

Este cuadro NTSC abarca cuatro intervalos de VSync, aproximadamente 15 FPS de juego. La superposición no informa paquetes descartados ni errores de Lua en esta muestra. El puerto 1 está conectado en modo analógico y ambos sticks están centrados. Oculta la superposición para ver el HUD que queda debajo.
Abre la imagen para verla a tamaño completo.Cómo leer los resultados de memoria y tiempo
Las transiciones de escena pueden requerir más RAM que cualquiera de las dos escenas mientras se juega. Usa el informe de compilación para comprobar las transiciones e intenta dejar al menos 160 KiB libres. Vuelve a compilar después de cambiar el contenido o actualizar el engine para renovar las cifras.
La largest allocation request de la superposición es el tamaño de una solicitud, no la cantidad de memoria libre. Las temporizaciones de Lua, física, navegación y animación se incluyen en mediciones más amplias de actualización; no las sumes de nuevo a Update.
El valor frame mide intervalos de VSync, no milisegundos ni FPS. Dos intervalos equivalen aproximadamente a 30 FPS en NTSC o 25 FPS en PAL. El contador slow registra los cuadros que superan un intervalo; por eso, un juego a 30 FPS en NTSC puede incrementarlo continuamente sin que exista un error del runtime. Para diagnosticar el rendimiento y repetir las mediciones, consulta Baja tasa de cuadros en DuckStation.
Qué demuestra PS1 Ready
PS1 Ready significa que la compilación cumple las comprobaciones de presupuesto de producción del engine. Después, juega la versión empaquetada en DuckStation y en el hardware objetivo. Revisa la tasa de cuadros, la entrada del mando, la UI, las transiciones de escena, el audio y el guardado. Para proyectos que admitan ambos estándares de video, prueba NTSC y PAL.