Astra 게임 개발: Circuit Shift

Updated 2026-09-05

Astra로 구성된 Codex 작업이 작동하는 충돌, 릴레이 퍼즐, 승리 및 패배 상태, 저장된 진행 상황을 갖춘 3개 방 네이티브 Godot 프로토타입을 만들었습니다. 게임플레이 확인에서 처음 놓친 수리를 포함해 브리프에서 테스트된 게임까지의 경로를 보여줍니다.

결과: 완결된 3개 방 게임플레이 루프

Circuit Shift는 macOS에서 Godot 4.5.1로 제작하고 테스트한 작은 탑다운 퍼즐 게임입니다. 운반자 CS-07을 3개의 릴레이 스테이션 방으로 안내하고, 각 방에서 에너지 셀 3개를 모으고, 번호가 있는 게이트를 열고, 움직이는 센트리를 피한 뒤 출구에 도달합니다. 최종 자동화 네이티브 실행은 3개 방을 모두 완료하고 패배와 재시작을 실행했으며 캠페인 진행 상황과 최고 기록을 저장했습니다. 별도 프로세스가 해당 저장 파일을 성공적으로 다시 열었습니다.

AI 지원 게임 프로젝트에서 얻을 수 있는 유용한 교훈은 범위가 정해진 브리프, 엔진 기반 게임플레이 확인, 시각적 검사의 결합입니다. 작은 루프 전체를 요청했기 때문에 이동 이상의 것을 테스트할 수 있었습니다. 셀을 모으기 전에는 출구가 계속 봉인되어야 했고, 방 완료는 다음 섹터를 잠금 해제해야 했으며, 설정은 재실행 후에도 유지되어야 했습니다. 다운로드 가능한 프로젝트에서 이러한 동작을 직접 검사할 수 있습니다.

민트색 운반자, 노란 셀 3개, 번호가 있는 릴레이, 닫힌 빨간 게이트, 움직이는 위험 요소, 봉인된 출구가 보이는 Circuit Shift 섹터 1
최종 네이티브 실행에서 캡처한 실제 1280 x 960 Godot 프레임버퍼. 섹터 1 시작 지점입니다.

초기 브리프가 완료 조건을 구체적으로 만들었습니다

이 작업은 Circuit Shift라는 독창적인 게임, 짧은 레벨 3개, 엔진 물리, 스위치와 게이트, 수집 가능한 셀, 승리/패배/재시작, 시작 메뉴, 설정, 저장된 진행 상황을 지정했습니다. 또한 실제 스크린샷, 실제 엔진 게임플레이 미니플로, 저장 상태 재열기를 요구했습니다. Godot 4.5.1은 이미 설치되어 있어 재사용했으며 개발은 별도의 임시 HOME과 새 게임 디렉터리에서 시작했습니다.

아래 조각은 실제 초기 브리프에서 가져온 내용으로, 읽기 쉽도록 줄바꿈을 추가했지만 원래 문구는 보존했습니다. 전체 initial-prompt.txt는 소스 ZIP에 포함되어 있습니다. 자신의 브리프에 가장 쉽게 이전할 수 있는 부분은 관찰 가능한 완료 기준입니다. 플레이어가 무엇을 할 수 있는지와 게임을 닫은 후에도 무엇이 작동해야 하는지를 명시하세요.

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.

프롬프트에서 파일, 엔진 피드백, 작동하는 방까지

에이전트는 방 데이터, GDScript, 메뉴, 설정, 로컬 저장, 게임플레이 하니스를 작성한 뒤 엔진을 반복 실행하고 결과를 검사했습니다. 이동에는 CharacterBody2D.move_and_slide를 사용하고 벽과 게이트에는 StaticBody2D를 사용하며 셀, 위험 요소, 출구에는 Area2D 트리거를 사용합니다. 이러한 엔진 계약은 보이는 방을 하니스가 관찰할 수 있는 충돌 및 상태 변경에 연결합니다.

