Desenvolvimento de jogos com Astra: Circuit Shift

Updated 2026-09-05

Uma tarefa do Codex configurada com Astra produziu um protótipo Godot nativo de três salas com colisões funcionais, quebra-cabeças de relés, estados de vitória e derrota e progresso salvo. Este é o caminho do briefing ao jogo testado, incluindo o reparo que os testes de jogabilidade inicialmente não encontraram.

O resultado: um loop completo de jogabilidade em três salas

Circuit Shift é um pequeno jogo de quebra-cabeça visto de cima, criado e testado no Godot 4.5.1 em macOS. Você guia o entregador CS-07 por três salas de estações de relé, coleta três células de energia em cada sala, abre portões numerados, evita sentinelas móveis e chega à saída. A execução nativa automatizada finalizou as três salas, exercitou derrota e reinício e salvou o progresso da campanha e os melhores tempos. Um processo separado reabriu esse salvamento com sucesso.

A lição útil para um projeto de jogo assistido por IA é combinar um briefing delimitado, verificações de jogabilidade orientadas pelo motor e inspeção visual. Pedir um loop pequeno completo permitiu testar mais do que movimento: a saída precisava continuar selada antes da coleta, a conclusão da sala precisava desbloquear o setor seguinte e as configurações precisavam sobreviver a uma reabertura. O projeto para download permite inspecionar esses comportamentos por conta própria.

Setor um de Circuit Shift com o entregador verde-menta, três células amarelas, um relé numerado, um portão vermelho fechado, um perigo móvel e a saída selada.
Captura real do framebuffer do Godot em 1280 x 960 na execução nativa final, no início do setor um.

O briefing inicial tornou a conclusão concreta

A tarefa especificou um jogo original chamado Circuit Shift, três níveis curtos, física do motor, interruptores e portões, células coletáveis, vitória/derrota/reinício, um menu inicial, configurações e progresso salvo. Também exigiu capturas autênticas, um minifluxo de jogabilidade no motor real e uma reabertura do estado salvo. O Godot 4.5.1 já estava instalado e foi reutilizado; o desenvolvimento começou em um novo diretório de jogo com um HOME temporário separado.

O trecho abaixo é uma parte do briefing inicial real, com quebras de linha adicionadas para facilitar a leitura e a formulação original preservada. O initial-prompt.txt completo está incluído no ZIP do código-fonte. Para seu próprio briefing, a parte mais transferível são os critérios de conclusão observáveis: especifique o que o jogador pode fazer e o que ainda deve funcionar depois de fechar o jogo.

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.

Do prompt aos arquivos, feedback do motor e salas funcionais

O agente escreveu dados das salas, GDScript, menus, configurações, salvamentos locais e um harness de jogabilidade; depois executou repetidamente o motor e inspecionou os resultados. O movimento usa CharacterBody2D.move_and_slide; paredes e portões usam StaticBody2D; células, perigos e saídas usam gatilhos Area2D. Esses contratos do motor conectam a sala visível às mudanças de colisão e estado que o harness pode observar.

O registro contém 13 execuções do motor de jogo entre importação, jogabilidade, verificações de regressão, captura nativa, reabertura, empacotamento e inspeção de pixels. A sequência incluiu uma falha inicial de presença da cena antes da implementação, jogabilidade headless, capturas nativas, um reparo visual focado e verificações finais dos artefatos. A arte específica do jogo foi desenhada proceduralmente com código Godot CanvasItem e cinco efeitos sonoros PCM foram sintetizados localmente. O trabalho observado consistiu em patches escritos pelo agente, comandos locais, solicitações de permissão para execução nativa e inspeção de capturas; nenhuma orientação adicional de tarefa humana ou correção de código humana foi observada.

Setor três de Circuit Shift com dois relés numerados ativados, dois portões abertos, duas células coletadas e o entregador ao lado do relé dois.
Captura nativa real em 1280 x 960 do setor três durante a execução final, mostrando os dois circuitos de relé independentes abertos.

O defeito real: o foco do teclado tornava um botão difícil de ler

A primeira execução nativa de jogabilidade passou nas asserções, mas a inspeção das capturas revelou texto de baixo contraste em um botão primário focado. Isso importava porque o menu da estação também aceita navegação por teclado: uma ação de início funcional não garantia um controle de início legível. Uma verificação de regressão direcionada falhou então com uma proporção de contraste de aproximadamente 1.36:1.

