← 목록으로
복사되었습니다

Gemini 4 Argon에게 바다괴물 디펜스 게임을 기획서 한 장으로 맡겨 보기, Opus 5.5와 비교 (기획서와 피드백 원문)

· 약 25분
#gemini #argon #antigravity #opus #meshy #blender #game-dev #youtube
Opus 5.5와 GPT-6 Astra가 두 편에 걸쳐 만들었던 바다괴물 디펜스 게임을, 이번에는 기획서 한 장으로 합쳐 Gemini 4 Argon에게 한 번에 맡겼다. 아래는 영상에 다 못 담은 숫자와 기록, 그리고 그대로 복사해 쓸 수 있는 기획서와 피드백 원문이다.

핵심 요약

  • Argon은 3시간 42분 만에 끝냈다. 기본 게임까지 44분, 보스와 맵까지 2시간 21분이 걸렸다. Opus는 1편 1시간 24분과 2편 3시간 39분을 합쳐 약 5시간이었고, 2편에서는 라운드 지시를 아홉 번 나눠 받았다.
  • 조건은 똑같지 않았다. Argon은 앞의 두 AI가 받은 기획서와 중간 지시를 한 장으로 합친 완성본을 받았고, 두 AI가 실제로 밟은 함정 목록도 미리 받았다. 적의 구성과 맵의 형태만 비워 두고 Argon이 정하게 했다.
  • 비워 둔 칸은 실제 바다 생물로 채웠다. 작은 적은 투구게, 중형 적은 공작갯가재와 걷는 아귀, 보스는 대왕게, 대왕문어, 바다전갈이다. 보스와 중형 적은 Higgsfield 원화부터 그리고 Meshy로 3D를 뽑은 뒤, Blender에서 동물마다 뼈를 21~37개 직접 심었다.
  • 피드백은 한 번, 반영에 약 20분. 카메라를 진지 뒤 높은 곳으로, 바다에 물결과 반사, 화산과 빙하에 질감. 세 가지를 고치고 나머지 단계를 이어 갔다.
  • Meshy는 330크레딧, 사용량은 주간 한도의 약 2%. Opus는 1, 2편 합쳐 680크레딧이었다. Argon 주간 사용량은 시작 전 2%, 끝난 뒤 4%였다.
  • 기록과 다른 곳도 있었다. 작업 일지에는 텍스처를 1024픽셀(작은 적은 512)로 줄였다고 적었지만, 게임이 불러오는 3D 파일 11개를 열어 보니 텍스처가 모두 2048픽셀이고 합계 85.4MB였다. 기획서가 앞 게임의 82.7MB를 예로 들며 줄이라고 한 부분이다. 또 일찍 끝나면 멈추지 말고 완성도를 올리라고 적었는데, Argon은 7시간 상한까지 2시간 넘게 남기고 멈췄다.
Opus 5.5 (1, 2편) Gemini 4 Argon
받은 지시 1편 기획서, 2편 라운드 지시 9번 합친 기획서 한 장, 피드백 1번
작업 시간 약 5시간 (1시간 24분 + 3시간 39분) 3시간 42분
Meshy 크레딧 680 (380 + 300) 330
탱크, 보스, 맵 3, 3, 3 3, 3, 3
주간 사용량 약 2% (2%에서 4%로)

내 결론은 이렇다. 게임의 재미는 Argon이 좀 더 잘 만든 것 같다. 보스가 화면을 가득 채우고, 주황색 적이 바다에서 잘 보여서 플레이하기 편하다. 보스의 모델 완성도와 연출, 탱크 디자인은 Opus가 낫다. 다만 Argon은 완성된 기획서를 받았으니 완전히 같은 조건은 아니다. 그래도 생각보다 Argon의 결과물이 만족스러웠다.

원문만 필요하면 복사해 쓰는 원문으로, 어떻게 흘러갔는지 궁금하면 영상 줄거리로.


따라 하는 순서

영상 끝에서 정리한 네 단계다. 아래 원문을 순서대로 쓰면 된다.

  1. 기획서를 한 장으로 정리한다. 앞에서 나눠 준 기획서와 중간 지시를 한 파일로 합친다. 비교하고 싶은 것(탱크 3종, 보스 3, 맵 3 같은 개수)은 정해 두고, AI가 창의적으로 채웠으면 하는 것(적의 구성, 맵의 형태)은 비워 둔다는 것을 기획서에 적는다. 아래 1번 원문이 그 결과다.
  2. 앞선 AI들의 실수를 미리 적는다. 같은 실수를 다시 하는지 시험하지 않고, 처음부터 피하게 한다. 1번 원문의 앞서 만든 AI 들이 밟은 함정 절이다.
  3. 한 번에 맡긴다. 라운드로 나누지 않고 첫 지시 한 줄로 끝까지 가게 한다. 대신 시각 기준 태그(m1~`m4, final`)를 찍게 해서 진행 과정을 나중에 볼 수 있게 했다. 2번 원문이다.
  4. 결과를 보고 피드백을 한 번 준다. 중간 태그의 화면을 보고, 이미 기획서에 있던 요구 중 안 된 것만 골라 고치게 한다. 3번 원문이다.

