Desarrollo de juegos con Astra: Circuit Shift

Updated 2026-09-05

Una tarea de Codex configurada con Astra produjo un prototipo nativo de Godot de tres salas con colisiones funcionales, rompecabezas de relés, estados de victoria y derrota y progreso guardado. Este es el recorrido desde el brief hasta el juego probado, incluida la reparación que inicialmente no detectaron las comprobaciones de gameplay.

El resultado: un bucle de gameplay completo en tres salas

Circuit Shift es un pequeño juego de puzles cenital construido y probado en Godot 4.5.1 sobre macOS. Guías al mensajero CS-07 por tres salas de estaciones de relés, recoges tres celdas de energía en cada sala, abres compuertas numeradas, evitas centinelas móviles y llegas a la salida. La ejecución nativa automatizada final completó las tres salas, ejercitó la derrota y el reinicio y guardó el progreso de campaña y los mejores tiempos. Otro proceso abrió correctamente ese guardado.

La conclusión útil para un proyecto de juego asistido por IA es la combinación de un brief acotado, comprobaciones de gameplay impulsadas por el motor e inspección visual. Pedir un bucle pequeño y completo permitió probar más que el movimiento: la salida debía permanecer sellada antes de recoger las celdas, completar una sala debía desbloquear el sector siguiente y los ajustes debían sobrevivir a un relanzamiento. El proyecto descargable permite inspeccionar esos comportamientos por cuenta propia.

Sector uno de Circuit Shift con el mensajero menta, tres celdas amarillas, un relé numerado, una compuerta roja cerrada, un peligro móvil y la salida sellada.
Captura real del framebuffer de Godot de 1280 x 960 durante la ejecución nativa final, al inicio del sector uno.

El brief inicial hizo concreta la finalización

La tarea especificó un juego original llamado Circuit Shift, tres niveles breves, física del motor, interruptores y compuertas, celdas coleccionables, victoria/derrota/reinicio, un menú inicial, ajustes y progreso guardado. También exigió capturas auténticas, un miniflujo de gameplay en el motor real y una reapertura del estado guardado. Godot 4.5.1 ya estaba instalado y se reutilizó; el desarrollo comenzó en un directorio de juego nuevo con un HOME temporal separado.

El fragmento siguiente es un extracto del brief inicial real, con saltos de línea añadidos para facilitar la lectura y su redacción original conservada. El archivo completo initial-prompt.txt está incluido en el ZIP del código fuente. Para tu propio brief, lo más transferible son los criterios observables de finalización: especifica qué puede hacer el jugador y qué debe seguir funcionando después de cerrar el juego.

Task: build an original polished small 2D Godot game called Circuit Shift.
Three short levels; controllable character, enginephysics/collisions,
switches and gates, collectible cells, exit, win/loss/restart,
start menu, smallsettings and savedprogress.

Del prompt a los archivos, el feedback del motor y las salas funcionales

El agente creó los datos de las salas, GDScript, menús, ajustes, guardados locales y un arnés de gameplay; después ejecutó repetidamente el motor e inspeccionó los resultados. El movimiento usa CharacterBody2D.move_and_slide; las paredes y compuertas usan StaticBody2D; las celdas, los peligros y las salidas usan activadores Area2D. Estos contratos del motor conectan la sala visible con los cambios de colisión y estado que el arnés puede observar.

El registro contiene 13 ejecuciones del motor del juego entre importación, gameplay, comprobaciones de regresión, capturas nativas, reapertura, empaquetado e inspección de píxeles. La secuencia incluyó un fallo inicial de presencia de escena antes de la implementación, gameplay sin interfaz, capturas nativas, una reparación visual enfocada y comprobaciones finales de artefactos. El arte específico del juego se dibujó proceduralmente con código CanvasItem de Godot y cinco efectos de sonido PCM se sintetizaron localmente. El trabajo observado consistió en parches creados por el agente, comandos locales, solicitudes de permiso para ejecución nativa e inspección de capturas; no se observó dirección adicional de la tarea ni reparación humana de código.

Sector tres de Circuit Shift con dos relés numerados activados, dos compuertas abiertas, dos celdas recogidas y el mensajero junto al relé dos.
Captura nativa real de 1280 x 960 del sector tres durante la ejecución final, donde se muestran abiertos los dos circuitos de relé independientes.

El defecto real: el foco del teclado hacía difícil leer un botón

La primera ejecución nativa de gameplay superó sus aserciones, pero la inspección de capturas reveló texto con poco contraste en un botón principal enfocado. Importaba porque el menú de la estación también admite navegación por teclado: que la acción de inicio funcionara no garantizaba que el control de inicio fuera legible. Una comprobación de regresión específica falló después con una relación de contraste de aproximadamente 1.36:1.

