코스피 어벤져 · AI 활용 기술 문서 ← 랜딩 페이지   플레이 가이드   PDF 인쇄
KOSPI AVENGER Technical Document · demo v.1.0
NHN Game x AI Hackathon · 사전 과제
AI Utilization Report

AI 활용
기술 문서

모바일 3D 소울라이크 액션 게임을 1인 개발로 17일 안에 구현하기 위해
구축한 AI 도구 스택 · 파이프라인 · 자동화 프롬프트의 정리

3D Assets
Meshy AI
2D Art
Gemini · Nano Banana
BGM
Suno v5.5 Pro
SFX
ElevenLabs
Scene / VFX
Blender MCP
Game Engine
Godot MCP
Rigging / Anim
Mixamo
Orchestrator
Claude Code
AI Tools · Prompts · Automation Pipeline Cover

Table of Contents

목차

  1. 00개요 · 왜 AI 네이티브인가03
  2. 01AI 도구 스택04
  3. 02개발 파이프라인12
  4. 03AI 자동 검증 루프15
  5. 04컨텍스트 한계와 session-log-skill18
  6. 05프롬프트 사례22
  7. 06회고 · 향후 계획30
  8. A부록 · 링크 모음32
Chapter 00

개요: 왜 AI 네이티브인가

본선은 단 48시간이라는 게임 개발을 하기에는 매우 짧은 시간이 주어지기에, 사전 과제에서 AI 게임 개발 파이프라인을 미리 구현해보고 확보해두는 것이 중요하다고 생각했습니다.

1인 개발로 17일이라는 짧은 기간동안 3D 소울라이크 액션과 실제와 같은 트레이딩 시뮬레이션을 동시에 다뤄야 하는 게임을 개발하는 것은 전통적인 방식으로는 규모상 불가능한 스코프입니다.

기간 안에 완성도 있는 게임을 구현하기 위해서는 모델링 · 리깅 · 애니메이션 · 음악 · 효과음 · 씬 조립 · 로직 구현 · QA 까지 창작 전 단계를 AI 도구가 커버하고, 개발자는 기획 · 프롬프트 설계 · 결과 검증 · 통합 판단만 하는 AI 네이티브 개발 방식이 필요합니다.

물론 AI 도구를 개별적으로 쓰는 것과 파이프라인으로 엮는 것은 별개의 문제입니다. 이 문서는 프로젝트에서 실제로 검증된 도구 스택, 세션 단위 개발 파이프라인, 자동 QA 루프, 그리고 그 과정에서 부딪힌 컨텍스트 한계와 해결책 (session-log-skill) 을 정리합니다.

0.1 Godot 을 선택한 이유

Godot 의 씬 · 리소스 · 스크립트 (.tscn · .tres · .gd) 는 전부 사람이 읽을 수 있는 텍스트 파일입니다. LLM 이 씬을 열어 노드 트리를 뜯어고칠 수 있다는 뜻이죠. Unity 의 .prefab 은 GUID 가 얽힌 YAML 이라 .meta 파일과 교차 참조가 필요하고, Unreal 의 .uasset 은 아예 바이너리라 AI 가 파싱조차 못 합니다.

게다가 GDScript 는 파이썬을 닮아 대부분의 LLM 이 익숙하게 다룹니다. 씬 편집과 스크립트 작성을 전부 텍스트로 처리할 수 있는 엔진. Godot은 AI 네이티브 개발에 최적화된 선택지였습니다.

0.2 AI 네이티브 개발의 본질적 한계

씬 편집을 텍스트에 맡긴다는 건 WYSIWYG 에디터를 반쯤 포기한다는 뜻이기도 합니다. 노드 계층 · UID · 시그널 연결이 텍스트 파일 안에만 존재하는 순간, 개발자가 눈으로 확인하며 드래그로 고치던 감각이 사라집니다.

즉흥 수정 능력이 AI 가 쥐고 있는 컨텍스트에 종속됩니다. 세션이 끊기거나 컨텍스트가 요약돼 세부가 날아가면, 개발자 혼자서 그 파일을 다시 이해하는 것부터가 부담입니다. 이 프로젝트에서도 그런 종속을 여러 번 실감했고, 뒤에 나올 session-log-skill 이 그 부담을 조금이라도 덜어보려는..? 노력이었습니다.