복사해 쓰는 원문

Argon에게 넣은 글에서 게임과 영상 내용에 해당하는 부분만 남겼다. 내 작업 환경과 녹화용 설정은 뺐다. 블록 오른쪽 위 복사 버튼으로 복사된다.

1. 기획서 원문 (BRIEF.md)

1편 기획서, 2편 기획서, 2편의 라운드 지시를 한 장으로 합친 파일이다. 다른 도구를 쓴다면 도구와 예산 절을 바꾸면 된다.

# 과제: 바다에서 올라오는 괴수를 해안 탱크로 막는 3D 브라우저 게임 (전체 기획서)

이 파일이 과제의 전부다. 다른 두 AI 가 이 게임을 이미 만들었다. 그 두 AI 가 받은 기획서와 중간 지시를 한 장으로 모은 것이 이 파일이다.

**비워 둔 것이 있다.** 적의 구성(어떤 생물이 나오는지, 생김새, 보스의 공격 방식)과 맵의 형태(지형, 하늘, 날씨, 분위기)는 정하지 않았다. 이 부분은 당신이 창의적으로 채운다. 앞서 만든 두 게임과 닮을 필요가 없다. 개수(탱크 3종, 중형 적 2종 이상, 보스 3, 스테이지 3, 맵 3)는 비교하려고 정해 두었다.

## 진행 방식

- 사람에게 묻지 않고 스스로 판단해서 끝까지 간다. 막히면 다른 방법을 찾고, 그래도 안 되면 DEVLOG 에 이유를 적고 다음으로 넘어간다.
- 시간 상한은 7시간이다. 아래 시각마다 그 상태를 만들고 태그를 찍는다.

| 시작부터 | 해야 할 상태 | 태그 |
|---|---|---|
| 1시간 안 | 「1. 기본 게임」을 거칠게라도 다 채운 첫 완성본 | `m1` |
| 2시간 30분 | 「2. 탱크 3종」, 「3. 쏟아지는 적과 타격감」 | `m2` |
| 4시간 30분 | 「4. 적과 보스」, 「5. 스테이지와 맵」 | `m3` |
| 6시간 | 「6. 업그레이드와 지원 병기」, 「7. 마무리, 트레일러, 폰」 | `m4` |
| 6시간 15분 | 새 기능을 멈춘다. 이후는 「8. 검수」, 버그, README 만 | |
| 7시간 안 | 「끝날 때」까지 마치고 멈춘다 | `final` |

- 시작 시각을 `date` 로 보고 DEVLOG 첫 줄에 적는다. 각 시각(시작 + 1시간 등)을 계산해 그 아래에 적는다.
- 언제 멈추더라도 직전 태그의 게임이 깨지지 않고 열려야 한다. 그래서 첫 완성본을 먼저 만들고 그 위에 쌓는다.
- 어떤 작업이 30분 넘게 막히면 더 단순한 방법으로 바꾼다. 상한 안에 끝내는 것이 완성도보다 먼저다. 반대로 일찍 끝나면 멈추지 말고 완성도와 연출을 올린다.
- 모델 사용 한도 오류로 멈췄다가 이어 하게 되면, 멈춘 시각과 이은 시각을 DEVLOG 에 적는다. 그 시간은 상한에서 뺀다.

## 게임

- 해안이나 방파제 위의 탱크에서 바다를 바라보는 시점. 괴수들이 수평선에서 바다를 건너 다가오고, 플레이어는 계속 포격해서 막는다. 큰 괴수는 멀리 안개 속 실루엣으로 먼저 보이다가 다가온다.
- 분위기 참고: 모바일 게임 광고. 느낌만 참고하고 이름, 캐릭터, 디자인은 베끼지 않는다. 다른 회사 게임이나 캐릭터를 닮게 만들지 않는다.
- 모바일 게임 광고가 약속하는 손맛을 실제로 끝까지 플레이할 수 있는 게임으로 만든다. 「AI 는 게임을 항상 만들다 만다」는 말에 답하는 게임이다.
- 브라우저에서 돌아가는 3D(WebGL) 게임. 라이브러리와 구조는 자유다. 라이브러리는 이 폴더 `vendor/` 에 받아 두고 상대 경로로 불러온다.
- 화면은 가로 16:9, 1920x1080 에서 보기 좋게. 키보드와 마우스로, 폰에서는 터치로 한다.

## 재미의 우선순위

