Límites de ejecución
Esta página centraliza los límites de tiempo de ejecución que importan durante la creación. Estos límites son aplicados o validados por el canal de edición/construcción y reflejan el diseño de tiempo de ejecución de tamaño fijo.
Capacidades principales del entorno de ejecución
| Límite | Valor |
|---|---|
| GameObjects por escena | 160 |
| Recursos de textura | 64 |
| Ranuras de página de textura | 20 |
| Recursos de malla | 192 |
| Recursos de material | 64 |
| Clips Audio | 16 |
| Streaming de pistas de música CD-XA | 8 |
| Componentes Lua Behaviour | 32 |
| Caché de código fuente de script | 32 |
| Canvas de UI | 8 |
| Elementos de UI | 32 |
| Entradas de texto de IU | 32 |
| Fuentes de mapa de bits | 3 |
| Habitaciones | 24 |
| Portales | 48 |
| NavMesh Superficies | 4 |
| Agentes de NavMesh | 16 |
| Nodos de navegación | 256 |
| Enlaces dirigidos por navegación | 1,024 |
| Clips de escena | 8 |
| Tracks por cutscene | 12 |
| Keyframes por pista | 48 |
| Cutscene keyframes en una escena | 256 |
| Clips Animation independientes | 12 |
| Instancias Animation independientes simultáneas | 8 |
| Pistas por clip Animation independiente | 12 |
| cuadros clave por pista Animation independiente | 48 |
| Cuadros clave de Animation independientes en una escena | 256 |
| Componentes del Animator por escena | 32 |
| Estados de animación por GameObject | 4 |
| Mallas con skinning por escena | 16 |
| Partículas | 32 |
| Pares de colisión | 64 |
| Recursos del manifiesto | 256 |
| Scripts manifiestos | 64 |
| Escenas de manifiesto | 32 |
Límites de memoria y archivos
| Límite | Valor |
|---|---|
| RAM principal | Total de hardware 2 MB |
| VRAM | Total de hardware 1 MB |
| RAM SPU | Total de hardware 512 KB |
| Límite del heap de Lua durante la ejecución | 512 KB |
| Tamaño máximo de un script Lua | 64 KB |
| Presupuesto de instrucción Lua | Por callback más un presupuesto global por cuadro |
| Tamaño máximo del manifiesto | 16 KB |
| Tamaño máximo de una escena binaria | 160 KB |
| Buffer de paquetes en tiempo de ejecución | 96 KB |
| Umbral recomendado de memoria de paquetes | 80 KB |
| Objetivo de producción de escena binaria | 65% de 160 KB |
| Objetivo de producción manifiesto | 70% de 16 KB |
| Objetivo de producción de paquetes | 80% de 96 KB |
| Nivel de advertencia RAM en tiempo de ejecución | Menos de 160 KB libres dentro del presupuesto de tiempo de ejecución seguro de PS1 |
| Mínimo de RAM libre para Release | Tener menos de 96 KB libres impide generar una compilación Release |
Límites de Renderización y Presupuestos
| Tema | Valor o regla |
|---|---|
| Longitud de la tabla de ordenamiento | Grupos 2048 |
| Grupos de la tabla de ordenamiento reservados para UI | 64 grupos en primer plano |
| Luces direccionales de escena | 3 |
| Triángulos máximos recomendados por malla | Límite blando 2,000 |
| Triángulos máximos duros por malla | 2,048; dividir o sectorizar antes de la compilación |
| Triángulos de escena máxima recomendados | Límite blando 4,000 |
| Recomendado distancia lejana | Mantener en o por debajo de unidades de mundo 32 aproximadamente cuando sea posible |
| Enfoque estático incorporado para preprocesar | Compatible con geometría Plane y Cube |
Límites de SaveData
| Límite | Valor |
|---|---|
| Asignación de tarjetas de memoria | Un bloque de 8.192 bytes |
| Puerto de tarjeta de memoria activo | Puerto 1 |
| Entradas clave/valor | 32 |
| Campo clave | 32 bytes incluyendo el terminador |
| Campo de valor | 64 bytes incluyendo el terminador |
Para PlayerPrefs, usa claves de hasta 28 bytes y valores de texto de hasta 61 bytes. Ambas API comparten el límite de 32 entradas. Consulta Persistencia para guardar, cargar y manejar errores.
Límites de ruta de navegación
Los agentes NavMesh.FindPath() y NavMesh en tiempo de ejecución requieren que la ruta completa se ajusta a 32 puntos de ruta. Las solicitudes más largas fallan en lugar de devolver una ruta parcial. NavMeshAgent usa su superficie asignada y otras superficies alcanzables mediante Navigation Links dirigidos explícitos. Los nodos/enlaces del gráfico de navegación se cuecen en la escena y cuentan con el tamaño de carga .BSN, así como sus matrices de tiempo de ejecución fijas.
Límites de línea de tiempo
Solo se reproduce un clip de línea de tiempo a la vez. Los nombres de clip y de pista usan el campo de cadena BSN de 31 caracteres; las cargas útiles de eventos usan el campo de 63 caracteres. La validación requiere estrictamente aumentar los tiempos de cuadro clave dentro de la duración del clip.
Límites Animation independientes
Hasta ocho instancias independientes se ejecutan simultáneamente. Las ranuras activas se evalúan de 0 a 7, y una ranura posterior gana cuando dos clips escriben la misma propiedad en un cuadro. OnComplete se ejecuta solo después de la finalización natural sin bucle, nunca después de Stop o un bucle.
Los clips independientes admiten pistas para la transformación y activación de GameObjects; la visibilidad, el progreso, el color, la posición y el tamaño de la UI; la vibración; y los eventos de clips esqueléticos. Las pistas de cámara, audio, scripts y niebla son exclusivas de las cinemáticas.
Transform Animator Piscina
El componente Transform Animator utiliza un grupo determinista de capacidad fija de 32 filas, con cuatro estados de transformación por fila. Una fila se asigna solo cuando un GameObject de escena realmente tiene un Transform Animator, por lo que el GameObjects ordinario no incrusta cuatro registros de estado no utilizados en cada tiempo de ejecución GameObject. La asignación sigue el orden determinista de carga de escena y el grupo se restablece en la carga de escena.
Esta sigue siendo una capacidad difícil, no una memoria de escritorio en crecimiento dinámico. El editor y la compilación rechazan una escena por encima de 32 componentes Transform Animator, y cada componente debe permanecer en o por debajo de cuatro estados.
Límites esqueléticos Animation
| Límite | Valor |
|---|---|
| Huesos por recurso | 64 |
| Clips por recurso | 16 |
| Vertices por recurso | 4,096 |
| Índices por recurso | 12,288 |
| Geometría por recurso / escena | 128 KiB / 192 KiB |
| Rasguño de deformación compartido | 64 KiB |
| Datos de matriz por recurso/escena | 192 KiB / 256 KiB |
| Nombre del clip / hueso | Personajes 24 / 31 |
El importador utiliza un hueso dominante por vértice y un material por recurso. El búfer temporal compartido es el mayor requisito de recursos, no una suma por renderizador. Consulta Animación esquelética para ver el flujo de trabajo completo.
Límites de propiedad de script
| Límite | Valor |
|---|---|
| Propiedades por componente Lua Behaviour | 8 |
| Nombre de la propiedad | 32 bytes |
| Longitud del valor de la propiedad | 64 bytes |
Validación de cadenas en tiempo de ejecución
La compilación valida cadenas de tiempo de ejecución de tamaño fijo antes de escribir archivos .BSN. Los nombres de GameObject, nombres de malla, GUID de material/audio, rutas de script, propiedades de script, acciones de entrada, solicitudes de interacción, nombres de botones/lienzos interactivos, nombres de funciones de callback, ID de Spawn Point, nombres de estados de Transform Animator, nombres de UI Canvas y texto de interfaz de usuario deben ajustarse a sus campos de tiempo de ejecución. Los valores demasiado largos se informan como problemas de compilación en lugar de truncarse silenciosamente.
Política de voz Audio
La PS1 SPU proporciona 24 voces de hardware. Polygon Engine no roba silenciosamente una voz que ya está en uso; si todas las voces están ocupadas, la reproducción falla con un error de tiempo de ejecución Audio: no channel available explícito. Mantén los efectos simultáneos de una sola toma y las fuentes de bucle dentro de ese presupuesto de voz.
La música CD-XA sigue una ruta de transmisión global separada y no ocupa una de las 16 ranuras de clip de audio residentes. Solo se reproduce una transmisión de música a la vez. Consulta Importación de audio para saber cuándo elegir cada ruta.
Límites de exportación Level Builder
| Límite | Regla |
|---|---|
| Rango de índice de vértice | Debe ajustarse a índices de 16 bits |
| Bordes triangulares largos | Validar y tessellate cuando sea necesario |
| Caras degeneradas | Debe ser fijado antes de la exportación confiable |
| Geometría no múltiple | Tratar como una advertencia/riesgo para el uso en tiempo de ejecución |
| Ranuras de material | Máximo 64 por malla Level Builder |
| Colisión de escena | Las mallas colocadas deben mantener o ajustar su Collider generado |
Cómo usar esta página
Cuando una escena crece, revisa los límites en este orden:
- Ejecuta Build > Validate Project.
- Abre Build > Tools & Diagnostics > Show PS1 Budget.
- Cree el proyecto e inspecciona los informes posteriores al preprocesamiento en
Build/ps1/logs/. - Compara errores difíciles con esta página.
- Reduce el contenido, divide escenas, simplifique los recursos o ajusta la creación antes de probar en DuckStation.
Si un número aquí y un mensaje de validación no están de acuerdo, confíe en el resultado de validación actual y actualice esta documentación.
Asignación y dominios numéricos
Las escenas BSN de producción reservan almacenamiento para su cantidad real de GameObjects, a razón de 1,552 bytes por registro de ejecución, y conservan el límite de 160 objetos. Este costo por registro se suma a las asignaciones de las mallas referenciadas, Lua y las funciones opcionales. La ruta heredada de archivos JSON sueltos de Debug puede reservar la capacidad completa de entidades. Los búferes de las mallas integradas conservan únicamente el tamaño de la geometría generada; sus límites de subdivisión no han aumentado.
Puede haber como máximo 16 emisores Particle System creados, que comparten el conjunto de 32 partículas del entorno de ejecución. Los Input Action Maps contienen como máximo 32 acciones. Las capacidades de los campos de texto incluyen el byte de terminación: los nombres de propiedades de scripts admiten hasta 31 bytes y los valores hasta 63. Estos límites se expresan en bytes, no en cantidad de caracteres Unicode.
La posición en el mundo usa valores de 32 bits con signo a una escala de 1,024 unidades por unidad del mundo. La escala de Transform usa una conversión independiente de 16 bits con signo y una magnitud máxima de 32767 / 1024. Las representaciones locales de la malla para preprocesamiento y proyección usan otras escalas; no sustituyas el contrato de coordenadas del mundo por una constante de preprocesamiento de vértices. Los setters y la validación de compilación rechazan datos no finitos o fuera de rango.
El presupuesto orientativo de paquetes de 80 KiB es distinto del objetivo de Production Acceptance de 80% de 96 KiB. Las cantidades de memoria que el editor muestra como KB usan unidades de 1,024 bytes. Consulta Panel de presupuestos para conocer el cálculo del pico de memoria durante la carga y el alcance de PS1 Ready.