Chapter 01

AI 도구 스택

창작 단계별 8개 도구, 런타임 LLM (Azure OpenAI), 오케스트레이터 (Claude Code) 로 구성. 도구마다 다른 도구가 대체하기 어려운 영역을 맡고, 결과물은 다음 도구의 입력이 됩니다.

1.0 전체 스택 요약

단계도구산출물
3D 캐릭터 · 무기 · 가구Meshy v6 Pro.fbx 5명 캐릭터 + 무기 3종 + 가구 9종
2D 컨셉 아트 · 컷씬Gemini · Nano Banana.png 오프닝 5장 + 튜토리얼 엔딩 + 캐릭터 컨셉
BGMSuno Pro.ogg 11 트랙 · 인디 소울라이크 톤
SFXElevenLabs API.mp3 64+ 개 (플레이어 · 몹 · 보스)
맵 · VFX 모델링Claude Code × Blender MCP.glb 3 아레나 + 프로시저럴 텍스처
게임 로직 · 씬 조립Claude Code × Godot MCP195 개 GDScript · 86 개 .tscn
오토 리깅 + 애니메이션Mixamo35+ .fbx 애니 재사용
런타임 시장 뉴스Azure OpenAI (gpt-5-nano) × Azure Functions플레이 중 시간당 4개 뉴스 · 봇 반응 유도
오케스트레이션 · 통합Claude Code (VSCode Extension)전체 에이전트 세션 관리

1.1 3D 에셋 — Meshy

Meshy v6 · AI 3D 생성
meshy.ai · Pro Plan
용도
텍스트/이미지 → 3D 캐릭터·무기·가구 생성
사용 범위
플레이어 · 4명 몬스터 (worker · homer · student · boss) · 무기 3종 · 홈룸 가구 9종
산출 포맷
.fbx (bone rigged) · .glb · .obj
라이선스
Meshy Pro 상업 사용 가능 (구독자 자산 소유권)
MCP
@meshy-ai/meshy-mcp-server — Claude Code 에서 직접 호출

얼굴 표현 · 메시 예산 문제

Meshy 로 디테일한 얼굴 표정을 뽑으려면 캐릭터당 수십만 매시가 붙습니다. AI 3D 모델은 아직 low-poly 조건에서 표정을 살리는 최적화가 약해서, 이목구비를 세밀하게 살리는 순간 메시가 폭증합니다. PC 게임이라면 감당할 수 있지만, 이 프로젝트는 모바일 타깃입니다. 캐릭터와 몬스터, 보스가 렌더링되는 전투 씬을 60fps로 원활하게 프레임 드랍 없이 플레이하려면 캐릭터당 메시를 대폭 낮춰야만 했습니다.

문제는 이 과정에서 얼굴의 디테일은 거의 포기해야 했습니다. 눈 · 코 · 입의 곡면이 각지고, 표정 애니메이션은커녕 기본 얼굴조차 어색해집니다. 그래서 얼굴을 가리는 컨셉으로 아예 방향을 틀었습니다.

1.2 2D 컨셉 아트 — Gemini Nano Banana

Gemini 웹앱 · Nano Banana
gemini.google.com · Playwright
용도
오프닝 · 튜토리얼 컷씬 이미지 · 캐릭터 컨셉 아트
접근 방식
API의 비용 문제 우회 → Playwright 자동화로 웹앱 조작
참조 이미지 락
주인공 컨셉 v2 이미지를 매 shot 에 첨부해 캐릭터 일관성 유지
산출물
오프닝 컷씬 5장, 캐릭터, 몹의 컨셉 아트
공통 스타일
Korean mobile game event cartoon (Nikke · Priconne · Epic Seven 계열)

tools/gemini-cutscene/ 에 Playwright 러너를 직접 구현했습니다. 프롬프트는 JS 데이터로 관리하고 node generate-cutscene.js --cutscene=opening 로 배치를 돌립니다. 결과 이미지는 assets/ui/cutscenes/ 에 자동 저장되고, 진행 로그도 함께 남습니다.

1.3 BGM — Suno v5.5 Pro