기능끼리 시간이 부딪치면 위에 있는 것이 먼저다.

1. 타격감: 쏠 때, 맞힐 때, 쓰러뜨릴 때 손에 느낌이 온다.
2. 쏟아지는 적: 화면을 뒤덮는 물량을 한 번에 쓸어 버리는 순간이 있다.
3. 성장: 내가 점점 강해지는 것이 눈에 보인다.
4. 볼거리: 3D 모델, 카메라, 맵, 연출.

## 만들 것

### 1. 기본 게임

- 사람이 조준하고 포격할 수 있다. 포구 화염, 포탄 궤적, 명중 폭발, 화면 흔들림.
- 크기가 다른 괴수가 최소 3종(작은 것, 중간, 거대한 것) 바다 멀리에서 다가온다. 맞으면 피해를 입고 쓰러진다.
- 괴수가 해안에 닿으면 플레이어가 피해를 입는다. 게임오버와 다시 시작이 있다.
- 무기 강화가 최소 한 단계 있다. 포격, 명중 폭발, 괴수 소리에 효과음이 난다.

### 2. 탱크 3종

- 사격감이 서로 확연히 다르다. 발사 간격, 탄도, 폭발 크기, 소리, 반동이 다 다르다(예: 빠른 연사, 느리지만 묵직한 곡사, 넓게 터지는 범위 공격. 바꿔도 된다).
- 포탑이 차체와 따로 돌고, 포신이 쏠 때 뒤로 밀렸다 돌아온다.
- 탱크 선택 화면. 3D 모델이 돌아가고 성능을 막대로 비교한다.

### 3. 쏟아지는 적과 타격감

- 작은 적 300마리 이상이 한 화면에 동시에 다가오는 웨이브. 1920x1080 에서 평균 50프레임 이상을 목표로 한다.
- 명중: 크기가 단계별로 다른 폭발, 파편이나 물보라, 피해 숫자, 맞은 적의 반응(밀림, 번쩍임), 아주 짧은 멈춤, 세기가 다른 화면 흔들림.
- 처치: 작은 적은 쓰러지거나 날아간다. 한 발에 여러 마리가 함께 날아가는 순간이 있다.
- 점수와 연속 처치 배율이 화면에 보인다.

### 4. 적과 보스 (구성은 비워 두었다)

- 정해진 것: 작은 적 떼 한 종 이상, 중형 적 2종 이상, 보스 3(스테이지마다 하나). 중형 적은 스테이지마다 섞어 나온다.
- 비워 둔 것: 어떤 생물인지, 생김새, 움직임, 보스마다의 공격 방식. 당신이 정한다. 정한 것과 그렇게 정한 이유를 DEVLOG 「적의 구성」 절에 적는다.
- 지킬 것: 괴수는 모두 실제 바다 생물에서 출발한다. 두 발로 선 공룡이나 도마뱀 모양, 등줄기를 따라 늘어선 가시판은 쓰지 않는다. 영화나 게임의 유명한 괴수와 닮지 않게 한다.
- 보스마다: 등장 연출(경보, 안개 속 실루엣, 카메라 컷 3개 이상, 보스 이름 글자, 체력 막대), 공격 패턴 셋 이상, 처치 연출(쓰러지는 동작을 느린 화면으로 다시 보여 준다).
- 보스 1 에는 「맞혀서 막는」 패턴을 넣는다. 보스가 큰 공격을 2~3초 준비하는 동안 약점이나 들고 있는 것을 정해진 만큼 맞히면 공격이 깨지고, 몸의 한 부위가 부서져 떨어지고, 보스가 큰 피해를 입고 잠깐 멈춘다. 못 막으면 그 공격이 방어선에 큰 피해를 준다. 준비하는 동안 막기 게이지가 보인다.
- 보스 2 와 3 에도 그 보스만의 패턴이 하나씩 있고, 떨어지는 부위나 약점이 있다.
- 3D 모델과 리깅은 아래 「3D 모델과 리깅」 절을 따른다. 리깅은 처음부터 실제 동물 기준으로 한다.

### 5. 스테이지와 맵 (맵의 형태는 비워 두었다)

- 스테이지 3개. 스테이지마다 웨이브 여러 개와 끝에 보스. 스테이지 1부터 3 의 최종 결과까지 사람이 끝까지 플레이할 수 있다.
- 맵 3개. 하늘, 빛, 바다 색, 날씨뿐 아니라 지형과 소품까지 확연히 달라서 스크린샷 한 장만 봐도 어느 맵인지 안다. 어떤 맵으로 할지는 당신이 정하고 DEVLOG 「맵」 절에 적는다.
- 맵마다 처음에 카메라가 맵을 훑는 소개 비행.
- 스테이지가 끝나면 결과 화면(점수, 별 1~3개). 최고 점수를 저장한다.

