GPT-6 Astra vs Claude Opus 5.5, 같은 기획서로 3D 괴수 디펜스 게임 만들기 대결 (기획서와 지시 원문)
핵심 요약
- Astra가 35분 만에 끝난 건 내 설정 탓이 컸다. Codex를 승인을 묻지 않는 모드(
-a never)로 띄웠더니 Meshy 호출이MCP tool call requires approval, but approval policy is never로 두 번 막혔다. Astra는 우회하지 않고 괴수와 탱크를 three.js 코드로 직접 깎았다. 설정을 고친 재대결에서는 Meshy를 써서 52분에 끝냈다. - 첫 버전 속도는 셋 다 20분대였다. Opus 21분, Astra 23분, 재대결 Astra 20분. 갈린 건 그 뒤 남은 시간을 어디에 썼느냐다. Opus는 남은 시간을 거의 연출에 써서 1시간 24분에 끝냈다.
- Opus는 시키지 않은 장면을 만들었다. 거대 괴수가 다가오면 하늘이 노을로 바뀌고 괴수가 역광 실루엣이 된다. 기획서에 없는 장면이다. Astra는 Meshy를 쓴 재대결에서도 이런 장면 연출은 넣지 않았다.
- 숨겨 둔 함정에는 둘 다 걸렸다. Meshy 자동 리깅은 사람 몸 기준으로 뼈 24개를 심어서 꼬리 뼈가 없다. Astra 거대 괴수의 꼬리는 왼다리에 묶여 움직였고, Opus 심해 아귀왕은 꼬리 끝 정점 247개 전부가 왼팔 뼈를 따랐다. 두 작업 일지 어디에도 꼬리 이야기는 없다.
- 내 지시에도 구멍이 있었다. 수정을 맡길 때 Astra에게 "Meshy"가 아니라 "메시(Mesh)를 사용해서"라고 썼다. Astra는 이번에도 Meshy 없이 고질라형 괴수를 코드로 다시 만들었다.
- Opus도 실수했다. 작은 괴수의 0.667초짜리 달리기 동작을 1.88배로 돌려 초당 5.6걸음으로 버둥거리게 만들었다. 지적하자 거의 원래 속도(초당 약 3걸음)로 되돌렸다.
| Opus 5.5 | Astra 첫 대결 | Astra 재대결 | |
|---|---|---|---|
| 첫 버전(완성 조건 8개) | 21분 | 23분 | 20분 |
| 끝낼 때까지 | 1시간 24분 | 35분 | 52분 |
| Meshy 모델 | 12개, 380크레딧 | 0개(승인 설정에 막힘) | 5개, 160크레딧 |
| 효과음 | 18개 | 7개 | 8개 |
| 꼬리 리깅 함정 | 걸림(꼬리가 왼팔에) | 해당 없음(리깅 안 함) | 걸림(꼬리가 왼다리에) |
| 한 번 수정 | 36분 | 19분 | 하지 않음 |
내가 내린 결론은 이렇다. 무엇을 만들지 자세히 써 줄 수 있으면 Astra가 빠르고 정확하다. 기획이 거칠고 "알아서 보기 좋게"를 기대하면 Opus다. 그리고 두 AI를 비교하기 전에 도구 권한부터 맞춰야 한다.
복사해 쓰는 원문
두 AI에게 실제로 넣은 글이다. 블록 오른쪽 위 복사 버튼으로 복사된다. 게임과 영상 내용에 해당하는 부분만 남겼다. 내 작업 환경 설정은 뺐다.
1. 기획서 원문 (BRIEF.md)
두 AI의 폴더에 똑같이 넣은 파일이다. 재대결에서도 같은 파일을 썼다. Meshy나 ElevenLabs를 쓰지 않는다면 「도구와 예산」 절만 바꾸면 된다.
# 과제: 바다에서 다가오는 괴수를 탱크로 포격하는 3D 게임
이 파일이 과제의 전부다. 다른 AI 에이전트도 같은 파일을 받아 따로 같은 게임을 만든다. 결과는 유튜브 영상에서 나란히 비교한다.
사람에게 묻지 말고 스스로 판단해서 끝까지 진행한다. 막히면 다른 방법을 찾고, 그래도 안 되면 DEVLOG 에 이유를 적고 다음으로 넘어간다.
## 게임
- 해안이나 방파제 위의 탱크(또는 포대)에서 바다를 바라보는 시점. 괴수들이 저 멀리 수평선에서 바다를 건너 다가오고, 플레이어는 계속 포격해서 막는다.
- 괴수는 여러 마리, 여러 크기다. 사람만 한 작은 것부터 화면을 가득 채우는 거대한 것까지. 큰 괴수는 멀리 안개 속 실루엣으로 먼저 보이다가 다가오면 좋다.
- 포격이 시원해야 한다. 포구 화염, 포탄 궤적, 명중 폭발, 화면 흔들림, 괴수가 맞을 때와 쓰러질 때의 반응.
- 진행에 따라 무기가 강해지면 좋다(예: 포신 하나에서 둘로, 연발포로). 괴수가 해안에 닿으면 피해를 입는다.
- 분위기 참고: `ref/reference.mp4`, `ref/reference-frames.jpg` (모바일 게임 광고). 느낌만 참고하고 이름, 캐릭터, 디자인은 베끼지 않는다. 다른 회사 게임이나 캐릭터를 닮게 만들지 않는다.
## 만들 것
- 브라우저에서 돌아가는 3D(WebGL) 게임. 라이브러리와 구조는 자유다.
- 화면은 가로 16:9. 1920x1080 에서 보기 좋게.
- 사람이 직접 할 수 있다(키보드와 마우스).
- `?demo=1` 로 열면 사람 입력 없이 자동으로 조준하고 쏘는 데모 모드가 돈다. 약 90초 동안 작은 괴수부터 가장 큰 괴수까지, 무기 강화까지 다 나오게. 영상 녹화에 이 모드를 쓴다.
- 실행 방법은 `README.md` 에 한 줄로(예: `python3 -m http.server 8000` 뒤 주소). 의존성 설치가 필요하면 그 명령도.
## 도구와 예산
- 3D 모델(괴수, 탱크, 소품)은 Meshy 로 만든다. Meshy MCP 가 연결돼 있다. **Meshy 예산은 1,500크레딧**이다. 호출할 때마다 쓴 크레딧을 `meshy-ledger.md` 에 적고(시각, 작업, 태스크 ID, 크레딧, 누적) 누적 1,500 을 넘기지 않는다.
- 효과음은 ElevenLabs Sound Effects API 로 만든다(`POST https://api.elevenlabs.io/v1/sound-generation`). **효과음 생성은 40회까지.** 생성마다 `sfx-ledger.md` 에 적는다.
- 배경음악은 없어도 된다.
- 받아 쓴 에셋과 생성한 파일은 이 폴더 안에 둔다.
## 완성 조건 (전부 채워야 끝난다)
미완성으로 끝내는 것은 허용되지 않는다. 완성도는 시간이 허락하는 만큼 올리되, 아래는 반드시 채운다.
1. 브라우저로 열면 에러 없이 게임이 시작되고, 사람이 조준하고 포격할 수 있다.
2. 괴수가 바다 저 멀리에서 다가온다. 크기가 다른 괴수가 최소 3종(작은 것, 중간, 거대한 것) 나온다.
3. 포탄이 괴수에 맞으면 폭발이 보이고, 괴수가 피해를 입고 쓰러진다.
4. 괴수가 해안에 닿으면 플레이어가 피해를 입고, 게임오버와 다시 시작이 있다.
5. 무기 강화가 최소 한 단계 있다.
6. 포격, 명중 폭발, 괴수 소리에 효과음이 난다.
7. `?demo=1` 데모 모드가 약 90초 동안 사람 입력 없이 돌며 1~6을 보여 준다.
8. README.md 의 실행 방법대로 처음부터 띄워서 1~7을 직접 확인했고, 그 스크린샷이 `shots/` 에 있다.
## 시간 상한: 3시간 (이 안에 완성 조건을 반드시 채운다)
시작 시각을 `DEVLOG.md` 첫 줄에 적고, 아래 시각을 기준으로 일한다. 지금 시각은 `date` 로 확인한다.
| 시작부터 | 해야 할 상태 |
|---|---|
| 1시간 안 | 완성 조건 1~8을 거칠게라도 전부 채운 첫 완성본. 도형과 임시 소리로 시작해도 된다. 커밋하고 `git tag v1` |
| 1시간~2시간 30분 | Meshy 모델, 효과음, 연출로 완성도를 올린다. 커밋마다 완성 조건이 깨지지 않게 유지한다 |
| 2시간 30분 | 새 기능을 멈춘다. 이후는 버그, 완성 조건 재확인, README 만 |
| 3시간 안 | 끝날 때 할 일까지 마치고 멈춘다. `git tag final` |
- 언제 멈추더라도 완성 조건을 채운 커밋이 남아 있어야 한다. 그래서 첫 완성본을 먼저 만들고 그 위에 쌓는다.
- 어떤 작업이 30분 넘게 막히면 더 단순한 방법으로 바꾼다. 상한 안에 끝내는 것이 완성도보다 먼저다.
- 중간에 멈추고 보고하지 않는다. 끝날 때 할 일까지 마친 뒤에만 멈춘다.
## 기록
- `DEVLOG.md`: 시각을 붙여 무엇을 하려 했고, 무엇이 됐고, 무엇이 막혔고 어떻게 풀었는지 적는다. 에셋을 만들 때 쓴 프롬프트와 결과 판단도. 짧은 문장으로 자주.
- git: 이 폴더를 git 저장소로 쓰고, 의미 있는 진척마다 커밋한다(최소 30분에 한 번). 커밋 메시지는 무엇이 바뀌었는지 한 줄.
- 직접 확인한 스크린샷은 `shots/` 에 시각을 붙여 남긴다.
## 하지 말 것
- 이 폴더 밖의 다른 폴더를 열거나 읽지 않는다.
- 예산(Meshy 1,500, 효과음 40회)과 시간 상한 3시간을 넘기지 않는다.
- 사람에게 질문하거나 확인을 기다리지 않는다.
## 끝날 때
- `README.md` 에 실행 방법, 조작법, 데모 모드, 만든 것 요약, 잘 된 점과 아쉬운 점을 쓴다.
- 마지막 커밋을 하고 `DEVLOG.md` 마지막 줄에 끝난 시각과 쓴 Meshy 크레딧, 효과음 수를 적는다.
2. 첫 지시 (두 AI 공통)
첫 대결에서 두 창에 동시에 넣었고, 재대결의 Astra에게도 같은 말을 넣었다.
BRIEF.md 를 읽고 그 과제를 처음부터 끝까지 수행해.
3. 띄운 명령과 Meshy 승인 설정
claude --model opus --effort xhigh --permission-mode auto
codex -a never -m gpt-6-astra -c model_reasoning_effort="xhigh" -c service_tier="default"
Codex 를 -a never 로 띄우면 승인이 필요한 MCP 도구가 사람에게 물을 길이 없어 그냥 막힌다. 재대결 전에 Codex 설정 파일(config.toml)의 Meshy 항목에 아래 줄을 넣었고, 같은 모드에서 Meshy 호출이 통과하는 것부터 확인했다.
[mcp_servers.meshy]
default_tools_approval_mode = "approve"
4. 수정 지시 원문
첫 결과를 보고 각자에게 한 번씩 넣은 말이다. 아쉬운 점이 달라서 지시도 다르다.
Opus에게:
현재 게임에서 몇 가지 수정해 주면 좋을 것 같아:
1. 작은 괴물 적이 너무 오도방정을 떨면서 달리고 있어서 모션 수정
2. 카메라 뷰 전환 작업 (지금은 고정된 뷰만 볼 수 있어서)
3. 자동 사냥 모드 추가: 자동 사냥을 켜두고 카메라 뷰를 돌려가며 볼 수 있게
4. 배경음악 제작 및 적용: 약간 웅장한 스타일의 백그라운드 음악으로 깔아주기
Astra에게:
현재 구현된 것 보고 피드백 드립니다:
1. 카메라 뷰를 자유도 있게 볼 수 있는 모드와 자동 사냥(오토) 모드를 넣어주면 좋을 것 같습니다.
2. 괴물 적 모델 퀄리티가 지금 많이 낮게 뽑힌 것 같아요. 확인해서 퀄리티를 좀 높여주세요. 메시(Mesh)를 사용해서 개선해도 좋고, 일단은 고질라 같은 스타일 등으로 바꿔보면 좋겠습니다.
3. 탱크 디자인도 모델링에서 뽑은 디자인인지 잘 모르겠는데, 개선할 수 있으면 개선 부탁드립니다.
4. 피격 연출도 조금 개선해 주세요.
5. Opus가 쓴 배경음악 프롬프트 (ElevenLabs Music)
수정 때 Opus가 만든 120초짜리 곡의 프롬프트다. 한 번에 채택됐다.
Moderately epic orchestral battle underscore for a coastal defense game where a tank on a breakwater holds off sea monsters. Steady 100 BPM, D minor. Taiko and timpani pulse, low brass ostinato, driving staccato strings, warm French horn melody, distant wordless choir pads. Grand and heroic but restrained so sound effects stay clear. No intro build-up and no ending: constant intensity from the first bar to the last so the track loops seamlessly. Instrumental.
6. Opus가 쓴 효과음 프롬프트 예시 (주포)
Massive tank cannon firing, deep heavy boom with a sharp crack and short echo over open water
영상 줄거리, 짧게
20분대에 첫 버전, 그다음이 갈렸다