Suno 5.5 · AI 음악 생성
suno.com · Pro Plan
용도
타이틀 · 홈룸 · 트레이딩 · 튜토리얼 · 전투 · 보스 페이즈 1/2/3 · 승리 · 패배 · 컷씬 (11 트랙)
톤 정의
인디 소울라이크 + 주식 시장 · Katana ZERO + Signalis + Undertale 참조
핵심 태그
synthwave · vaporwave · lofi hip hop · chiptune · dark ambient · industrial
네거티브
오케스트라 · 타이코 드럼 · K-드라마 톤
후처리
Audacity → 트림 → -6dB peak normalize → 48kHz WAV → .ogg

Custom Mode + Instrumental ON 은 필수. 모든 곡에 indie game soundtrack, retro digital 태그를 공통으로 유지해 톤을 잡았습니다. 프롬프트 원본은 tools/suno_bgm_prompts.md 에 있습니다.

1.4 SFX — ElevenLabs

ElevenLabs Sound Effects API
elevenlabs.io · Creator Plan
용도
전투 SFX · 무기 · 스킬 · 피격 · 보스 패턴 · UI 등 64+ 개
API
POST /v1/sound-generation · tools/generate_elevenlabs_sfx.py 배치 러너
카테고리
player (17) · boss (25+) · mob (10+) · ui (기존 자산 유지)
Resume-safe
기존 파일 스킵 · 3회 재시도 · 요청간 0.4s 슬립
스타일
짧은 액션 사운드 (0.5~1s) · 자연 언어 프롬프트 · "young woman quick pained grunt, short" 톤

레퍼런스 팩은 게임 톤과 맞는 SFX 팩을 찾기 힘들어서, 이 방법으로 전부 새로 뽑았습니다.
물론 찰떡같이 맞는 톤을 뽑기는 쉽지 않고, 노이즈도 많지만... 사실 시간이 좀 부족하여 최대한 잘 살리는 SFX로 만족했습니다.
그래서 같은 액션도 _1, _2, _3 변형을 여러 개 두어, 반복 재생될 때 지루하지 않게 했습니다.

1.5 맵 · VFX 모델링 — Claude Code × Blender MCP

Blender MCP
uvx blender-mcp
용도
4개 몬스터 아레나 (사무실, 아파트, 대학교, 보스) · 텍스처 · 힐팩 · VFX 모델
워크플로우
Claude Code 가 Python 스크립트를 MCP 통해 Blender 에 실행 → 씬 생성 → .glb export
텍스처
Python + PIL 로 프로시저럴 (brick · wood · tile · carpet · fabric) → JPEG bake
주의사항
매 execute_blender_code 호출은 fresh scope · 헬퍼는 매번 인라인 필요

"육각형 중앙 구조물 제거 + BossArena 급 사실적 무늬" 같은 자연어 스펙을 Claude Code 가 Blender MCP 로 받아, hex mesh 삭제 + Python 프로시저럴 노이즈 텍스처 베이크로 구현합니다.
이 부분은 3D 모델링이나 미술적 감각이 부족한 제게 큰 힘이 되어 줬습니다.

1.6 게임 로직 · 씬 조립 — Claude Code × Godot MCP

Godot MCP
@coding-solo/godot-mcp
용도
GDScript 작성 · .tscn 씬 편집 · headless 실행 · 디버그 로그 캡처
도구 세트
run_project · get_debug_output · launch_editor · add_node · save_scene
병용
Godot CLI 를 Bash 로 직접 호출 → --headless --quit-after 8 로 파싱·런타임 검증
산출물
195 개 GDScript · 86 개 씬 · 51 개 리소스 · 27 개 md 문서

1.7 오토 리깅 + 애니메이션 — Mixamo

Adobe Mixamo
mixamo.com · 무료
용도
Meshy 로 만든 캐릭터 fbx 를 humanoid 스켈레톤으로 오토 리깅 + 애니메이션 라이브러리 재사용
애니메이션 수
35+ 개 (idle · walk · run · slash · dodge · hit react · death · boss taunt · combo attacks)
파이프라인
FBX 다운 → Blender 에서 root bone 삽입 → glTF export → Godot 자동 임포트 → humanoid_lib.tres 통합
라이선스
Adobe Mixamo TOS: 상업 사용 무료