### 6. 업그레이드와 지원 병기

- 스테이지 사이 정비 화면. 스테이지에서 번 돈으로 업그레이드와 지원 병기를 산다.
- 업그레이드: 탱크마다 최소 3단계. 단계가 오르면 성능과 함께 모델 겉모습이 바뀐다(포신, 장갑, 색, 크기).
- 지원 병기: 방어선 위 정해진 자리에 스스로 쏘는 병기를 세운다. 최소 2종, 동시에 4기 이상.

### 7. 마무리, 트레일러, 폰

- 타이틀 화면과 게임 이름(이름은 당신이 짓는다). 메뉴, 전투, 보스전 음악이 각각 있다.
- `?trailer=1`: 45~75초 트레일러. 미리 렌더한 영상이 아니라 게임 엔진 안에서 실시간으로 도는 장면이다. 타이틀, 탱크 3종, 맵 3개, 보스 등장, 쏟아지는 적, 마지막 게임 이름. 음악과 효과음이 있다. 보는 사람이 「이 게임 해 보고 싶다」고 느끼는 것이 목표다.
- 폰: 가로 화면 기준 터치로 조준하고 쏜다. 폰 크기 화면(예: 844x390)에서 화면을 꽉 채우고, 글자와 버튼이 읽히고 눌린다.
- 첫 로딩: 웹에 올려 폰으로 들어오는 시청자가 오래 기다리지 않게 한다. 첫 화면까지 내려받는 양을 README 에 적는다.

### 8. 검수

- 아래 「앞서 만든 AI 들이 밟은 함정」을 하나씩 다시 대조한다.
- 세 탱크 모두로 스테이지 1~3 을 처음부터 끝까지 이길 수 있는지 확인한다. 체력이나 승리 상태를 코드로 바꾸지 않고, 마우스, 키, 자동 사냥 같은 입력으로만 시험한다. 못 맞추면 그 사실을 DEVLOG 에 그대로 남긴다.

## 3D 모델과 리깅

- 괴수, 보스, 탱크, 지원 병기는 Meshy 나 Higgsfield 로 만든 모델이어야 한다. three.js 도형이나 코드로 짠 형상으로 대신하지 않는다. 폭발, 물보라, 지형, 하늘 같은 효과는 예외다.
- 보스와 중형 적은 Higgsfield 로 원화를 먼저 그린다(3/4 정면, 다리와 집게, 꼬리, 지느러미가 다 보이는 자세). 그 그림으로 Meshy 이미지 투 3D 를 돌린다.
- 탱크 세 종과 지원 병기는 각각 따로 생성해 실루엣이 확연히 다르게 한다. 한 대를 잘라 변형해 종류를 늘리지 않는다.
- 생물마다 가장 가까운 실제 동물을 정한다. 하나로 맞지 않으면 둘을 섞되 무엇을 어디서 따왔는지 적는다. 그 동물의 뼈대나 외골격 마디, 관절이 움직이는 방향과 범위, 걷기나 헤엄치기, 공격 방식을 웹에서 조사하고 출처를 적는다.
- 조사한 대로 Blender 에서 뼈를 심는다. 관절 수와 마디는 실제 동물을 따른다(예: 게 다리는 마디가 여러 개, 무는 동물에는 턱뼈). 가중치는 관절에서 몸이 이어진 채 휘어지게 준다.
- 동작은 그 동물이 실제로 하는 움직임에서 만든다: 걸음걸이, 공격, 맞았을 때, 쓰러질 때.
- 수백 마리로 나오는 작은 적은 성능 때문에 뼈 대신 다른 방법(정점 셰이더 등)으로 같은 동물의 움직임을 내도 된다. 그때도 어느 동물의 어떤 움직임인지 적는다.
- Blender 작업은 모델마다 단계별 스크립트로 나눠 `tools/blender/<모델>_<번호>_<단계>.py` 에 남기고(예: `01_import`, `02_cleanup`, `03_bones`, `04_weights`, `05_split`, `06_actions`, `07_export`), 단계마다 작업 파일을 `assets/blender/<모델>-<번호>.blend` 로 저장한다.
- Blender 는 화면 없이 `blender -b --python <스크립트>` 로 쓴다. 결과는 Blender 로 렌더한 그림이나 게임 화면으로 직접 확인한다.

## 도구와 예산 (전체 합계)

| 도구 | 쓰는 곳 | 한도 | 장부 |
|---|---|---|---|
| Meshy (MCP 서버 `meshy` 연결됨) | 글이나 그림으로 3D 만들기, 다듬기, 리메시, 리깅, 애니메이션 | 1,500크레딧 | `meshy-ledger.md` |
| Higgsfield (`higgsfield` CLI, 로그인됨) | 모델 원화, 텍스처, 하늘, UI 그림 | 300크레딧 | `higgsfield-ledger.md` |
| ElevenLabs | 효과음(`POST https://api.elevenlabs.io/v1/sound-generation`), 음악(ElevenLabs Music) | 효과음 60회, 음악 4곡 | `sfx-ledger.md` |
| Blender 5.2 (`blender`) | 모델 나누기, 뼈 심기, 가중치, 동작, 줄이기, GLB 내보내기 | 제한 없음 | |