La reparación estableció explícitamente font_focus_color con el color de primer plano oscuro del botón principal. La comprobación siguiente midió aproximadamente 10.57:1 y la ejecución nativa final conservó la aserción de contraste superada. Las salidas sin procesar, fallida y correcta, permanecen en el directorio de evidencia. Este es un motivo concreto para combinar las pruebas de gameplay con la inspección de estados de interfaz enfocados y seleccionados: las transiciones de estado pueden ser correctas mientras los controles que las exponen todavía necesitan trabajo.

EtapaResultado observadoRegistro de evidencia
Regresión específicaContraste del botón enfocado 1.36:1; falló05-focus-regression
Corrección explícita del color de focoContraste del botón enfocado 10.57:1; superó la prueba06-focus-fixed
Ejecución nativa finalLa aserción de contraste y el gameplay superaron la prueba juntos09-native-final

Qué ejercitaron realmente las pruebas nativas

El miniflujo de gameplay final ejecutó acciones normales de Godot Input y señales nativas de Control; una comprobación de mapeo envió un InputEventKey. El mensajero se movió mediante la física del motor. El arnés comprobó la colisión con paredes, el bloqueo de compuertas cerradas, la apertura y el cierre de relés, el requisito de salida tras recoger todas las celdas, tres victorias de sala, la derrota por peligro, el reinicio, la pausa, los ajustes y los activadores de generación y reproducción de sonido. No teletransportó al jugador, concedió celdas directamente ni asignó un estado de victoria.

Las cantidades siguientes son aserciones dentro de estos flujos, incluidos waypoints y capturas, no tareas de benchmark independientes. Las tres ejecuciones nativas finales terminaron correctamente con stderr vacío. El gameplay del código fuente de campaña es la prueba más amplia; la ejecución del PCK establece la carga del paquete y la continuidad del estado guardado, no una segunda campaña completa mediante el juego empaquetado.

Ejecución registradaComprobaciones superadasResultado observado
09-native-final62Campaña nativa completa de tres salas más comprobaciones de derrota, reinicio, pausa, ajustes y activadores de audio
Ejecución 10-native-reopen-compact6Un proceso separado cargó el progreso y los ajustes y continuó hasta el sector tres
12-native-pck6El paquete se inició fuera del directorio fuente, abrió de nuevo el guardado y entró en el sector tres

La reapertura probó la persistencia y el diseño compacto

Un proceso nativo nuevo cargó unlocked=3, completed=true, tres mejores tiempos positivos, volume=0.35 y reduced_motion=true. Continue entró en el sector tres. Esto separa la persistencia de un valor que simplemente permanece en memoria mientras se ejecuta el juego. El juego guarda el progreso al completar una sala, por lo que el punto de reanudación previsto es una sala y no la última posición del mensajero.

La ejecución compacta aportó también una segunda comprobación de diseño: la sala, el HUD, el temporizador y los controles permanecieron completamente encuadrados a 720 x 540. Las capturas de escritorio son de 1280 x 960. Entre las ejecuciones finales de código fuente y paquete, doce capturas nativas superaron el muestreo de píxeles no vacíos y la inspección visual comprobó el encuadre y la legibilidad. Son capturas auténticas del viewport nativo; la imagen más pequeña demuestra una ventana de escritorio compacta.

Sector tres de Circuit Shift a 720 por 540 con la sala completa, el contador de celdas, el temporizador, los controles de reinicio y pausa y el estado de energía de la estación visibles.
Captura nativa real de 720 x 540 después de que un proceso separado reabriera el progreso guardado y continuara hasta el sector tres.

Tiempo y configuración: cómo leer el registro de ejecución

El inicio solicitado fue el 5 de septiembre de 2026 a las 05:35:51 UTC; la finalización quedó registrada a las 06:00:11.007 UTC. Son 1,460.007 segundos, aproximadamente 24 minutos 20 segundos de tiempo de pared transcurrido. Incluye implementación, ejecución de herramientas, pruebas, reparaciones, capturas y empaquetado con un motor ya disponible. No es latencia de respuesta del modelo ni una previsión para el tiempo de desarrollo de otro juego. Un único brief inicial produjo varias iteraciones de implementación y herramientas.

Esta es una ejecución de Codex configurada con Astra: el coordinador registró spawn_agent.model=gpt-6-astra con reasoning_effort=xhigh. Eso establece únicamente la configuración solicitada. La identidad del modelo en las respuestas de API, el uso de tokens, el coste y el número de llamadas al modelo o a la API no se expusieron y permanecen como null en run-summary.json; no se observó ninguna solicitud directa a APIsRouter ni facturación. La comprobación del catálogo público del 5 de septiembre tampoco encontró Astra en APIsRouter. La documentación oficial del modelo y esta configuración local no establecen acceso mediante gateway.