물론 이 방식은 이미 누군가 만들어 놓은 애니메이션을 재사용하는 것이므로, 캐릭터의 개성이나 액션의 디테일을 살리기에는 한계가 있습니다.
하지만 17일이라는 짧은 개발 기간 안에서, 제가 애니메이션을 직접 구현하거나 모캡으로 구현하는 것은 거의 불가능 하기에, 이틀 정도 시도해봤지만... 원하는 퀄리티가 도저히 나오지 않아 우회하기로 결정했습니다.
하지만 mixamo가 가지고 있는 에셋이 워낙 방대하여 기본적인 움직임과 전투 애니메이션을 확보하는 데에는 충분했습니다.

1.8 런타임 LLM 뉴스 — Azure OpenAI × Functions

Azure OpenAI (gpt-5-nano) · Azure Functions
런타임 · 시장 뉴스 생성
용도
플레이 중 게임 시간 1시간마다 시장 뉴스·공시·찌라시 4개씩 생성하여 봇의 시장 반응을 유도합니다.
모델
Azure OpenAI gpt-5-nano (저지연·저비용)
백엔드
Azure Functions (kospi-news-fn) — OpenAI 프록시 + 인증 계층
클라이언트
Godot NewsClient.gd — HTTPRequest 노드 · sim time 누산 · 실패 시 silent disable
요청 주기
REQUEST_EVERY_SIM_SECONDS = 3600 (게임 내 1시간) → 하루 6-7회 배치
인증
2단 — Azure Function Key (URL ?code=...) + X-Game-Auth 헤더 shared secret

이는 게임 개발에 AI를 활용한 정확한 사례는 아니지만, 나름 인게임 내에서 핵심적인 기능을 AI를 활용하여 구현한 사례라 추가했습니다.

아키텍처 흐름

  1. Godot 클라이언트 요청

    NewsClient.gdmarket_ticked sim delta 누적 → 1시간 도달 시 자동 POST. 요청 body 에 현재 보유 종목·현금·주간·요일·티커 메타를 함께 보냄 (뉴스 관련도 향상).

  2. Azure Function 인증 · 프록시

    Function Key (URL 파라미터) 로 1차 확인 + X-Game-Auth 헤더의 shared secret 로 2차 확인. OpenAI API 키는 서버에만 존재하며 클라이언트에 노출되지 않음.

  3. Azure OpenAI 호출

    gpt-5-nano 에 시장 컨텍스트 + JSON 스키마 프롬프트 전송. 응답으로 뉴스 4개 (headline · sentiment · target_ticker · delta_pct · type) JSON 반환.

  4. Godot 파싱 · 시장 주입

    클라이언트가 응답 파싱 → NewsFeed.inject(items) 로 뉴스 큐에 삽입. 이후 봇 Actor 들이 뉴스를 읽고 매수·매도 결정 → 실제 가격 변동으로 반영.

Azure Function을 사용한 이유

  • API 키 은닉 — Azure OpenAI 키를 게임 클라이언트가 들고 있으면 APK 해킹 시 전량 노출
  • 2단 인증 — Function Key + shared secret 로 무단 사용 차단
  • 레이트 리미팅 — Function 레벨에서 IP·클라이언트별 rate limit 적용
  • 비용 통제 — 서버가 요청 감사 및 필요 시 캐싱 · 배치 처리 가능
  • 모델 교체 용이gpt-5-nano → 다른 모델로 갈아 끼울 때 클라이언트 앱스토어 재배포 불필요

Fallback · 실패 안전

  • .news-key 없으면 조용히 disabled → 정적 뉴스 덱으로 게임 진행 (심사 편의)
  • 네트워크 타임아웃 (30초) → push_warning 만, 게임 크래시 없음
  • HTTP 4xx/5xx → 응답 300자만 로그 남기고 무시
  • _inflight 가드 → 이전 요청 대기 중 중복 요청 방지
기술 문서

상세 셋업 가이드는 NEWS_LLM_SETUP.html 에서 확인할 수 있습니다. Azure OpenAI 리소스 프로비저닝, Function 배포, .news-key 생성 절차, 로컬 테스트 방법을 포함합니다.

Chapter 02

개발 파이프라인

개발자가 100% 손을 잡는 사전 작업을 마친 뒤, 각 세션마다 8단계 사이클을 돌립니다. 단계마다 담당 도구가 다르고, 앞 단계 결과물이 뒤 단계의 입력이 되도록 짜여있습니다.

2.1 사전 작업 · 개발자 100%