- 호출할 때마다 장부에 시각, 작업, 태스크 ID, 크레딧, 누적을 적고 한도를 넘기지 않는다. 버린 생성의 크레딧도 적는다. Higgsfield 비용은 `higgsfield generate cost` 로 먼저 본다.

## 모델 출처 기록

- `MODELS.md`: 게임이 불러오는 3D 파일마다 만든 도구, 태스크 ID, Blender 에서 한 일과 스크립트 이름, 최종 파일.
- `RIGGING.md`: 모델마다 따른 동물과 출처, 동물의 뼈나 마디와 모델 뼈의 대응 표, 동작마다 따른 실제 움직임, 뼈 수.
- 태그를 찍기 전에 게임이 실제로 불러오는 3D 파일 목록(네트워크 요청 기준)을 `MODELS.md` 와 대조한다. 더 쓰지 않는 모델은 로더에서 뺀다.

## 앞서 만든 AI 들이 밟은 함정 (같은 실수를 하지 않는다)

앞의 두 AI 가 실제로 겪은 일이다. 미리 알려 주는 것이니 처음부터 피한다.

리깅과 동작:

- Meshy 자동 리깅(`meshy_rig`)은 사람 뼈 24개 고정이라 꼬리, 턱, 지느러미, 여러 마디 다리가 따로 움직이지 않는다. 앞의 두 게임에서 꼬리가 다리나 팔에 딸려 움직였는데 둘 다 못 알아챘다. 사람형이 아닌 생물에는 쓰지 않고 Blender 로 직접 뼈를 심는다.
- 생물마다 같은 틀 뼈대(몸통 하나, 다리 한 마디, 집게 하나)를 돌려 쓰지 않는다. 한 생물의 뼈 목록을 복사해 다른 생물을 만들지 말고, 그 동물의 해부 자료에서 새로 만든다. 동작 이름은 같아도 걷기와 공격의 내용과 길이는 생물마다 다르게 만든다.
- 가중치는 정점마다 관절로 이어진 가까운 뼈 둘에서 넷을 부드럽게 섞는다. 몸을 덩어리로 잘라 뼈 하나씩 고정하면 삐걱거리고 몸이 떨어져 나가 보인다. 손가락과 허벅지처럼 서로 먼 부위의 뼈는 섞지 않는다(앞 게임에서 다리가 126배 늘어났다).
- 리깅을 끝낼 때마다 바인드 자세 대비 메시 변 길이 비율을 재서 크게 늘어난 곳(예: 5배 초과)을 먼저 찾고, 동작 전체를 0.5초 간격으로 앞, 옆, 뒤에서 찍어 본다.
- 모델에 꼬리가 있으면 꼬리 중심선에 뼈를 맞춘다. 실제 동물에 없는 부위를 억지로 만들거나 사지에 붙이지 않는다.
- 쓰러지는 동작은 다리가 꺾이고 몸이 무너지며 물에 잠기게 만든다. 몸 전체를 통나무처럼 기울이는 것으로 대신하지 않는다.
- 큰 동작은 단계별 길이와 가속(천천히 시작해 빨라지고 느려지며 멈춤)을 정해 키프레임한다. 머리와 몸 끝은 몸통보다 2~4프레임 늦게 따라오고, 멈출 때 살짝 지나쳤다 돌아온다. 들고 있는 물건은 손 사이에 끼인 채 따라가고 손이 뚫고 들어가지 않는다. 발은 바닥에서 미끄러지지 않는다. 0.2초 간격 자세 그림 한 장으로 직접 대조한다.
- 걷기와 달리기 클립을 이동 속도에 맞춰 빠르게 돌릴 때는 원래 속도의 1.2배 안으로 둔다(앞 게임에서 1.88배로 돌려 버둥거렸다).
- 회전 부호와 좌표는 눈으로만 보지 말고 수치로 검사한다(예: 턱을 벌렸을 때 턱 끝 높이). 뼈 이름의 좌우는 접두사나 접미사로 정확히 구분한다(`LegR` 안에도 L 이 있다).

모델 생성:

