Godot 4 + Claude Code로 인디게임 만들기 2부 – 제작소 6종 완성과 전투 시스템 설계
1부에서 카드 포지의 데이터 구조와 제작소 로직 3종 세트, 메인 UI까지 다뤘습니다. 2부에서는 남은 제작소 시설(용광로·수리대·분해기)을 완성해 6개 시설 전체를 마무리하고, 이어서 게임의 핵심이라 할 수 있는 전투 시스템을 설계하기 시작한 과정을 정리합니다. 실제로 겪은 버그와 QA 체크포인트도 함께 기록했습니다.
📋 목차
1. 1부 요약 – 어디까지 왔나
1부에서는 Godot MCP 연동, CLAUDE.md 작성, 데이터 구조(CardData·EffectData·MaterialData), 제작소 로직 3종 세트(ForgeManager·InventoryManager·EffectRegistry), 그리고 제작소 메인 화면까지 구현했습니다.
| 제작소 시설 | 1부 종료 시점 상태 |
|---|---|
| 작업대 | ✅ 완료 |
| 효과부여대 | ✅ 완료 |
| 용광로 | 🔄 진행 예정 |
| 수리대 | 🔄 진행 예정 |
| 분해기 | ⏳ 미착수 |
| 덱편성대 | 🔄 진행 예정 |
2부 시작 시점에는 용광로, 수리대, 덱편성대까지 거의 완성된 상태였고, 마지막으로 분해기만 남아있었습니다.
2. 실전에서 만난 버그 – RichTextLabel 정렬 이슈
여러 시설 씬을 작업하던 중, Godot의 RichTextLabel 노드에 존재하지 않는 프로퍼티를 사용해 오류가 발생한 적이 있습니다.
horizontal_alignment 프로퍼티를 설정하려 했지만, 이 프로퍼티는 RichTextLabel에 존재하지 않습니다. (일반 Label 노드에만 있는 프로퍼티입니다.)
존재하지 않는 프로퍼티를 지우고, 대신 텍스트 자체에 BBCode 태그를 삽입해 가운데 정렬을 구현했습니다.
3. QA 체크포인트로 검증하기
여러 시설을 한꺼번에 만들다 보면 "다 됐다"는 보고만 믿고 넘어가기 쉽습니다. 그래서 시설이 완성될 때마다 구체적인 체크포인트를 세워 F5로 직접 확인하는 습관을 들였습니다.
material_changed 시그널이 제대로 발생하지 않으면 재료 바가 갱신되지 않는 버그가 생길 수 있기 때문입니다.
4. 분해기(Salvage Mill) 구현
마지막 남은 시설인 분해기를 구현했습니다. 분해기는 카드를 재료로 되돌리는 기능으로, 실패한 조합이나 필요 없어진 카드를 처리할 수 있게 해줍니다.
설계에서 신경 쓴 디테일
| 디테일 | 이유 |
|---|---|
| 전설 카드도 목록에는 표시, 버튼만 비활성화 | 전설 카드가 목록에서 아예 사라지면 "카드가 없어졌나?" 하는 혼란 방지 |
| 분해 전 결과 미리보기 제공 | 어떤 재료가 몇 개 나올지 미리 알아야 되돌릴 수 없는 선택을 신중히 함 |
| 분해 후 selected_card 초기화 | 이미 사라진 카드를 계속 선택 상태로 두면 참조 오류 발생 가능 |
5. 제작소 6종 완성
분해기가 완성되면서 제작소의 6개 시설이 모두 동작하게 되었습니다.
├─ 작업대 (카드 제작) ✅
├─ 효과부여대 (효과 장착/교체) ✅
├─ 용광로 (카드 승급) ✅
├─ 수리대 (카드 수리) ✅
├─ 분해기 (카드 분해) ✅
└─ 덱편성대 (덱 구성) ✅
제작소 UI 최종 레이아웃
6. 전투 시스템 설계 시작
제작소가 완성되자 다음 단계를 정할 시점이 왔습니다. 도감, 전투 시스템, 설계서 v3 업데이트 중에서 전투 시스템 MVP를 선택했습니다.
전투는 게임에서 가장 중요한 시스템이기 때문에, Claude Code로 바로 구현을 요청하지 않고 먼저 설계를 문서화하는 절차를 거쳤습니다.
전투 시스템 기초 설계 항목
| 설계 항목 | 확인 필요 내용 |
|---|---|
| 턴 구조 | 플레이어 턴(카드 선택→사용) → 적 턴(공격) 반복 |
| 리소스 | HP(체력), 에너지(카드 사용 자원) 필요 여부 |
| 카드 사용 규칙 | 핸드 사이즈, 턴당 드로우 수, 카드별 코스트 |
| 효과 발동 | 기본 대미지 계산 후 확률 효과(예: 화상 30%) 발동 방식 |
MVP 범위 확정
- 플레이어 vs 단일 몬스터 (1:1 전투)
- 턴제 (플레이어 턴 → 적 턴 반복)
- 기본 대미지만 우선 구현 (효과는 이후 단계)
- 승리 조건: 적 HP 0 / 패배 조건: 플레이어 HP 0
7. 턴 구조 결정하기
전투 시스템에서 가장 먼저 확정해야 할 것은 턴 구조와 리소스 시스템이었습니다. 카드 게임에서 이 부분이 게임의 전략성을 결정짓는 핵심이기 때문에, 신중하게 옵션을 비교했습니다.
| 옵션 | 방식 | 장점 | 단점 |
|---|---|---|---|
| 1. 간단한 턴제 | 코스트 없이 매턴 카드 1장 선택 | 구현 쉬움, 진입장벽 낮음 | 전략성 낮음 |
| 2. 에너지 기반 | 매턴 에너지 회복, 카드마다 코스트 | 덱빌딩 전략성 높음 (슬레이 더 스파이어 스타일) | 구현 복잡도 증가 |
8. 2부에서 얻은 교훈
Label과 RichTextLabel처럼 비슷해 보이는 노드도 지원 프로퍼티가 다릅니다. Claude Code가 코드를 작성했다고 끝이 아니라, F5로 직접 실행해서 오류를 확인하는 과정이 항상 필요했습니다.
여러 시설을 연달아 만들 때는 "부족 재료 빨간 표시 확인", "재료 차감 후 메인 화면 갱신 확인"처럼 구체적인 체크포인트를 세워야 놓치는 부분 없이 검증할 수 있었습니다.
분해기처럼 카드를 잃는 액션은 실행 전 결과를 미리 보여주는 것이 사용자 경험에서 중요했습니다.
전투처럼 게임의 중심이 되는 시스템은 Claude Code에게 바로 "만들어줘"라고 하지 않고, 턴 구조·리소스·MVP 범위를 먼저 문서로 확정한 후 구현에 들어가는 순서가 시행착오를 크게 줄여줬습니다.
9. 다음 단계 예고
| Phase | 내용 | 상태 |
|---|---|---|
| Phase 1 | 데이터 구조 (Custom Resource 정의) | ✅ 완료 |
| Phase 2 | 제작소 UI (6개 시설 전체) | ✅ 완료 |
| Phase 3 | 전투 시스템 프로토타입 | 🔄 설계 진행 중 |
| Phase 4 | 던전 루프 연결 | ⏳ 예정 |
| Phase 5 | 밸런싱 & 폴리싱 | ⏳ 예정 |
제작소 6개 시설이 모두 완성되면서 게임의 "준비 단계"가 마무리되었습니다. 3부에서는 턴 구조(간단한 턴제 vs 에너지 기반)를 최종 확정하고, 실제 전투 씬을 Godot에서 구현하는 과정을 다룰 예정입니다. 이후 던전 노드 시스템(전투 노드·보물상자·이벤트 노드·휴식 노드·보스 노드)까지 연결하면 게임의 핵심 루프가 완성됩니다.
1부: 프로젝트 기획 + MCP 연동 + 제작소 로직/UI
2부: 제작소 6종 완성 + 전투 시스템 설계 ← 현재 글
3부: 전투 시스템 구현 & 던전 루프 (예정)
'AI.Codeing' 카테고리의 다른 글
| Godot 4 + Claude Code로 인디게임 만들기 3부 – 전투 시스템 설계 문서화 (0) | 2026.07.12 |
|---|---|
| Godot 4 + Claude Code로 인디게임 만들기 1부 – 카드 포지(Card Forge) 개발 일지 (0) | 2026.07.10 |
| Claude Code + 힉스필드(Higgsfield) MCP 연동 유튜브 쇼츠 완전 자동화 2026 (0) | 2026.07.08 |
| AI 프롬프트 작성법 완벽 가이드 2026 – 역할 지정과 원하는 결과가 핵심 (0) | 2026.07.05 |
| 로블록스 게임 AI 바이브코딩으로 만들기 2026 – MCP 연결부터 실전 게임까지 (0) | 2026.07.04 |