AI 에게 넘길 수 없는 창작의 골격은 개발자가 직접 기술합니다. 여기가 흔들리면 뒤에 나오는 모든 AI 산출물이 방향을 잃습니다.

  • 기획서 작성 — 장르 융합의 이유 · 핵심 재미 · 스코프 정의
  • 스토리 작성 — 세계관 · 주인공 · 적대자 · 서사 아크
  • 핵심 흐름 구성 — 트레이딩 → 목표치 → 몬스터 → 스킬 언락 → 보스 사이클
  • 등장인물 설계 — 김지우 · 성과금 개미 · 대출 개미 · 대학생 개미 · 외국인 투자자
  • 시스템 스펙 문서docs/COMBAT_SKILLS_v0.1.html · docs/SIM_SPEC.md

2.2 세션 단위 8단계 사이클

  1. 2D 컨셉 아트 생성

    새 등장 인물의 컨셉을 시각화. 후속 3D 생성의 참조로 사용.

    Gemini · Nano Banana
  2. 3D 에셋 생성

    캐릭터 · 무기 · 가구 등을 텍스트/이미지 프롬프트로 생성.

    Meshy v6
  3. 오토 리깅 + 애니메이션 삽입

    Meshy FBX → Mixamo 오토 리깅 → 애니메이션 라이브러리 재사용.

    Mixamo
  4. 핵심 로직 설계 · 구현

    GDScript 작성 · 상태머신 · 시그널 · Resource 설계.

    Claude Code × Godot MCP
  5. 맵 · VFX 모델링

    Blender Python 스크립트로 아레나 프로시저럴 생성 + 텍스처 베이크.

    Claude Code × Blender MCP
  6. SFX 생성 · 삽입

    새 액션/이벤트마다 프롬프트 정의 → 배치 러너로 일괄 생성 → AudioManifest 등록.

    ElevenLabs API × Claude Code
  7. 자체 검증 · 로그 확인

    Godot 을 headless 로 8초 실행 → 파싱 에러 · 런타임 경고 grep → 즉시 수정.

    Godot CLI × Claude Code
  8. 개발자 플레이 테스트

    실제 실행 → 시각/감각 확인 → 사용자 피드백 → 다음 사이클 입력.

    Human
Chapter 03

AI 자동 검증 루프

개발자가 빌드 → 실행 → 검증 → 문제 확인 → 보고를 손으로 매번 도는 대신, 에이전트가 스스로 엔진을 실행하고, 캡처와 로그를 뒤져서 문제를 찾는 루프를 만들었습니다.

3.1 자동 검증 루프

  1. 게임 개발 작업

    새 스크립트 · 씬 · 리소스 편집. MCP 통해 엔진 상태 조회.

    Claude Code × Godot MCP Blender MCP
  2. 세밀한 로깅 삽입

    각 동작·이벤트마다 print("[STATE] ..."), [HIT] dmg=%d, [BOSS PHASE] ... 같은 태그된 로그 심기. 검증 자동화의 핵심.

  3. Headless 검증

    godot --headless --quit-after 8 → 파싱 · 런타임 오류 즉시 감지.

    Godot CLI × Claude Code
  4. 실행 화면 자동 캡처

    Godot MCP run_project 로 씬 실행 → 스크린샷 저장 → 파일 경로 반환.

  5. 캡처본 확인

    Claude Code 가 캡처 이미지를 로드해서 시각적으로 검토. UI 위치, 카메라 각도, VFX 발생 여부 등을 확인.

  6. 문제 파악 · 수정

    로그 grep + 캡처 검토 결과를 종합하여 원인 지정 → 코드 수정.

  7. 반복 (1 ~ 6)

    문제 해결까지 자동 반복. 사용자는 최종 결과만 검증.

실전 사례

모바일 빌드에서만 몹 근접 공격이 데미지를 주지 못하는 버그를 이 루프로 잡았습니다. 범인은 Godot 4 Android 의 PackedStringArray Resource export 버그 (필드가 빈 배열로 저장됨). Array[String] 타입으로 바꿔 해결했습니다.

Chapter 04

컨텍스트 한계와 session-log-skill

자동 검증 루프는 강력하지만, 캡처 검토가 컨텍스트 윈도우를 빠르게 갉아먹습니다. 이 프로젝트에서 부딪힌 병목과, 해결책으로 직접 만든 Claude Code 스킬을 정리합니다.