- `pose_mode` t-pose 는 사람형에만 쓴다. 게, 갑각류, 배, 지형물에 걸면 팔다리나 날개가 생긴다(앞 게임에서 150크레딧을 버렸다).
- Meshy 프리뷰가 성공한 것을 확인하고 정면, 옆, 뒤에서 본 뒤에 refine 과 텍스처를 건다. 여러 개를 한꺼번에 걸기 전에 하나를 먼저 보고 건다. Meshy 프롬프트는 600자 안으로 쓴다. 등에 가시가 생기지 않게 프롬프트에 적고 결과를 확인한다.
- Meshy 에 포탑만 달라고 해도 차체째 나온다. 포탑과 차체를 Blender 로 나눈 뒤 포탑을 40도 돌려 놓고 렌더해서 남은 조각이 제자리에 남지 않았는지 확인한다.
- Blender 자동 가중치가 정점을 못 잡으면(Meshy 메시가 닫혀 있지 않거나 UV 경계로 쪼개진 경우) 정점을 아주 작은 거리(1e-5)로 합친 뒤 다시 한다.
- 헤드리스 Blender 렌더에는 뼈가 그려지지 않는다. 뼈를 보이려면 뼈마다 가는 메시를 만들어 찍는다.
- three.js 는 노드 이름의 점을 뺀다(`hand.L` 이 `handL`). SkinnedMesh 는 `SkeletonUtils.clone` 으로 복제하고 경계 상자를 갱신한다.
- Meshy 텍스처는 1024 픽셀 이하(작은 적은 512)로 줄인다. 앞 게임은 텍스처가 장마다 3~4MB 라 GLB 20개가 82.7MB 였다.

화면:

- 적은 바다 위에서 한눈에 보여야 한다. 적 색을 바다와 대비되게 잡고, 어두운 외곽선이나 테두리 빛을 주고, 안개를 적이 덜 받게 한다. 세 맵 모두에서 1920x1080 스크린샷으로 확인한다.
- 밤이나 어두운 맵을 만들면 조명(등대, 가로등, 항구 불빛)을 처음부터 넣는다. 어두운 바다에 흰 거품을 많이 깔면 구름이 바닥에 깔린 것처럼 보인다. 번개는 하늘과 바다가 확실히 밝아지게 하고 천둥은 약간 늦게 따로 낸다.
- 맵 셋을 같은 지형에 하늘과 날씨만 바꿔 만들지 않는다. 지형도 단색 도형 대신 질감과 변화를 준다. 적 떼는 줄 맞춘 격자로 놓지 않고 흩어지게 배치한다. 보스는 모든 맵에서 화면에서 충분히 크게 보인다.

소리와 기록:

- ElevenLabs 효과음과 음악 요청은 한 번에 둘까지만 보낸다(셋을 동시에 보내 한도 오류가 났다). 생성한 소리는 길이, 평균 음량, 앞쪽 무음, 출력 최고점이 1 미만인지를 재서 DEVLOG 에 적는다.
- DEVLOG 와 장부의 시각은 그 줄을 쓰는 순간 `date` 로 본 KST 값만 적는다. 짐작으로 적지 않는다. 상한을 넘겼으면 넘겼다고 그대로 적는다.
- 도구 호출이 거절되거나 실패하면 오류 문구를 그대로 DEVLOG 에 적는다. 모델 생성이 안 된다고 코드 도형으로 대신하지 않는다(앞 게임 하나가 그렇게 해서 35분 만에 끝냈다).
- 첫 화면에 필요한 모델만 먼저 받게 하고(타이틀은 탱크 한 대) 나머지는 뒤에 받는다. 배포용 폴더는 개발 파일(.blend, 원본, 확인 그림)을 빼고 묶는다.

## 기록

- `DEVLOG.md`: 시각을 붙여 무엇을 하려 했고, 무엇이 됐고, 무엇이 막혔고 어떻게 풀었는지. 에셋을 만들 때 쓴 프롬프트와 결과 판단도. 짧은 문장으로 자주. 「적의 구성」과 「맵」 절에는 무엇을 왜 정했는지.
- git: 의미 있는 진척마다 커밋한다(최소 30분에 한 번). 커밋 메시지는 무엇이 바뀌었는지 한 줄.

## 하지 말 것

- 예산과 시간 상한을 넘기지 않는다.
- 사람에게 질문하거나 확인을 기다리지 않는다. `final` 을 찍고 끝날 때 할 일을 마쳤을 때만 멈춘다.
- 다른 회사 게임이나 캐릭터를 닮게 만들지 않는다.

## 끝날 때

- `README.md` 에 실행 방법(예: `python3 -m http.server 8000` 뒤 주소), 조작법(키보드와 터치), 만든 것 요약, 적의 구성과 맵을 그렇게 정한 이유, 평균 프레임 수, 첫 화면까지 내려받는 양, 잘 된 점과 아쉬운 점.
- 마지막 커밋, `git tag final`. DEVLOG 마지막 줄에 끝난 시각, 쓴 Meshy 와 Higgsfield 크레딧, 효과음 수, 음악 수를 적고 멈춘다.