O reparo definiu explicitamente font_focus_color como o primeiro plano escuro do botão primário. A verificação seguinte mediu aproximadamente 10.57:1 e a execução nativa final manteve a asserção de contraste aprovada. As saídas brutas de falha e sucesso permanecem no diretório de evidências. Esse é um motivo concreto para combinar testes de jogabilidade com a inspeção dos estados de UI focado e selecionado: as transições de estado podem estar corretas enquanto os controles que as expõem ainda precisam de trabalho.

EtapaResultado observadoRegistro de evidência
Regressão direcionadaContraste do botão focado 1.36:1; falhou05-focus-regression
Correção explícita da cor de focoContraste do botão focado 10.57:1; aprovado06-focus-fixed
Execução nativa finalAsserção de contraste e jogabilidade aprovadas juntas09-native-final

O que os testes nativos realmente exercitaram

O minifluxo final de jogabilidade acionou ações normais de Input do Godot e sinais nativos de Control; uma verificação de mapeamento enviou um InputEventKey. O entregador se moveu pela física do motor. O harness verificou colisão com paredes, bloqueio por portões fechados, abertura e fechamento de relés, o requisito de saída após coletar todas as células, vitórias nas três salas, derrota por perigo, reinício, pausa, configurações e gatilhos de geração/reprodução de som. Ele não teletransportou o jogador, concedeu células diretamente nem atribuiu um estado de vitória.

As contagens abaixo são asserções dentro desses fluxos, incluindo waypoints e capturas, e não tarefas de benchmark independentes. As três execuções nativas finais terminaram com sucesso e stderr vazio. A campanha de jogabilidade da fonte é o teste mais amplo; a execução do PCK estabelece carregamento do pacote e continuação do estado salvo, não uma segunda campanha completa no jogo empacotado.

Execução registradaVerificações aprovadasResultado observado
09-native-final62Campanha nativa completa de três salas mais verificações de falha, reinício, pausa, configurações e gatilhos de áudio
10-native-reopen-compact6Processo separado carregou progresso e configurações e continuou até o setor três
12-native-pck6O pacote foi lançado fora do diretório da fonte, reabriu o salvamento e entrou no setor três

A reabertura testou a persistência e o layout compacto

Um processo nativo novo carregou unlocked=3, completed=true, três melhores tempos positivos, volume=0.35 e reduced_motion=true. Continue entrou no setor três. Isso separa persistência de um valor que apenas permanece na memória enquanto o jogo está em execução. O jogo salva o progresso ao concluir uma sala, portanto o ponto de retomada pretendido é uma sala, não a última posição do entregador.

A execução compacta também forneceu uma segunda verificação de layout: a sala, a HUD, o cronômetro e os controles permaneceram totalmente enquadrados em 720 x 540. As capturas desktop são de 1280 x 960. Entre as execuções finais da fonte e do pacote, doze capturas nativas passaram pela amostragem de pixels não vazios, e a inspeção visual conferiu enquadramento e legibilidade. São capturas reais do viewport nativo; a imagem menor demonstra uma janela desktop compacta.

Setor três de Circuit Shift em 720 por 540 com a sala inteira, contador de células, cronômetro, controles de reinício e pausa e status de energia da estação visíveis.
Captura nativa real em 720 x 540 depois que um processo separado reabriu o progresso salvo e continuou no setor três.

Tempo e configuração: como ler o registro da execução

O início solicitado foi 5 de setembro de 2026 às 05:35:51 UTC; a conclusão foi registrada às 06:00:11.007 UTC. Isso corresponde a 1,460.007 segundos, cerca de 24 minutos e 20 segundos de tempo de parede decorrido. Abrange implementação, execução de ferramentas, testes, reparos, captura e empacotamento com um motor já disponível. Não é latência de resposta do modelo nem uma previsão para o tempo de desenvolvimento de outro jogo. Uma tarefa inicial levou a várias iterações de implementação e ferramentas.

Esta é uma execução do Codex configurada com Astra: o coordenador registrou spawn_agent.model=gpt-6-astra com reasoning_effort=xhigh. Isso estabelece somente a configuração solicitada. A identidade do modelo na resposta da API, uso de tokens, custo e contagens de chamadas de modelo/API não foram expostos e permanecem null em run-summary.json; nenhuma solicitação ou cobrança direta da APIsRouter foi observada. A verificação do catálogo público em 5 de setembro também não encontrou listagem do Astra na APIsRouter. A documentação oficial do modelo e essa configuração local não estabelecem acesso pelo gateway.