4.1 문제점

  1. 캡처 검증의 컨텍스트 부담 — 세션당 스크린샷 수십 장을 에이전트가 로드해서 살피면 컨텍스트가 순식간에 부풀어 오릅니다.
  2. 잦은 compact 발생 — 200K 토큰짜리 컨텍스트도 캡처 검토 3~4번이면 바닥납니다. Claude Code 가 이전 대화를 자동으로 compact 해주지만, 그 과정에서 세부는 사라집니다.
  3. 매 compact 마다 잃어버리는 것들
    • 자동화 워크플로우의 정확한 단계
    • 이번 세션에서 실패한 접근과 그 이유
    • 핵심 자산 · 로그 파일 · 검증 스크립트의 경로
    • 다음 세션이 이어가야 할 작업 우선순위
Real Impact

같은 실패를 다른 세션에서 서너 번 반복하는 사태가 실제로 벌어졌습니다. auto-memory (MEMORY.md) 는 변하지 않는 사실을 담는 그릇이라, 세션별 진행 상황과 실패 기록을 담기엔 부족했습니다.

4.2 해결책 · session-log-skill

이 문제를 몇 번 겪고 나서, Claude Code 의 skill로 session-log-skill 을 직접 만들었습니다. auto-memory 를 옆에서 보완하는 세션 단위 워크 저널입니다.

동작 방식

  1. Compact 직전 · 큰 작업 종료 시 자동 저장

    프로젝트 · 날짜-시간 스코프로 세션에서 진행한 중요 작업, 워크플로우, 실패 원인, 핵심 자산 위치, 참조할 git hash 를 정리해서 파일 저장.

  2. 새 세션 시작 시 자동 로드

    "지난 세션 내용 확인하고 진행하자" 같은 트리거로 자동 활성. 최근 3~5개 커밋 + 최근 저장된 세션 로그 + MEMORY 를 함께 확인.

  3. 연속성 유지

    실패의 기록과 진행 중인 내용을 다음 세션이 즉시 이어받아, 같은 실수를 반복하지 않고 워크플로우 흐름을 유지.

auto-memory 와의 차이

항목auto-memory (MEMORY.md)session-log-skill
스코프지속적 사실세션별 진행 상황
수명영구참조 후 archive 가능
담는 것사용자 프로필 · 프로젝트 상수 · 툴 사용 규칙실패 기록 · 워크플로우 스텝 · 파일 경로 · 다음 할 일
업데이트 주기정보 변경 시세션 종료 · compact 직전
공개

이 skill 은 오픈소스로 열어뒀습니다. Claude Code 를 쓰는 누구든 가져다 쓸 수 있습니다. github.com/Choonham/session-log-skill

Chapter 05

프롬프트 사례

도구별로 실제 프로덕션에서 쓴 프롬프트의 대표 샘플들. 프로젝트 저장소의 tools/ 원본을 정리했습니다.

5.1 Meshy · 캐릭터 생성

Prompt · Meshy v6 Text-to-3D character/boss
Korean businessman in dark charcoal suit, standing T-pose,
full body, low poly game character, neutral face,
professional attire, clean topology, quad mesh,
subtle exaggerated musculature, imposing presence

Meshy 프롬프트 규칙

  • T-pose 명시 — 리깅 호환성 확보
  • low poly game character — 모바일 성능 예산 준수
  • neutral face — 이후 애니메이션에서 자연스러운 변화
  • clean topology, quad mesh — Blender/Godot 임포트 시 안정
  • 얼굴 이슈 회피 — 정장 · 후드 · 마스크 컨셉으로 유도

5.2 Gemini Nano Banana · 컷씬 이미지

Prompt · Gemini 웹앱 (Playwright 자동화) cutscene/opening/01_intro
[씬 감정 컬러]
Warm apartment interior — soft cream + amber lamp light from side.
Cool blue-gray night through window (contrast). Character skin natural
warm tone. Vibrant but not over-saturated.

[씬 — 게임 이벤트 만화 컷]
Chest-up frontal portrait of 김지우 (24세, 여자), three-quarter angle,
looking directly at viewer.

Face: cute cartoon intro — confident subtle smile (slight
upturned mouth corner), warm eyes with visible pupils showing personality.

