5. Prueba y compila
El proyecto ya tiene todas sus funciones. En este capítulo lo convertirás en una prueba de aceptación repetible y generarás la imagen de disco de PS1.
Guarda y configura la compilación
- Presiona
Ctrl+S. - Abre Build > Build Settings....
- Agrega
Scenes/scene_main.jsona Scenes In Build si todavía no aparece. - Establécela como Startup Scene.
- Guarda la configuración de compilación.
Este tutorial usa una sola escena, por lo que cualquier otra ruta de inicio es un error.
Ejecuta las comprobaciones de aceptación del editor
Ejecuta estos comandos en orden:
- Build > Validate Project
- Build > Tools & Diagnostics > Show PS1 Budget
- Build > Tools & Diagnostics > Build with Readiness Checks
No ignores los errores que bloquean la compilación. Para este proyecto, revisa especialmente lo siguiente:
- exactamente un controlador de jugador activado y un Spawn Point predeterminado;
- una cámara de juego activada;
- Colliders en todas las piezas de las habitaciones creadas en Level Builder;
Door Triggermarcado como trigger;- valores exactos y únicos en las propiedades Player Name y Door Name del script;
- GUID de textura y audio importados;
- funciones de destino válidas para los botones de la interfaz;
- un ID de archivo único para la tarjeta de memoria;
- ningún desbordamiento de VRAM, SPU RAM, paquetes, Lua ni memoria de ejecución.
Matriz completa de pruebas en Play Mode
Usa esta tabla como lista de comprobación de regresiones cada vez que cambia Polygon Engine.
| Prueba | Resultado esperado |
|---|---|
| Iniciar Play Mode | El jugador aparece en Room A a la altura correcta |
| Stick izquierdo / D-Pad | El jugador se mueve y colisiona con el piso y las paredes |
| Stick derecho | La cámara en primera persona permite mirar alrededor con un mando analógico |
| Acercarse a la geometría | Las paredes siguen visibles sin caras superpuestas ni uniones muy evidentes |
| Entrar en Door Trigger | La puerta desaparece, se reproduce el sonido y el estado confirma el guardado |
| Caminar hacia Room B | El jugador atraviesa la abertura de la puerta |
| Presionar Square | Se restaura la posición guardada del jugador |
| Activar Save Button | El callback del botón guarda y reproduce audio |
| Activar Reset Button | Las claves del tutorial se guardan como borradas, el jugador regresa a Room A y la puerta se cierra |
| Detener y reiniciar Play Mode | La copia local de guardado del editor restaura el estado esperado |
Si un fallo aparece aquí pero no en la compilación de PS1, repórtalo como una discrepancia de la vista previa de Play Mode. Si aparece solo en DuckStation, conserva los registros de compilación generados y revisa primero los presupuestos de PS1 y la configuración del mando.
Compila y ejecuta en DuckStation
Configura DuckStation antes de iniciar:
- Asigna Analog Controller / DualShock al Port 1.
- Activa el modo analógico automático o presiona el botón Analog/Guide asignado después del inicio si el mando arranca en modo digital.
- Conecta una tarjeta de memoria formateada al Port 1.
Si usas teclado, abre Settings > Controllers en DuckStation, selecciona Controller Port 1 y elige Automatic Mapping > Keyboard. La asignación predeterminada usa WASD para el stick izquierdo, TFGH para el derecho, K para Cross, J para Square y las flechas para el D-Pad. Estas son las asignaciones de DuckStation; el editor tiene sus propios controles de teclado.
Automatic Mapping no siempre asigna el botón del modo Analog. Haz clic en esa asignación y elige una tecla libre, como P. Cierra la configuración del mando, vuelve a iniciar el CUE si cambiaste las asignaciones mientras el juego estaba abierto y presiona P después del inicio si el stick derecho no responde. Con la superposición de ejecución activada, analog:1 confirma la entrada analógica; analog:0 indica el modo digital. Para un mando físico, selecciona el dispositivo detectado y asigna su botón de modo Analog si es necesario.
Comprueba que el audio no esté silenciado en el emulador. Establece Settings > Graphics > Display > Crop Mode en None al revisar todo el lienzo de 320 x 240, incluidos los botones cerca del borde inferior. La siguiente captura usa una ventana de 1920 x 1080; el juego conserva su relación de aspecto original.
Antes de volver a compilar, cierra el juego que esté ejecutándose en DuckStation para liberar la imagen de disco. De lo contrario, Windows puede impedir que el empaquetador reemplace los archivos.
Después selecciona Build > Build & Run in DuckStation. Polygon Engine valida, convierte los recursos, empaqueta y abre el CUE generado. Si no está disponible el inicio automático, usa Build Disc Image (.bin + .cue) y abre:
Build/ps1/package/TWO_ROOM_RELAY.cue
Abre el CUE, no el ISO, para que el emulador usa la distribución del disco empaquetado.