Descarga y ejecuta Circuit Shift en Godot

Descarga el ZIP del código fuente para inspeccionar la implementación, el brief completo, los controles, el arnés de pruebas y la evidencia conservada. Extráelo, importa game/project.godot en Godot 4.5.1 y ejecuta el proyecto. Muévete con WASD o las flechas, activa un relé cercano con E o Space, reinicia con R y pausa con Escape. Recoge todas las celdas para activar la salida; tocar un centinela termina el intento.

Para la versión empaquetada, descarga circuit-shift.pck e iníciala con un runtime de Godot compatible mediante el comando de abajo. El PCK requiere Godot y no es un ejecutable independiente. Se verificaron la integridad del ZIP, la igualdad de archivos críticos archivados, la igualdad de código fuente respecto a la ejecución nativa final y la igualdad SHA-256 de los recursos copiados. El PCK se inició desde un directorio temporal fuera del proyecto fuente. Los enlaces de descarga de ambos artefactos, run-summary.json y el manifiesto SHA-256 aparecen abajo.

godot --main-pack circuit-shift.pck

Para qué está listo este prototipo a continuación

El siguiente paso útil es una prueba humana del bucle de tres salas: ¿un jugador nuevo entiende la numeración de los relés, nota por qué la salida está sellada y puede recuperarse de una derrota? En este caso no se recopilaron pruebas humanas de juego, pruebas de escucha ni datos de uso de usuarios reales. La finalización automatizada y los búferes de audio generados establecen rutas funcionales; no establecen disfrute, equilibrio de dificultad, calidad de sonido, retención ni usabilidad amplia.

Windows, navegador, Steam, controles táctiles y gamepad siguen sin probarse; las plantillas de exportación para navegador no estaban disponibles localmente. Las ejecuciones aceleradas sin interfaz todavía emitieron diagnósticos de certificados de macOS y advertencias de cierre de recursos de audio, aunque los logs nativos finales tuvieron stderr vacío. Antes de elegir un objetivo de lanzamiento, resuelve los problemas de ejecución pertinentes y ejecuta las comprobaciones propias de entrada, guardado, empaquetado y rendimiento de ese objetivo. El resultado práctico es un prototipo nativo inspeccionable y un flujo de verificación repetible que puede guiar la siguiente ronda de desarrollo.

Preguntas frecuentes

¿Qué tipo de juego produjo la tarea?

Circuit Shift es un prototipo original cenital de Godot con tres salas. Cada sala combina celdas coleccionables, interruptores de relé numerados, compuertas físicas, peligros móviles y una salida. Incluye menú de estación, victoria/derrota/reinicio, pausa, ajustes y progreso guardado.

¿Cómo juego al PCK descargado?

Usa un runtime de Godot compatible; el caso utilizó Godot 4.5.1. Desde la carpeta que contiene circuit-shift.pck, ejecuta godot --main-pack circuit-shift.pck. Para inspeccionar o editar el juego, extrae el ZIP del código fuente y abre game/project.godot.

¿Qué controles debo usar?

Muévete con WASD o las flechas. Pulsa E o Space cerca de un relé, R para reiniciar la sala y Escape para pausar o reanudar. El menú admite ratón, Tab y Enter. Debes recoger todas las celdas antes de que se active la salida.

¿Qué progreso sobrevive a un reinicio?

Al completar una sala se guardan los sectores desbloqueados, la finalización de campaña y los mejores tiempos. Los ajustes de volumen y movimiento reducido también persisten. Un proceso separado verificó estos valores guardados y continuó hasta el sector tres; el juego no guarda cada movimiento dentro de una sala.

¿De dónde proceden el arte y los efectos de sonido?

Los elementos visuales específicos del juego se crearon proceduralmente con código de dibujo CanvasItem de Godot. Cinco efectos de sonido PCM se sintetizan localmente en tiempo de ejecución. Godot proporciona su fuente integrada mediante el motor instalado por separado.

¿Qué debo reutilizar de este flujo de trabajo?

Empieza con un bucle pequeño y completo y criterios de aceptación observables. Ejecuta entradas reales del motor a través de la recogida de celdas, las compuertas, la victoria, la derrota y el reinicio; inspecciona capturas para detectar defectos visuales; vuelve a abrir el estado guardado en otro proceso y prueba después el artefacto fuera de su directorio fuente. Conserva los fallos para que cada reparación tenga un motivo rastreable.