[스타일 공통]
Korean mobile game event cartoon (Nikke · Priconne · Epic Seven 계열).
Character identity: 참조 이미지 첨부.

핵심 원칙 — 매 shot 마다 주인공 참조 이미지를 첨부해서 캐릭터 정체성을 락 처리합니다. 프롬프트는 씬 감정 컬러 → 씬 구성 → 스타일 공통의 3단 구조로 굳혀뒀습니다.

5.3 Suno v5.5 · BGM 프롬프트

Prompt · Suno v5.5 Custom Mode bgm_title (TitleScreen)
Vibe: Katana ZERO title · Perturbator "Sentient" · Carpenter Brut

Style
dark synthwave, cyberpunk indie game, retro digital, neon menace,
analog synth, indie soundtrack

Description
Menacing 3AM apartment glow. Solo ant investor sharpening their
last resolve before entering the market. Slow driving bass, warm
analog pad, distant siren texture. No vocals. Instrumental.

Length: 2:00 loop-ready
Tempo: 90 BPM, minor key

공통 규칙 — 모든 트랙에 indie game soundtrack, retro digital 태그를 유지합니다. 오케스트라 · 타이코 · K-드라마 톤을 금지하지 않으면 자꾸 "영화 OST" 느낌이 나서 게임과 어울리지 않았습니다.

5.4 ElevenLabs · SFX 배치 생성

Code · tools/generate_elevenlabs_sfx.py (발췌) 64+ prompts
# (category, key, prompt, duration_seconds or None)
SFX_PROMPTS: list[tuple[str, str, str, float | None]] = [
    # --- A. Player Combat (11) ---
    ("player", "sword_slash",      "sword swing in the air", None),
    ("player", "sword_hit",        "sword hitting flesh, meaty thud", None),
    ("player", "kick_whoosh",      "quick kick whoosh", None),
    ("player", "casting_start",    "magic spell charging up", 0.5),
    ("player", "limit_up_fire",    "fire aura erupting", 0.5),
    ("player", "shield_activate",  "magic shield activating with chime", None),

    # --- B. Player React (4 variants) ---
    ("player", "player_hurt_1",    "young woman quick pained grunt, short", None),
    ("player", "player_hurt_2",    "young woman short surprised pained grunt", None),
    ...
]

배치 러너 특징

  • Resume-safe — 기존 파일이 있으면 스킵
  • 3회 재시도 · 요청 사이 0.4s 슬립 (rate limit 예의)
  • 카테고리별 폴더 자동 생성 (assets/audio/sfx/elevenlabs/{cat}/)
  • 자연 언어 그대로 던집니다 — "quick pained grunt, short" 같은 짧은 서술이 가장 잘 나옵니다

5.5 Blender MCP · 프로시저럴 씬

Claude Code Request · Blender MCP arena_worker_office
워커 몹 아레나 — 사무실 컨셉:

1. 기존 육각형 중앙 구조물 제거
2. 카펫 (그레이 톤 브라운 노이즈, 512×512 JPEG 베이크)
3. 벽 (연한 아이보리 · subtle 브릭 패턴)
4. 파티션 (다크 그레이 · 매트 metallic 0.2)
5. 데스크 (밝은 우드 그레인 · 3~5 라인 결)
6. 컬럼 (콘크리트 · 회색 노이즈)

모든 텍스처는 Python + PIL 로 프로시저럴 생성 후
bake_material_to_image() 로 UV 맵에 굽고 JPEG export.

결과: assets/models/arenas/arena_worker_office.glb
+ 5장 텍스처 (t_carpet, t_wall, t_part, t_desk, t_col)

5.6 Claude Code · 초기 프로젝트 프롬프트

초기 지시 (2026-07-22) project bootstrap
이번 AI 해커톤의 사전 과제로 만들 게임:

"주중엔 주식으로 벌고, 주말엔 그 돈으로 시장의 세력에게 복수하는
3D 소울라이크 액션 게임"

핵심 요구사항:
- Godot 4.7 · Android APK 목표 · Snapdragon 6xx · 60fps
- 트레이딩 시뮬 (LLM 뉴스 + 봇 시장) + 3D 소울라이크 전투
- 17일 안에 완결 서사 아크 하나 완주 (오프닝 → 튜토 → 3 잡몹 → 보스 → 엔딩)
- 이전 2D 아이소메트릭 시도는 폐기 · 스코프 크리프 절대 금지