기록에는 가져오기, 게임플레이, 회귀 확인, 네이티브 캡처, 재열기, 패키징, 픽셀 검사를 포함한 게임 엔진 실행 13회가 있습니다. 구현 전 초기 씬 존재 실패, 헤드리스 게임플레이, 네이티브 스크린샷, 집중된 시각적 수리, 최종 산출물 확인이 순서에 포함되었습니다. 게임 전용 아트워크는 Godot CanvasItem 코드로 절차적으로 그렸고 PCM 사운드 효과 5개는 로컬에서 합성했습니다. 관찰된 작업은 에이전트가 작성한 패치, 로컬 명령, 네이티브 실행 권한 요청, 스크린샷 검사로 이루어졌으며 추가적인 사람의 작업 조정이나 사람의 코드 수리는 관찰되지 않았습니다.

활성화된 번호 릴레이 2개, 열린 게이트 2개, 수집된 셀 2개, 릴레이 2 옆의 운반자가 보이는 Circuit Shift 섹터 3
최종 실행 중 섹터 3에서 캡처한 실제 1280 x 960 네이티브 화면. 서로 독립적인 릴레이 회로 2개가 열린 상태입니다.

실제 결함: 키보드 포커스로 버튼을 읽기 어려웠습니다

첫 네이티브 게임플레이 실행은 어설션을 통과했지만 스크린샷 검사에서 포커스된 기본 버튼 텍스트의 대비가 낮은 것이 드러났습니다. 스테이션 메뉴는 키보드 탐색도 지원하므로 중요했습니다. 시작 동작이 작동한다고 해서 시작 컨트롤을 읽을 수 있다는 보장은 없었습니다. 이후 집중된 회귀 확인은 약 1.36:1의 대비율로 실패했습니다.

수리에서는 font_focus_color를 기본 버튼의 어두운 전경색으로 명시적으로 설정했습니다. 다음 확인에서는 약 10.57:1을 측정했고 최종 네이티브 실행에서도 대비 어설션 통과가 유지되었습니다. 원시 실패 및 성공 출력은 근거 디렉터리에 남아 있습니다. 이는 게임플레이 테스트와 포커스 및 선택된 UI 상태 검사를 함께 해야 하는 구체적인 이유입니다. 상태 전환은 정확해도 이를 노출하는 컨트롤은 여전히 작업이 필요할 수 있습니다.

단계관찰된 결과근거 기록
대상 회귀 확인포커스 버튼 대비 1.36:1; 실패05-focus-regression
명시적 포커스 색상 수정포커스 버튼 대비 10.57:1; 통과06-focus-fixed
최종 네이티브 실행대비 어설션과 게임플레이가 함께 통과09-native-final

네이티브 테스트에서 실제로 실행한 내용

최종 게임플레이 미니플로는 일반적인 Godot Input 액션과 네이티브 Control 시그널을 구동했으며, 매핑 확인 하나는 InputEventKey를 제출했습니다. 운반자는 엔진 물리를 통과해 움직였습니다. 하니스는 벽 충돌, 닫힌 게이트 차단, 릴레이 열기와 닫기, 모든 셀을 모아야 하는 출구 조건, 방 3개의 승리, 위험 요소에 의한 패배, 재시작, 일시 정지, 설정, 사운드 생성 및 재생 트리거를 확인했습니다. 플레이어를 순간이동시키거나 셀을 직접 지급하거나 승리 상태를 직접 할당하지 않았습니다.

아래 수치는 독립된 벤치마크 작업이 아니라 웨이포인트와 캡처를 포함한 흐름 내부의 어설션입니다. 최종 네이티브 실행 3회는 모두 빈 stderr로 성공 종료했습니다. 소스 게임플레이 캠페인이 가장 폭넓은 테스트이며 PCK 실행은 패키지 로딩과 저장 상태 연속성을 확립할 뿐 패키징된 게임으로 두 번째 전체 캠페인을 확립하지는 않습니다.

기록된 실행통과한 확인관찰된 결과
09-native-final623개 방 전체 네이티브 캠페인과 실패, 재시작, 일시 정지, 설정, 오디오 트리거 확인
10-native-reopen-compact6별도 프로세스가 진행 상황과 설정을 로드한 뒤 섹터 3으로 계속 진입
12-native-pck6소스 디렉터리 밖에서 패키지를 실행하고 저장 파일을 다시 연 뒤 섹터 3에 진입