2. 띄운 명령과 첫 지시

Antigravity CLI(agy)로 띄우면서 첫 지시를 같이 넣었다. 이 한 줄이 사람이 넣은 첫 말의 전부다.

agy --model gemini-4-argon-high --dangerously-skip-permissions -i 'BRIEF.md 를 끝까지 읽고 그대로 진행해 줘. 사람에게 묻지 말고, final 태그를 찍고 끝날 때 할 일까지 마친 뒤에만 멈춘다.'

--dangerously-skip-permissions 는 명령마다 승인을 묻지 않게 하는 옵션이다. 무엇이든 실행할 수 있는 상태가 되니 게임 폴더만 있는 빈 폴더에서 띄우는 것이 안전하다.

3. 피드백 원문 (feedback-1.md)

m3 태그(적과 보스, 맵)의 화면을 보고 쓴 파일이다. 셋 다 기획서에 이미 있던 요구라서, 새 기능을 넣지 말고 그것만 고치라고 했다.

# 피드백 1 (사람이 m3 화면을 보고 남긴 것)

새 기능을 넣지 말고 아래 셋만 고친다. 셋 다 BRIEF.md 에 이미 있는 요구다. 고친 뒤에는 BRIEF.md 의 남은 단계(m4, final)를 그대로 이어 간다. 시간 상한은 그대로다.

1. 카메라: 지금은 탱크 바로 뒤라 탱크가 화면 가운데를 크게 가리고, 괴수가 탱크 코앞에 붙어 있어 거리감이 없다. 카메라를 방어 진지 뒤 높은 곳으로 빼서 탱크는 화면 아래 일부만 보이고, 바다와 수평선, 멀리서 다가오는 괴수가 화면 대부분을 차지하게 한다. 큰 괴수는 수평선 안개 속 실루엣으로 먼저 보이다가 다가와야 한다(BRIEF 「게임」 절). 보스는 지금처럼 크게 보여도 되지만, 등장할 때는 멀리서부터 다가온다.
2. 바다: 지금은 파도 없는 단색 면이고 가운데에 흰 빛기둥이 서 있다. 물결과 너울, 하늘과 해의 반사, 해안 쪽 물보라가 있는 바다로 만든다. 반복 타일이 티 나지 않게 한다. 흰 빛기둥은 없앤다. 세 맵 모두에서 바다 색과 날씨에 맞게 바꾼다.
3. 지형: 화산과 빙하가 단색 삼각형 도형이다. 질감과 변화가 있는 지형으로 만든다(BRIEF 「앞서 만든 AI 들이 밟은 함정」 화면 절). 방파제의 상자와 컨테이너도 도형이 티 나지 않게 다듬는다.

무엇을 어떻게 바꿨는지 DEVLOG 「피드백 1」 절에 적는다. 끝나면 커밋하고 `git tag fb1` 을 찍은 뒤 m4 로 넘어간다.

영상 줄거리, 짧게

비워 둔 칸을 바다 생물로 채웠다

Argon이 Higgsfield로 먼저 그린 원화 다섯 장. 왼쪽부터 대왕게, 대왕문어, 바다전갈 보스, 공작갯가재와 아귀 중형 적

Argon이 3D를 뽑기 전에 그린 원화. 왼쪽부터 보스 셋(대왕게, 대왕문어, 바다전갈), 중형 적 둘(공작갯가재, 아귀).

기획서에는 괴수가 실제 바다 생물에서 출발해야 하고, 두 발로 선 공룡이나 등줄기 가시판은 안 된다고만 적었다. Argon은 생물마다 가장 가까운 실제 동물을 정하고 학명까지 작업 일지에 적었다. 이름도 직접 지었다. 철갑 대왕게 크라켄혼, 심연의 군주 옥토투스, 창해의 재앙 유립테우스. 게임 이름은 해안포대: 심해의 습격이다.

괴수 바탕 동물 뼈
작은 적 떼 투구게 + 대왕등각류 뼈 대신 정점 셰이더로 다리 움직임
중형 적 1 공작갯가재 28개
중형 적 2 심해 아귀 + 걷는 씬벵이 21개
보스 1 태즈메이니아 대왕게 + 키다리게 37개
보스 2 태평양 대왕문어 + 흡혈오징어 30개
보스 3 고생대 바다전갈 + 투구게 26개

맵도 셋을 정했다. 한낮의 등대 방파제, 노을 진 화산만과 해상 시추 기지, 한밤 폭풍 속 빙하 요새다.

탱크는 Opus 쪽이 돋보였다

탱크 선택 화면. 위는 Opus의 노란색 벌컨 연사포, 아래는 Argon의 탱크 세 대

탱크는 둘 다 세 종류다. Opus는 노란색 연사포, 국방색 곡사포처럼 생김새부터 개성이 뚜렷했다. Argon은 세 대를 Meshy로 따로 만들었는데도 비슷한 형태에 색만 바꾼 느낌이었다.