가장 먼저 할 일:
1. CLAUDE.md 로 프로젝트 헌장 확정
2. docs/HACKATHON_STRATEGY.md 로 스코프·서사·10일 스프린트
3. .mcp.json 로 도구 셋업 (godot + meshy + blender)

이 초기 지시는 CLAUDE.md 로 굳어져, 이후 모든 세션이 참조하는 프로젝트 헌장이 됐습니다. 스코프 크리프 방지 규칙과 이전 프로젝트의 실패 원인 분석까지 담긴 self-contained 프로젝트 문서가 세션 사이 연속성의 뼈대가 됩니다.

Chapter 06

회고 · 향후 계획

6.1 마주친 장애물들

  • 컨텍스트 관리 — 자동 검증 루프에서 캡처를 살피는 게 가장 큰 소모 요인이었습니다. session-log-skill 로 어느 정도 눌렀지만, 여전히 하루 5~10회는 compact 가 걸립니다.
  • Meshy 얼굴 품질 — 사람 얼굴 표현이 어색해서 컨셉을 정장·후드 쪽으로 우회했습니다. 개선 필요.
  • Cascadeur 학습 곡선 — AI 물리 애니메이션 도구지만 17일 스코프에 안 들어왔습니다. 다음 프로젝트로 미룸.
  • Gemini 웹앱 자동화의 취약성 — API 비용이 부담스러워서 Playwright 로 웹앱을 우회했습니다. 대신 웹 UI 만 바뀌어도 러너를 다시 짜야 합니다.

6.2 회고

사실 저도 해커톤 모집 공고를 보고, 도전을 결심하면서도 남은 기간동안 과연 그럴듯한 플레이어블 데모를 만들 수 있을까? 라는 걱정이 앞섰습니다.

개발자라는 직업을 가지고 있지만, 게임 개발은 사이드 프로젝트로 실패한 경험만 가지고 있었고, 3D 게임 개발은 아예 처음이었습니다.

하지만 AI 도구를 활용한 개발 파이프라인을 구축하고, 자동 검증 루프를 통해 효율적인 개발 환경을 만들면서, 예상보다 훨씬 빠르게 프로토타입을 완성할 수 있었습니다.

이걸 기뻐해야 하는 건지, 슬퍼해야 하는 것인지... 아직은 잘 모르겠습니다만, 앞으로 1~2년만 더 지나면 훨씬 더 완벽한 퀄리티의 게임이 1인 개발로도 완성이 될 수 있겠구나.. 라는 생각이 들었습니다.

이번 기회를 통해, 게임 개발을 위한 AI 파이프라인은 어떻게 짜야할 지 어느 정도 감을 잡았습니다. 본선 진출 여부와 상관 없이, 이번 도전은 1인 개발을 하고 있는 제게 큰 경험이 될 거 같습니다.

이런 기회를 만들어 주셔서 감사하다는 말씀 드리고 싶습니다.

Appendix
A

부록 · 링크 모음

AI 도구 공식 링크

Meshy
meshy.ai
Gemini
gemini.google.com/app
Suno
suno.com
ElevenLabs
elevenlabs.io
Blender MCP
github.com/ahujasid/blender-mcp
Godot MCP
github.com/Coding-Solo/godot-mcp
Mixamo
mixamo.com
Claude Code
claude.com/claude-code

본 프로젝트 산출물

Repository
github.com/Choonham/kospi_avenger
Landing
index.html
Play Guide
game_document.html
Session Skill
github.com/Choonham/session-log-skill
Author Blog
slowflowsoft.com

개발자 연락처

Author
노영준 (choonham)
Email
choonham4@gmail.com
Web
slowflowsoft.com
Blog
slowflowsoft.com/blog
GitHub
github.com/Choonham

이 문서에 나온 AI 도구 사용은 각 서비스의 이용 약관과 라이선스를 따릅니다. Meshy Pro · Suno Pro · ElevenLabs Creator · Gemini · Claude Code 는 각각의 유료 구독 하에 상업 사용이 허용됩니다. Mixamo · game-icons.net · Freesound CC0 자산은 각 라이선스에 명시된 조건으로 사용했습니다.