Baixe e execute Circuit Shift no Godot

Baixe o ZIP do código-fonte para inspecionar implementação, briefing completo, controles, harness de testes e evidências preservadas. Extraia-o, importe game/project.godot no Godot 4.5.1 e execute o projeto. Mova-se com WASD ou as setas, acione um relé próximo com E ou Space, reinicie com R e pause com Escape. Colete todas as células para ativar a saída; tocar em uma sentinela encerra a tentativa.

Para a versão empacotada, baixe circuit-shift.pck e execute-a com um runtime Godot compatível usando o comando abaixo. O PCK exige Godot e não é um executável independente. A integridade do ZIP, a igualdade dos arquivos críticos arquivados, a igualdade da fonte em relação à execução nativa final e a igualdade SHA-256 dos ativos copiados foram verificadas. O PCK foi lançado a partir de um diretório temporário fora do projeto-fonte. Os links de download dos dois artefatos, de run-summary.json e do manifesto SHA-256 estão listados abaixo.

godot --main-pack circuit-shift.pck

Para o que este protótipo está pronto a seguir

O próximo passo útil é um playtest humano do loop de três salas: um jogador novo entende a numeração dos relés, percebe por que a saída está selada e consegue se recuperar de uma derrota? Nenhum playtest humano, teste de escuta ou dado de uso de usuários reais foi coletado neste caso. A conclusão automatizada e os buffers de áudio gerados estabelecem caminhos funcionais; não estabelecem diversão, equilíbrio de dificuldade, qualidade sonora, retenção ou usabilidade ampla.

Windows, navegador, Steam, toque e gamepad continuam sem teste; os templates de exportação para navegador não estavam disponíveis localmente. Execuções headless aceleradas ainda emitiram diagnósticos de certificados do macOS e avisos de encerramento de recursos de áudio, embora os logs nativos finais tivessem stderr vazio. Antes de escolher um alvo de lançamento, trate os problemas de runtime relevantes e execute as verificações próprias de entrada, salvamento, empacotamento e desempenho desse alvo. O resultado prático aqui é um protótipo nativo inspecionável e um fluxo de verificação repetível que pode orientar a próxima rodada de desenvolvimento.

Perguntas frequentes

Que tipo de jogo a tarefa produziu?

Circuit Shift é um protótipo Godot original visto de cima com três salas. Cada sala combina células coletáveis, interruptores de relé numerados, portões físicos, perigos móveis e uma saída. Inclui menu da estação, vitória/derrota/reinício, pausa, configurações e progresso salvo.

Como jogo o PCK baixado?

Use um runtime Godot compatível; o caso usou Godot 4.5.1. Na pasta que contém circuit-shift.pck, execute godot --main-pack circuit-shift.pck. Para inspecionar ou editar o jogo, extraia o ZIP do código-fonte e abra game/project.godot.

Quais controles devo usar?

Mova-se com WASD ou as setas. Pressione E ou Space perto de um relé, R para reiniciar a sala e Escape para pausar ou retomar. O menu aceita mouse, Tab e Enter. Todas as células precisam ser coletadas antes de a saída ser ativada.

Que progresso sobrevive a um reinício?

A conclusão de uma sala salva setores desbloqueados, conclusão da campanha e melhores tempos. Volume e configurações de reduced-motion também persistem. Um processo separado verificou esses valores salvos e continuou até o setor três; o jogo não salva cada movimento dentro de uma sala.

De onde vieram a arte e os efeitos sonoros?

Os visuais específicos do jogo foram criados proceduralmente em código de desenho Godot CanvasItem. Cinco efeitos sonoros PCM são sintetizados localmente em runtime. O Godot fornece sua fonte integrada por meio do motor instalado separadamente.

O que devo reutilizar deste fluxo?

Comece com um loop pequeno e completo e critérios de aceitação observáveis. Conduza entrada real do motor pela coleta, portões, vitória, derrota e reinício; inspecione capturas para defeitos visuais; reabra o estado salvo em outro processo; depois teste o artefato fora do diretório da fonte. Preserve falhas para que cada reparo tenha um motivo rastreável.