재열기로 영속성과 컴팩트 레이아웃을 테스트했습니다

새 네이티브 프로세스는 unlocked=3, completed=true, 양수인 최고 기록 3개, volume=0.35, reduced_motion=true를 로드했습니다. Continue로 섹터 3에 진입했습니다. 이는 게임 실행 중 메모리에만 남아 있는 값과 영속성을 구분합니다. 게임은 방 완료 시 진행 상황을 저장하므로 의도한 재개 지점은 운반자의 마지막 위치가 아니라 방입니다.

컴팩트 실행은 두 번째 레이아웃 확인도 제공했습니다. 720 x 540에서 방, HUD, 타이머, 컨트롤이 모두 프레임 안에 유지되었습니다. 데스크톱 캡처는 1280 x 960입니다. 최종 소스 및 패키지 실행에서 네이티브 캡처 12개가 비어 있지 않은 픽셀 샘플링을 통과했고 시각 검사는 프레이밍과 가독성을 확인했습니다. 이는 실제 네이티브 뷰포트 캡처이며 작은 이미지는 컴팩트한 데스크톱 창을 보여줍니다.

720 x 540에서 전체 방, 셀 카운터, 타이머, 재시작 및 일시 정지 컨트롤, 스테이션 전원 상태가 보이는 Circuit Shift 섹터 3
별도 프로세스가 저장된 진행 상황을 다시 열고 섹터 3으로 계속 진입한 뒤 캡처한 실제 720 x 540 네이티브 화면입니다.

시간과 구성: 실행 기록 읽는 방법

요청된 시작 시각은 2026년 9월 5일 05:35:51 UTC이고 완료 시각은 06:00:11.007 UTC로 기록되었습니다. 이는 1,460.007초, 약 24분 20초의 경과 벽시계 시간입니다. 이미 엔진을 사용할 수 있는 상태에서 구현, 도구 실행, 테스트, 수리, 캡처, 패키징을 포함합니다. 모델 응답 지연 시간이나 다른 게임 개발 시간에 대한 예측이 아닙니다. 하나의 초기 작업 브리프가 여러 구현 및 도구 반복으로 이어졌습니다.

이는 Astra로 구성된 Codex 실행입니다. 조정자는 spawn_agent.model=gpt-6-astra와 reasoning_effort=xhigh를 기록했습니다. 이는 요청된 구성만 확립합니다. API 응답 모델 식별자, 토큰 사용량, 비용, 모델/API 호출 횟수는 노출되지 않았고 run-summary.json에서 null로 남아 있습니다. 직접 APIsRouter 요청이나 청구는 관찰되지 않았습니다. 9월 5일 공개 카탈로그 확인에서도 APIsRouter에 Astra 목록이 없었습니다. 공식 모델 문서와 이 로컬 구성만으로는 게이트웨이 접근이 확립되지 않습니다.

Godot에서 Circuit Shift 다운로드 및 실행

소스 ZIP을 다운로드해 구현, 전체 브리프, 조작법, 테스트 하니스, 보존된 근거를 검사하세요. 압축을 풀고 Godot 4.5.1에서 game/project.godot를 가져온 뒤 프로젝트를 실행합니다. WASD 또는 화살표 키로 이동하고, 가까운 릴레이는 E 또는 Space로 작동시키고, R로 재시작하고, Escape로 일시 정지합니다. 모든 셀을 모아 출구를 활성화하세요. 센트리와 접촉하면 시도가 끝납니다.

패키지 버전은 circuit-shift.pck를 다운로드하고 아래 명령으로 호환되는 Godot 런타임에서 실행하세요. PCK에는 Godot이 필요하며 독립 실행 파일이 아닙니다. ZIP 무결성, 중요한 아카이브 파일 동일성, 최종 네이티브 실행과의 소스 동일성, 복사된 에셋의 SHA-256 동일성을 확인했습니다. PCK는 소스 프로젝트 밖의 임시 디렉터리에서 실행했습니다. 두 산출물, run-summary.json, SHA-256 매니페스트의 다운로드 링크를 아래에 나열합니다.