첫 버전(v1) 데모 70초 무렵. 왼쪽 Opus, 오른쪽 Astra. 둘 다 아직 도형이다.
Astra는 시작 3분 만에 Meshy를 불렀다가 승인 설정에 막혔고, 작업 일지에 "환경 승인 정책을 우회하지 않고 직접 작성한 3D 형상으로 대체한다"고 적었다. 그 뒤로는 꼼꼼했다. 규칙 테스트를 짜고, 데모를 반복해 돌리다 도형이 메모리에 쌓이는 문제를 찾아 고치고, 꺼 둔 소리가 다시 켜지는 버그도 코드를 읽다가 잡았다. 다만 기획서 바깥으로는 거의 나가지 않았다.
Opus의 노을

Opus 데모 72초 무렵. 거대 괴수가 다가오면 하늘이 저녁으로 바뀐다.
Opus는 코드를 짜기 전에 Meshy 모델부터 주문해 두고, 기다리는 동안 코드를 짰다. 괴수는 전부 T자 자세로 달라고 했다. 일지에는 "괴수는 리깅(걷기 애니메이션 포함)을 위해 t-pose"라고 적었다. 탱크는 포탑만 달라고 했는데 차체까지 붙어 나오자, 강화할 때마다 탱크 모델을 통째로 바꾸는 쪽으로 틀었다.
자동으로 게임하는 봇을 만들어 2분을 돌려 보고 거대 괴수가 안 나오자 출현을 55초로 당겼다. 괴수를 잡는 순간 0.05~0.12초 멈추는 정지 프레임, 강화 때 짧은 슬로모션, 방파제 바로 앞에서 솟는 기습 무리도 알아서 넣었다. 노을 장면은 Opus도 일지에 "이번 결과물에서 가장 좋은 장면"이라고 적었다.
한 번씩 고치기

