2026.03.24AI 개발 패턴
게임개발BabylonJSClaudeCode맵제작인간AI협업분업패턴3D던전크롤러

인간은 칼질하고, AI는 대칭 복사한다 — 3D 던전 맵 제작에서 발견한 인간-AI 분업 패턴

들어가며: 맵 에디터 앞에서의 깨달음

3D 던전 크롤러 게임(myDGC)을 만들고 있습니다. 96,000줄이 넘는 코드베이스를 혼자서 — 정확히는, Claude와 둘이서 — 키워가고 있죠. 그 과정에서 자연스럽게 터득한 인간-AI 분업 패턴이 있는데, 가장 극적으로 드러난 순간이 바로 맵 제작이었습니다.

높이 0, 1, 2 세 단계로 구성된 전투 맵의 서쪽(W) 절반을 손으로 직접 깎고, 동쪽(E) 절반은 Claude에게 "대칭 복사해줘"라고 던진 겁니다. 단순한 작업 같죠? 그런데 여기서 예상치 못한 삽질이 시작됩니다.

3D 던전 맵의 높이 레벨 구조

문제 1: "레벨 0만 복사했잖아"

W쪽을 정성스럽게 수정한 뒤, Claude에게 E쪽 대칭 복사를 요청했습니다. 결과물을 확인하니 — 평지(레벨 0)만 복사되어 있더군요. 레벨 1, 2의 언덕과 고지대는 통째로 빠져 있었습니다.

이건 AI와 협업할 때 자주 마주치는 함정입니다. "복사해줘"라는 지시가 인간에게는 "전부 다"를 의미하지만, AI는 가장 명시적인 레이어만 처리하는 경향이 있다는 것. 지적하니 바로 레벨 1, 2도 완료했지만, 이 경험은 이후 협업 방식을 바꾸는 계기가 됩니다.

본론: 이 프로젝트에서 발견한 분업 공식

맵 대칭 복사 사건은 빙산의 일각이었습니다. 실제로 이 프로젝트 전반에 걸쳐 **"인간이 방향을 잡고, AI가 반복 작업을 실행한다"**는 패턴이 반복되고 있었거든요.

패턴 A: 인간이 문제를 발견하고, AI가 원인을 추적한다

예를 들어, 유닛이 이동 명령을 받았는데 제자리에서 허공을 공격하다 죽는 버그가 있었습니다. 저는 "이동이 안 돼"라고만 말했고, Claude는 원인 체인을 역추적했습니다.

문제: 수동 이동 명령을 내려도 유닛이 제자리에서 허공을 공격하다 죽음

원인 체인:

  1. issueMoveCommand → 커맨드만 큐잉하고 유닛 상태는 COMBAT 그대로
  2. UnitAI (0.3초마다) → 적이 사정거리 내면 enterCombat() → COMBAT 유지
  3. CombatSystem (0.1초마다) → 동일하게 enterCombat() → COMBAT 유지
  4. MovementSystem.updateif (unit.state === COMBAT) return → 이동 안 함
  5. 결과: 커맨드는 있지만 이동은 영원히 실행 안 됨

4개의 시스템이 서로 물고 물리는 상태 교착. 사람이 눈으로 디버깅하려면 한참 걸렸을 일을, AI가 코드를 읽고 흐름을 따라가서 정확히 짚어냈습니다.

패턴 B: 인간이 체감을 판단하고, AI가 선택지를 제시한다

전투에서 플레이어가 맞기만 하고 반격을 안 하는 것처럼 보이는 문제가 있었습니다. 기술적으로는 데미지 계산은 정상이었지만, 시각적으로 공격 모션이 씹히고 있었죠.

Claude가 세 가지 방안을 제시했습니다:

code
| 방안 | 설명                          | 체감              |
|------|-------------------------------|-------------------|
| A    | attack 애니메이션이 hit를 강제 중단 | 반격하는 느낌      |
| B    | hit 모션에 쿨다운 추가            | 둘러싸여도 싸우는 느낌 |
| C    | A+B 조합                       | 가장 자연스러움     |

기술적 판단은 AI가, "어떤 느낌이 좋은가"라는 게임 디자인 판단은 인간이. 결국 C 방안을 선택했고, 피격 쿨다운 1.5초 + 공격 우선 로직이 들어갔습니다.

패턴 C: 인간이 예외를 짚고, AI가 보정한다

높이 차이에 따른 근접 공격 제한을 구현할 때도 마찬가지였습니다. Claude가 처음 제안한 건 "높이 차이 1 이상이면 근접 불가"였습니다.

근접 유닛(range ≤ 1): 높이 차이 1 이상이면 공격 불가 (같은 높이에서만 근접 공격 가능)

이렇게 할까요? 아니면 높이 차이 1까지는 근접 허용할까요?

저는 "높이 1 차이까지는 허용"이라고 답했습니다. 게임 플레이 관점에서 바로 옆 계단 한 칸 차이인데 공격이 안 되면 답답하니까요. 결과적으로:

typescript
// 최종 로직
// 0 → 1 (차이 1): 근접 공격 가능 ✓
// 1 → 2 (차이 1): 근접 공격 가능 ✓  
// 0 → 2 (차이 2): 근접 공격 불가 ✗

이런 미세한 게임 디자인 결정은 코드만 봐서는 나올 수 없습니다. 플레이해본 사람의 직관이 필요하죠.

게임 개발 중 높이에 따른 전투 시스템 설계

핵심 교훈: 인간-AI 맵 제작 분업의 원칙

이 프로젝트를 통해 정리한 분업 원칙입니다:

인간이 잘하는 것AI가 잘하는 것
시각적/체감적 판단 ("이게 자연스러운가")반복 작업 (대칭 복사, 패턴 적용)
예외 케이스 발견 ("이건 좀 이상한데")원인 체인 역추적 (4개 시스템 교차 분석)
게임 디자인 결정 (허용 범위 설정)선택지 구조화 (방안 A/B/C 정리)
최종 승인 ("이 방향으로 가자")일관성 유지 (양쪽 시스템 동시 수정)

그리고 가장 중요한 교훈:

AI에게 "복사해줘"라고 할 때는, 복사 범위를 명시하세요. 레벨 0만 복사하고 끝내는 불상사를 막으려면요.

마치며

96,000줄짜리 게임을 혼자 만들 수 있었던 건, 정확히는 혼자가 아니었기 때문입니다. 인간이 방향타를 잡고 AI가 노를 젓는 — 이 분업이 자리 잡으면, 개인 개발자도 상당히 복잡한 시스템을 구축할 수 있다는 걸 매일 체감하고 있습니다.

다음에는 이 전투 시스템 위에 스킬 트리를 올리려 합니다. 물론, 제가 스킬 밸런싱을 설계하고 Claude가 구현하는 — 이미 익숙해진 그 패턴으로요.