godot --main-pack circuit-shift.pck

이 프로토타입의 다음 준비 단계

다음으로 유용한 단계는 3개 방 루프를 사람이 플레이테스트하는 것입니다. 새로운 플레이어가 릴레이 번호를 이해하고 출구가 봉인된 이유를 알아차리며 패배에서 회복할 수 있는지 확인하세요. 이 사례에서는 사람의 플레이테스트, 청취 테스트, 실제 사용자 사용량 데이터를 수집하지 않았습니다. 자동 완료와 생성된 오디오 버퍼는 기능 경로를 확립하지만 재미, 난이도 균형, 음질, 유지율, 광범위한 사용성을 확립하지는 않습니다.

Windows, 브라우저, Steam, 터치, 게임패드는 아직 테스트하지 않았으며 브라우저 내보내기 템플릿은 로컬에서 사용할 수 없었습니다. 가속된 헤드리스 실행은 macOS 인증서 진단과 오디오 리소스 종료 경고를 계속 출력했지만 최종 네이티브 로그의 stderr는 비어 있었습니다. 출시 대상을 선택하기 전에 관련 런타임 문제를 해결하고 해당 대상의 입력, 저장, 패키징, 성능 확인을 자체적으로 실행하세요. 여기서 얻은 실용적인 결과는 검사 가능한 네이티브 프로토타입과 다음 개발 라운드를 이끌 수 있는 반복 가능한 검증 워크플로입니다.

자주 묻는 질문

이 작업은 어떤 게임을 만들었나요?

Circuit Shift는 독창적인 3개 방 탑다운 Godot 프로토타입입니다. 각 방에는 수집 가능한 셀, 번호가 있는 릴레이 스위치, 물리적 게이트, 움직이는 위험 요소, 출구가 있습니다. 스테이션 메뉴, 승리/패배/재시작, 일시 정지, 설정, 저장된 진행 상황도 포함합니다.

다운로드한 PCK는 어떻게 플레이하나요?

호환되는 Godot 런타임을 사용하세요. 이 사례에는 Godot 4.5.1을 사용했습니다. circuit-shift.pck가 있는 폴더에서 godot --main-pack circuit-shift.pck를 실행하세요. 게임을 검사하거나 편집하려면 소스 ZIP을 풀고 game/project.godot를 여세요.

어떤 조작을 사용해야 하나요?

WASD 또는 화살표 키로 이동하세요. 릴레이 근처에서 E 또는 Space를 누르고, R로 방을 재시작하며, Escape로 일시 정지하거나 재개합니다. 메뉴는 마우스, Tab, Enter를 지원합니다. 출구가 활성화되기 전에 모든 셀을 모아야 합니다.

재시작 후 어떤 진행 상황이 유지되나요?

방 완료는 잠금 해제된 섹터, 캠페인 완료, 최고 기록을 저장합니다. 볼륨과 reduced-motion 설정도 유지됩니다. 별도 프로세스가 이 저장된 값을 확인하고 섹터 3으로 계속 진입했습니다. 게임은 방 안의 모든 이동을 저장하지 않습니다.

아트워크와 사운드 효과는 어디에서 왔나요?

게임 전용 시각 요소는 Godot CanvasItem 그리기 코드로 절차적으로 작성했습니다. PCM 사운드 효과 5개는 런타임에 로컬에서 합성합니다. Godot은 별도로 설치된 엔진을 통해 기본 제공 폰트를 제공합니다.

이 워크플로에서 무엇을 재사용해야 하나요?

작고 완결된 루프와 관찰 가능한 승인 기준에서 시작하세요. 실제 엔진 입력으로 셀 수집, 게이트, 승리, 패배, 재시작을 실행하고 스크린샷에서 시각적 결함을 검사하며 다른 프로세스에서 저장 상태를 다시 연 뒤 소스 디렉터리 밖에서 산출물을 테스트합니다. 각 수리에 추적 가능한 이유가 있도록 실패를 보존하세요.