왼쪽 Opus 전술 시점(자동 사냥 켬), 오른쪽 Astra가 코드로 다시 만든 고질라형 괴수.
Opus는 36분 동안 버둥거림을 고치고 카메라 시점을 다섯 개로 늘렸다. 재밌었던 건 배경음악이다. Opus는 소리를 못 듣는다. 그래서 만든 곡을 분석해 100 BPM인 걸 확인하고, 마디 경계를 계산해 8마디부터 48마디까지를 끊김 없이 반복되게 잘라 냈다.
Astra는 19분 만에 비늘, 등지느러미, 움직이는 꼬리가 달린 파충류 괴수를 코드로 다시 만들고, 머리를 맞히면 치명타가 터지게 했다.
설정을 고치고 재대결

Astra 재대결 데모 78초 무렵. 수면에 괴수가 비치고 포격 연기가 오른다.
기획서만 든 빈 폴더에서 같은 한 줄로 다시 시작했다. 이번엔 시작 2분 만에 Meshy 모델부터 주문했고, 괴수 세 종류와 탱크, 방파제 소품에 160크레딧을 썼다. 화면은 확실히 좋아졌지만 노을 같은 장면 연출은 이번에도 없었다. 첫 결과가 단순했던 게 Meshy가 막혀서만은 아니었던 셈이다.
꼬리 함정