물량 웨이브는 Argon이 편했다

300마리 넘게 몰려오는 웨이브. 위는 Opus, 아래는 Argon. Argon의 적은 주황색이라 바다 위에서 잘 보인다

Argon은 작은 적을 주황색으로 칠했다. 푸른 바다와 대비돼서 어디에 몇 마리가 있는지 한눈에 보인다. Opus의 게임은 멋있지만 적이 바다에 묻혀 잘 안 보이는 면이 있었다. 플레이하기에는 Argon 쪽이 더 편했다.

보스는 화면을 가득 채운다

보스 장면. 위는 Opus의 등장 장면과 싸우는 장면, 아래는 Argon의 등장 장면과 싸우는 장면. Argon의 대왕게는 싸우는 동안 화면을 가득 채운다

Opus의 보스는 등장 장면에서는 가까이 보이지만, 싸울 때는 수평선 쪽에 작게 있다. Argon의 대왕게는 싸우는 동안 화면을 가득 채운다. 큰 공격을 준비하는 2.5초 동안 치켜든 오른쪽 대집게를 맞히면 집게 조각이 부서져 떨어진다. 모델 완성도나 연출은 Opus가 우세했지만, 게임 본연의 재미는 Argon이 더 좋았다.

리깅과 모델링은 둘 다 실제 동물을 기준으로 뼈를 심었다. 모델의 정교함은 원화를 먼저 그린 Argon 쪽이 나았다.

피드백 한 번, 약 20분

피드백 전후의 첫 스테이지. 위는 탱크 바로 뒤 카메라와 단색 바다, 아래는 높은 곳에서 본 물결치는 바다

m3까지의 게임은 카메라가 탱크 바로 뒤에 낮게 붙어 있어 탱크가 화면 가운데를 가렸고, 바다는 파도 없는 단색 면에 흰 빛기둥이 서 있었다. 피드백 뒤에는 카메라가 진지 뒤 높은 곳으로 올라갔고, 바다에 너울과 하늘 반사가 생겼다.

피드백 전후의 화산 맵. 위는 단색 삼각형 화산, 아래는 질감 있는 절벽과 용암이 비치는 바다

화산과 빙하도 단색 삼각형에서 질감 있는 지형으로 바뀌었다. 그 뒤 Argon은 3단계 업그레이드, 지원 병기 5종, 60초짜리 실시간 트레일러, 음악 4곡까지 넣고 final 태그를 찍었다.


기록

전부 10월 19일 한국 시각이다. Argon의 작업 일지(DEVLOG.md), git 태그 시각, 호출마다 적은 장부(meshy-ledger.md, higgsfield-ledger.md, sfx-ledger.md), 터미널 녹화에서 옮겼다.

지점 시각 시작부터
첫 지시 19:30:46
m1 기본 게임 20:14 44분
m2 탱크 3종, 물량 웨이브 20:40 1시간 9분
m3 적과 보스, 맵 21:52 2시간 21분
로그인 인증 오류로 멈춤 22:06 무렵부터 22:46까지
피드백 전달과 재개 22:46
fb1 피드백 반영 23:07
m4 업그레이드, 트레일러, 음악 23:49
final 23:55 멈춘 시간을 빼고 3시간 42분
도구 한도 Argon이 쓴 것
Meshy 1,500크레딧 330크레딧, 모델 11개 (탱크 3, 작은 적 1, 중형 적 2, 보스 3, 지원 병기 2)
Higgsfield 300크레딧 7.5크레딧, 원화 5장
ElevenLabs 효과음 60회 24회
ElevenLabs 음악 4곡 4곡 (메뉴, 전투, 보스, 트레일러)
Gemini 주간 사용량 시작 전 2%, 끝난 뒤 4% (도구 점검과 다른 짧은 호출 포함)

게임이 불러오는 3D 파일은 11개, 합계 85.4MB다. 파일마다 2048픽셀 텍스처가 서너 장씩 들어 있다. 작업 일지에는 텍스처를 1024픽셀(작은 적은 512)로 줄였다고 적었다. 기획서의 끝날 때 할 일 가운데 README의 첫 화면까지 내려받는 양, 잘 된 점과 아쉬운 점은 쓰지 않았다.

같이 보면 좋은 글과 영상: 1편, Opus 5.5와 GPT-6 Astra의 같은 기획서 대결과 원문, 2편 영상, 보스 3마리 추가, Gemini 4 Argon 모션 그래픽 비교

출처: Gemini 4 Argon 발표 글, Meshy, Higgsfield, ElevenLabs, Blender, three.js

댓글

아직 댓글이 없습니다. 첫 댓글을 남겨보세요!

0 / 1000