Saltar al contenido principal

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​

  1. Presiona Ctrl+S.
  2. Abre Build > Build Settings....
  3. Agrega Scenes/scene_main.json a Scenes In Build si todavía no aparece.
  4. Establécela como Startup Scene.
  5. 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:

  1. Build > Validate Project
  2. Build > Tools & Diagnostics > Show PS1 Budget
  3. 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 Trigger marcado 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.

PruebaResultado esperado
Iniciar Play ModeEl jugador aparece en Room A a la altura correcta
Stick izquierdo / D-PadEl jugador se mueve y colisiona con el piso y las paredes
Stick derechoLa cámara en primera persona permite mirar alrededor con un mando analógico
Acercarse a la geometríaLas paredes siguen visibles sin caras superpuestas ni uniones muy evidentes
Entrar en Door TriggerLa puerta desaparece, se reproduce el sonido y el estado confirma el guardado
Caminar hacia Room BEl jugador atraviesa la abertura de la puerta
Presionar SquareSe restaura la posición guardada del jugador
Activar Save ButtonEl callback del botón guarda y reproduce audio
Activar Reset ButtonLas claves del tutorial se guardan como borradas, el jugador regresa a Room A y la puerta se cierra
Detener y reiniciar Play ModeLa 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:

  1. Asigna Analog Controller / DualShock al Port 1.
  2. 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.
  3. 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.

Two-Room Relay empaquetado ejecutándose en DuckStation, con la puerta cerrada y el HUD completo visible

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.

  1. Usa Reset Button para comenzar con la puerta cerrada.
  2. Camina hacia el trigger y espera el mensaje DOOR OPEN - CHECKPOINT SAVED.
  3. Reinicia o apaga y enciende la consola emulada.
  4. Inicia el mismo CUE con la misma tarjeta conectada al Port 1.
  5. Confirma que la puerta comienza abierta.
  6. Presiona Square y confirma que se cargue la posición guardada.
  7. 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íntomaQué revisar
El jugador atraviesa el pisoEl Collider del piso existe, no es un trigger y coincide con la malla escalada
La puerta nunca se abreTamaño y posición del trigger, Is Trigger, Player Name y OnTriggerEnter
La puerta se dibuja encima de una paredLa puerta está dentro de la abertura y no es coplanar con una pieza divisoria
El botón no hace nadaInteractable, Target Entity Door Trigger y nombre exacto de la función
No se reproduce el audioClip de Audio Source, Play On Start desactivado, importación VAG residente y presupuesto de SPU
SAVE FAILEDDisponibilidad de la tarjeta del Port 1, ID de archivo, longitud de las entradas y SaveData.GetLastError()
El stick derecho no hace nadaTipo de mando y modo analógico en DuckStation
La compilación no puede empaquetarCierra 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:

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.

PruebaResultado requerido
Tarjeta ausente o llena al entrar en el triggerLa 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 SaveSe conservan la posición actual y la puerta abierta; reinicia y carga para confirmarlo
Tarjeta dañada o ausente al presionar SquareLOAD FAILED; la posición del jugador y el estado de la puerta no cambian
Tarjeta llena al activar ResetRESET FAILED; el jugador y la puerta no cambian; las preferencias anteriores del tutorial siguen disponibles
Restaurar la disponibilidad de la tarjeta y reintentar ResetPROGRESS 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 puertaEl 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 nombreEl 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.