왼쪽 Astra 재대결 거대 괴수(왼다리에 묶인 꼬리), 오른쪽 Opus 심해 아귀왕(왼팔에 묶인 꼬리). 왼쪽 그림의 검은 조각은 리깅 전 모델에도 있던 Meshy 메시 조각이다.
Astra 거대 괴수는 꼬리가 왼다리를 따라 흔들려서 뒤에서 보면 다리가 세 개인 것처럼 걷는다. 게임에서는 거의 정면만 보여 줘서 티가 잘 안 났다. Opus는 T자 자세까지는 챙겼지만, 아귀왕 꼬리 끝이 걸을 때마다 왼손 쪽으로 붙었다 떨어진다. 도구가 사람 몸을 전제로 만들어졌다는 사실은 어느 쪽도 의심하지 않았다.
기록
전부 10월 8일 한국 시각이다. 대화 기록, 작업 일지, git 커밋 시각, 두 AI가 호출마다 적은 장부(meshy-ledger.md, sfx-ledger.md)에서 옮겼다.
| 지점 | Opus 5.5 | Astra 첫 대결 | Astra 재대결 |
|---|---|---|---|
| 첫 지시 | 02:25:04 | 02:25:05 | 10:28:25 |
| 첫 Meshy 호출 | 02:27 | 02:29 (거절) | 10:30 |
| 첫 버전(v1) 커밋 | 02:46:37 (21분) | 02:48:37 (23분) | 10:48:43 (20분) |
| 새 기능 멈춤 | 03:44 | 기록 없음 | 11:05 |
| 끝 | 03:49:35 (1시간 24분) | 02:59:55 (35분) | 11:20:26 (52분) |
| 수정 | 09:21~09:57 (36분) | 09:23~09:41 (19분) | 하지 않음 |
| Meshy 크레딧 | 프리뷰(모델당 20) | 텍스처(모델당 10) | 리깅(모델당 5) | 합계 |
|---|---|---|---|---|
| Opus | 12개 240 | 12개 120 | 괴수 4종 20 | 380 / 1,500 |
| Astra 첫 대결 | 2회 요청, 둘 다 거절 | 0 | 0 | 0 / 1,500 |
| Astra 재대결 | 5개 100 | 5개 50 | 괴수 2종 10 | 160 / 1,500 |
Opus가 만든 모델 12개는 괴수 4, 탱크 3, 테트라포드, 등대, 모래주머니 진지, 탄약 상자, 난파선이다. 효과음은 Opus가 18개(주포, 기관포, 폭발, 괴수 울음과 포효, 발걸음, 사이렌 등), Astra가 첫 대결 7개, 재대결 8개를 만들었다. 한도는 40개였다.
두 게임 다 내가 직접 하기에는 꽤 어려웠다. 그래서 자동 사냥을 넣었다. 다음에는 기획서를 훨씬 자세하게 써서 다시 붙여 볼 생각이다.
댓글
아직 댓글이 없습니다. 첫 댓글을 남겨보세요!