Después de Reset, el jugador vuelve a Room A y la puerta está cerrada. Se ven la insignia exportada, el texto de estado, los controles y ambos botones. La cámara está inclinada hacia el piso para mostrar la habitación y el HUD al mismo tiempo.
Abre la imagen para verla a tamaño completo.Cada vez que inicies el juego exportado, aparecerá el logo de Polygon Engine sobre fondo negro durante cuatro segundos, con aparición y desaparición gradual, antes de cargar el tutorial. El logo es obligatorio y no aparece en Play Mode del editor. No debe repetirse al cambiar de escena.
Las exportaciones no contienen datos de arranque de discos de Sony. Configura en el emulador el BIOS que tengas derecho a usar y que este requiera, como se explica en BIOS, datos de arranque del disco y pantalla de inicio. Conserva la carpeta LICENSES generada junto al juego cuando compartas el BIN/CUE; la imagen también contiene estos avisos. Revisa Publicación y licencias antes de distribuirlo.
En este tutorial, copia también la licencia de los recursos
a la carpeta LICENSES exportada con el nombre TUTORIAL.TXT e incluye esa
carpeta en la descarga que compartas. Repite este paso después de compilar,
porque la carpeta de salida se vuelve a generar. Este archivo adicional no
se integra automáticamente en la imagen de disco; si haces una distribución
física, entrégalo con los materiales que acompañen al disco.
Comprueba la tasa de cuadros del juego
Usa la superposición de ejecución mientras recorres ambas habitaciones y miras a lo largo de las paredes. Video: 60 FPS (100%) en DuckStation muestra la tasa de salida NTSC y la velocidad de emulación; no significa que el juego se actualice a 60 FPS. Revisa el contador Game y los intervalos VSync del entorno de ejecución. Un cuadro que abarca cuatro VSync NTSC equivale aproximadamente a 15 FPS.
La comprobación de presupuestos confirma que el contenido cabe dentro de los límites. No garantiza una tasa de cuadros determinada. Las vistas cercanas con mucho recorte y el trabajo de colisión del controlador pueden costar más de lo que sugiere la cantidad de triángulos de la escena.
Valida el ciclo real de guardado en tarjeta de memoria
Play Mode del editor usa una copia local en JSON; esta prueba utiliza el formato de guardado de PS1 dentro de DuckStation. No valida una tarjeta de memoria física ni una interrupción de energía.
- Usa
Reset Buttonpara comenzar con la puerta cerrada. - Camina hacia el trigger y espera el mensaje
DOOR OPEN - CHECKPOINT SAVED. - Reinicia o apaga y enciende la consola emulada.
- Inicia el mismo CUE con la misma tarjeta conectada al Port 1.
- Confirma que la puerta comienza abierta.
- Presiona Square y confirma que se cargue la posición guardada.
- Usa
Reset Button, reinicia de nuevo y confirma que la puerta comienza cerrada.
No retires la tarjeta de memoria ni cierres el emulador mientras se escribe en ella.
Fallos comunes
| Síntoma | Qué revisar |
|---|---|
| El jugador atraviesa el piso | El Collider del piso existe, no es un trigger y coincide con la malla escalada |
| La puerta nunca se abre | Tamaño y posición del trigger, Is Trigger, Player Name y OnTriggerEnter |
| La puerta se dibuja encima de una pared | La puerta está dentro de la abertura y no es coplanar con una pieza divisoria |
| El botón no hace nada | Interactable, Target Entity Door Trigger y nombre exacto de la función |
| No se reproduce el audio | Clip de Audio Source, Play On Start desactivado, importación VAG residente y presupuesto de SPU |
SAVE FAILED | Disponibilidad de la tarjeta del Port 1, ID de archivo, longitud de las entradas y SaveData.GetLastError() |
| El stick derecho no hace nada | Tipo de mando y modo analógico en DuckStation |
| La compilación no puede empaquetar | Cierra DuckStation si el paquete está bloqueado; de lo contrario, revisa el estado de las herramientas en Setup Wizard y la ruta de mkpsxiso |
Qué sigue
Ahora tienes una pequeña sección jugable completa, con sus sistemas integrados. Amplíala un sistema a la vez:
- reemplaza la puerta instantánea con un Transform Animator;
- agrega una consola Interactable en lugar de un trigger automático;
- import a custom 3D model and material;
- agrega partículas mediante la API ParticleSystem;
- agrega una segunda escena y cárgala con SceneManager;
- usa música CD-XA transmitida desde disco para una banda sonora más larga;
- compara el resultado con el ejemplo incluido Polygon: Last Exit.
Conserva la matriz final como un pequeño proyecto de aceptación para futuras versiones del engine.
Matriz de fallos y reintentos
Usa View > Save Data Simulator en una copia desechable del tutorial. Restaura Failure Simulation: None después de cada prueba.
| Prueba | Resultado requerido |
|---|---|
| Tarjeta ausente o llena al entrar en el trigger | La puerta se abre para continuar jugando; el estado indica SAVE FAILED; las preferencias guardadas no se reemplazan con un punto de control incompleto |
| Restaurar la disponibilidad de la tarjeta y activar Save | Se conservan la posición actual y la puerta abierta; reinicia y carga para confirmarlo |
| Tarjeta dañada o ausente al presionar Square | LOAD FAILED; la posición del jugador y el estado de la puerta no cambian |
| Tarjeta llena al activar Reset | RESET FAILED; el jugador y la puerta no cambian; las preferencias anteriores del tutorial siguen disponibles |
| Restaurar la disponibilidad de la tarjeta y reintentar Reset | PROGRESS RESET; el jugador regresa a Room A y la puerta se cierra; el reinicio confirma que se borró el progreso |
| Guardar antes de abrir la puerta | El punto de control con la puerta cerrada se carga como cerrado; un guardado posterior exitoso del trigger registra la puerta abierta |
| Player o Door faltante o con otro nombre | El error de configuración identifica el enlace por nombre; ninguna operación de guardado se considera exitosa |
Repite los flujos normales de guardado, carga, reinicio y reintento en el juego empaquetado. Save Data Simulator permite probar los mensajes de error durante el desarrollo; prueba también el juego final en el hardware de destino.