728x90
🎮 프로젝트 개요
"김치 타워 디펜스" 소개
- 제작자: 훈이겜터 (유튜브 크리에이터) youtube.com/@hun2game
- 플랫폼: 로블록스 (Roblox)
- 장르: 한국형 타워 디펜스
- 개발 방식: AI 코딩 도구 활용 (전체 코드의 95% AI 생성)
- 특징: 한국 전통 음식을 테마로 한 독특한 타워 디펜스 게임
게임 컨셉
핵심 메커니즘:
- 김치, 된장, 고추장 등 한국 음식 타워로 적 방어
- 발효 시스템: 시간이 지날수록 타워가 강해짐
- 김장 보너스: 특정 조합으로 추가 효과 발생
- 한국 전통 음악과 비주얼 효과
📋 프로젝트 준비 및 계획
1. 개발 목표 설정
## 훈이겜터 - 김치 타워 디펜스 개발 목표
### 주요 목표
1. AI 도구만으로 로블록스 게임 완성 가능성 검증
2. 유튜브 콘텐츠용 개발 과정 전체 문서화
3. 한국적 특색을 살린 재미있는 게임플레이 구현
4. 초보자도 따라할 수 있는 AI 게임 개발 가이드 제작
### 타겟 오디언스
- 로블록스를 즐기는 한국 유저
- 게임 개발에 관심있는 유튜브 구독자
- AI 코딩에 호기심을 가진 초보 개발자
2. 기능 분해 및 로드맵
전체 프로젝트를 작은 단위로 분해:
1주차: 기본 시스템
├── Day 1-2: 맵 디자인 및 경로 시스템
├── Day 3-4: 기본 타워 (김치, 깍두기, 파김치)
└── Day 5-7: 적 웨이브 시스템
2주차: 핵심 메커니즘
├── Day 8-9: 발효 시스템 구현
├── Day 10-11: 김장 보너스 콤보
└── Day 12-14: 밸런싱 및 난이도 조정
3주차: 폴리싱
├── Day 15-17: UI/UX 개선
├── Day 18-19: 사운드 및 이펙트
└── Day 20-21: 버그 수정 및 최적화
3. AI 도구 환경 구성
-- 개발 환경 설정
local devTools = {
primaryAI = "Claude Opus 4", -- 복잡한 시스템 설계
codeAssist = "Cursor", -- 실시간 코드 작성
debugging = "Claude Sonnet 4", -- 버그 해결
documentation = "ChatGPT", -- 문서 작성 보조
versionControl = "GitHub" -- 코드 및 프롬프트 관리
}
🏗️ AI를 활용한 개발 프로세스
1. 초기 프로토타입 생성 (원샷 접근법)
첫 번째 프롬프트 - 게임 뼈대 구축
훈이겜터 프롬프트 #1:
"로블록스에서 '김치 타워 디펜스' 게임의 기본 구조를 만들어줘.
요구사항:
1. 한국 전통 마을을 배경으로 한 맵
2. 적들이 따라갈 구불구불한 돌담길 경로
3. 타워 설치 가능한 논/밭 그리드 시스템
4. 김치 항아리 모양의 기본 타워
5. UI: 김치 포인트(화폐), 체력(한옥 내구도), 웨이브 정보
기술 요구사항:
- ServerScriptService에 메인 게임 로직
- ReplicatedStorage에 공유 모듈
- 모든 RemoteEvent는 보안 검증 포함
- 메모리 효율적인 오브젝트 풀링
- 버그 없고, 익스플로잇 방지 코드"
AI 응답으로 생성된 기초 구조
-- ServerScriptService/GameManager.lua
local GameManager = {}
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- 게임 상태 관리
GameManager.State = {
currentWave = 0,
kimchiPoints = 100,
villageHealth = 100,
isGameActive = false,
towers = {},
enemies = {}
}
-- 경로 시스템 초기화
function GameManager:InitializePath()
local pathPoints = workspace.Map.Path:GetChildren()
table.sort(pathPoints, function(a, b)
return tonumber(a.Name) < tonumber(b.Name)
end)
return pathPoints
end
-- 타워 설치 검증 및 처리
function GameManager:PlaceTower(player, position, towerType)
-- 보안 검증
if not self:ValidatePlacement(player, position, towerType) then
return false
end
-- 김치 포인트 차감
local cost = self:GetTowerCost(towerType)
if self.State.kimchiPoints < cost then
return false
end
-- 타워 생성
local tower = self:CreateTower(position, towerType)
table.insert(self.State.towers, tower)
self.State.kimchiPoints -= cost
return true
end
2. 핵심 시스템 반복 개발
발효 시스템 추가
훈이겜터 프롬프트 #15:
"김치 타워 디펜스에 '발효 시스템'을 추가해줘.
상세 요구사항:
1. 모든 김치 타워는 시간이 지나면서 '발효 레벨' 상승
2. 발효 단계: 신김치(0-30초) → 적당히 익은 김치(30-90초) → 묵은지(90초+)
3. 발효 레벨에 따른 효과:
- 데미지 증가: 레벨당 +20%
- 공격 범위 증가: 레벨당 +10%
- 특수 효과: 묵은지는 적 슬로우 효과 추가
4. 시각적 표현: 타워 색상이 점점 진해짐
5. UI에 발효 진행도 표시
기존 시스템과 충돌없이 모듈화해서 구현해줘."
AI가 생성한 발효 시스템
-- ReplicatedStorage/Modules/FermentationSystem.lua
local FermentationSystem = {}
FermentationSystem.Stages = {
{name = "신김치", duration = 30, damageMultiplier = 1.0, rangeMultiplier = 1.0},
{name = "적당히익은김치", duration = 60, damageMultiplier = 1.2, rangeMultiplier = 1.1},
{name = "묵은지", duration = math.huge, damageMultiplier = 1.5, rangeMultiplier = 1.2}
}
function FermentationSystem:Initialize(tower)
tower.FermentationData = {
startTime = tick(),
currentStage = 1,
level = 0
}
-- 발효 진행 코루틴
coroutine.wrap(function()
while tower.Parent do
self:UpdateFermentation(tower)
wait(1)
end
end)()
end
function FermentationSystem:UpdateFermentation(tower)
local data = tower.FermentationData
local elapsedTime = tick() - data.startTime
-- 단계 확인 및 업데이트
for i, stage in ipairs(self.Stages) do
if elapsedTime < stage.duration then
if data.currentStage ~= i then
data.currentStage = i
self:ApplyStageEffects(tower, stage)
self:UpdateVisuals(tower, i)
end
break
end
end
end
김장 보너스 콤보 시스템
훈이겜터 프롬프트 #23:
"김장 보너스 시스템을 구현해줘. 특정 타워 조합시 추가 효과 발생.
콤보 리스트:
1. '김장 기본 세트': 배추김치 + 깍두기 + 파김치 = 모든 타워 공격속도 +30%
2. '매운맛 폭탄': 고추장 타워 3개 이상 = 스플래시 데미지 +50%
3. '발효 마스터': 묵은지 3개 이상 = 전체 발효 속도 2배
4. '전통의 맛': 된장 + 고추장 + 간장 = 적 처치시 추가 김치포인트
5. '김치 냉장고': 모든 종류 타워 1개씩 = 발효 단계 유지 & 즉시 최대 레벨
시각적으로 콤보 발동시 이펙트와 UI 알림 표시"
3. 디버깅 및 문제 해결
실제 디버깅 사례
훈이겜터 프롬프트 #45:
"버그 발견: 김치 타워를 빠르게 여러 개 설치하면
김치포인트가 음수가 되는 문제가 있어.
현재 코드:
[PlaceTower 함수 코드 붙여넣기]
문제 상황:
- 클라이언트가 빠르게 여러 요청 전송
- 서버가 동시에 처리하면서 포인트 검증 실패
- 결과적으로 김치포인트가 -50같은 음수값
어떻게 해결할 수 있을까?
로블록스 환경에 맞는 해결책을 제시해줘."
AI의 해결책
-- 개선된 타워 설치 시스템
local placementCooldowns = {}
local COOLDOWN_TIME = 0.5
function GameManager:PlaceTower(player, position, towerType)
local userId = player.UserId
-- 쿨다운 체크
if placementCooldowns[userId] and
tick() - placementCooldowns[userId] < COOLDOWN_TIME then
return false, "너무 빠른 설치 시도"
end
-- 트랜잭션 방식으로 포인트 처리
local cost = self:GetTowerCost(towerType)
-- 원자적 연산으로 포인트 확인 및 차감
local success = false
local currentPoints = self.State.kimchiPoints
if currentPoints >= cost then
self.State.kimchiPoints = currentPoints - cost
success = true
placementCooldowns[userId] = tick()
end
if success then
local tower = self:CreateTower(position, towerType)
table.insert(self.State.towers, tower)
return true
end
return false, "김치포인트 부족"
end
📝 체계적인 문서화 프로세스
1. 프로젝트 구조 및 문서 체계
김치타워디펜스/
├── src/
│ ├── ServerScriptService/
│ ├── ReplicatedStorage/
│ └── StarterPlayer/
├── docs/
│ ├── PROMPTS.md # 모든 AI 프롬프트 기록
│ ├── DEVELOPMENT_LOG.md # 일일 개발 일지
│ ├── ARCHITECTURE.md # 시스템 설계 문서
│ ├── BALANCING_SHEET.md # 밸런싱 데이터
│ └── YOUTUBE_SCRIPT.md # 유튜브 영상 대본
├── assets/
│ ├── sounds/ # 효과음 (김치 담그는 소리 등)
│ └── images/ # 텍스처 및 UI 이미지
└── README.md # 프로젝트 전체 설명
2. PROMPTS.md 작성 예시
# 김치 타워 디펜스 AI 프롬프트 모음
## [발효 시스템] - 2025.01.15
### 목표
김치가 시간이 지나면서 익어가는 발효 시스템 구현
### 사용한 프롬프트
김치 타워 디펜스에 '발효 시스템'을 추가해줘.
[전체 프롬프트 내용]
### AI 응답 핵심
- FermentationSystem 모듈 생성
- 3단계 발효 과정 구현
- 시각적 피드백 시스템
### 결과
- ✅ 성공: 발효 시스템 정상 작동
- ⚠️ 수정: 초기에는 발효 시간이 너무 빨라서 조정
- 📝 배운점: 시간 기반 시스템은 tick() 사용이 효율적
### 관련 커밋
- `a1b2c3d`: 발효 시스템 초기 구현
- `e4f5g6h`: 발효 시간 밸런싱 조정
### 유튜브 타임스탬프
- 영상 #3 - 15:30 ~ 22:45
3. 개발 일지 작성법
# 훈이겜터 김치 타워 디펜스 개발 일지
## Day 5 - 2025.01.20
### 🎯 오늘의 목표
- [x] 김장 보너스 시스템 구현
- [x] 타워 업그레이드 UI 제작
- [ ] 보스 몬스터 "김치 도둑" 구현 (내일로 연기)
### 💡 주요 개발 내용
#### 김장 보너스 시스템
AI와 5번의 반복 작업 끝에 완성. 주요 이슈:
- 처음엔 콤보 감지가 제대로 안됨
- 프롬프트에 "인접한 타워"의 정의를 명확히 해서 해결
- 최종적으로 5가지 콤보 모두 정상 작동
#### 코드 스니펫
```lua
-- 콤보 체크 로직
function checkKimjangCombo(towers)
-- AI가 생성한 효율적인 콤보 확인 코드
end
```
🐛 버그 및 해결
문제: 타워 판매시 콤보가 즉시 해제되지 않음
- 원인: 이벤트 리스너 누락
- 해결: Tower.Removed 이벤트에 콤보 재계산 추가
테스트 플레이 피드백
- 구독자 10명과 테스트 진행
- "김장 보너스가 너무 강력하다" → 효과 30% → 20%로 너프
- "콤보 발동 이펙트가 멋있다" → 유지
유튜브 콘텐츠 메모
- 김장 보너스 구현 과정 타임랩스로 편집
- AI와의 대화 과정 자막으로 표시
- 실패한 시도들도 정직하게 보여주기
다음 계획
- 보스 몬스터 "김치 도둑" 구현
- 스테이지 10까지 밸런싱
- 배경음악 추가 (국악 리믹스)
300x250
🎮 로블록스 특화 구현
1. 로블록스 최적화 기법
훈이겜터 프롬프트 #67:
"김치 타워 디펜스를 로블록스 환경에 최적화해줘.
요구사항:
1. Part 개수 최소화
- 적 100마리가 동시에 나와도 렉 없이
- 오브젝트 풀링으로 김치 투사체 재사용
2. 네트워크 최적화
- 불필요한 RemoteEvent 호출 최소화
- 중요한 정보만 클라이언트 동기화
3. 모바일 최적화
- 그래픽 품질 자동 조절
- 터치 컨트롤 최적화
구체적인 코드와 함께 설명해줘."
2. 보안 및 안티 치트
-- 서버 검증 시스템
local AntiCheat = {}
function AntiCheat:ValidateTowerPlacement(player, position, towerType)
-- 1. 플레이어 소유 김치포인트 검증
local serverPoints = PlayerData[player].kimchiPoints
local towerCost = TowerCosts[towerType]
if serverPoints < towerCost then
return false, "김치포인트 조작 감지"
end
-- 2. 위치 유효성 검증
local gridPosition = self:WorldToGrid(position)
if not self:IsValidGridPosition(gridPosition) then
return false, "잘못된 위치"
end
-- 3. 쿨다운 검증
if self:IsOnCooldown(player) then
return false, "너무 빠른 설치"
end
return true
end
💡 실전 팁과 노하우
1. 효과적인 프롬프트 작성법
🎯 좋은 프롬프트 예시:
"배추김치 타워의 공격 이펙트를 만들어줘.
- 김치 조각이 포물선으로 날아감
- 맞은 적은 빨간 김치 국물 파티클
- 데미지 숫자는 한글 폰트로 표시 ('10 데미지' → '십 피해')
- 사운드: 김치 썰리는 소리
- 성능을 위해 최대 10개 이펙트만 동시 재생"
❌ 나쁜 프롬프트 예시:
"김치 타워 공격 이펙트 만들어줘"
2. AI와의 효과적인 협업
협업 패턴:
1. 기획 단계
└→ "김치 타워 디펜스의 핵심 재미 요소 5가지 제안해줘"
2. 구현 단계
└→ "제안한 발효 시스템을 로블록스 코드로 구현해줘"
3. 디버깅 단계
└→ "이 에러 메시지가 나오는 이유와 해결법 알려줘"
4. 최적화 단계
└→ "이 코드를 로블록스 모바일에서도 부드럽게 실행되도록 최적화해줘"
3. 흔한 실수와 해결법
## 자주 발생하는 문제들
### 1. AI 코드 과다 생성
**문제**: AI가 불필요하게 복잡한 시스템 생성
**해결**: "최소한의 코드로", "심플하게" 같은 제약 추가
### 2. 로블록스 API 버전 문제
**문제**: AI가 구버전 또는 존재하지 않는 API 사용
**해결**: "로블록스 최신 API 사용", 공식 문서 링크 제공
### 3. 성능 문제
**문제**: AI가 만든 코드가 너무 무거움
**해결**: "모바일에서도 실행 가능하게", "최대 100개 오브젝트" 등 제한
### 4. 한국어 처리
**문제**: 한글 폰트, 인코딩 문제
**해결**: 프롬프트에 "UTF-8 인코딩", "한글 지원" 명시
📊 밸런싱과 게임플레이
1. AI를 활용한 밸런싱
훈이겜터 프롬프트 #89:
"김치 타워 디펜스의 밸런싱 시스템을 만들어줘.
데이터:
- 10개 스테이지
- 5종류 김치 타워
- 8종류 적
요구사항:
1. 스테이지별 난이도 곡선 (완만한 상승)
2. 타워별 가성비 균형
3. Excel/CSV로 쉽게 조정 가능한 구조
4. 자동 밸런싱 테스트 시스템
구독자들이 '너무 쉽지도, 너무 어렵지도 않게'
느낄 수 있는 밸런싱을 목표로 해줘."
2. 플레이 테스트 자동화
-- AI가 생성한 자동 플레이테스트 시스템
local AutoPlayTest = {}
function AutoPlayTest:RunStageTest(stageNumber)
local results = {
clearRate = 0,
averageTime = 0,
usedTowers = {},
kimchiPointsRemaining = {}
}
-- 100번 시뮬레이션 실행
for i = 1, 100 do
local simulation = self:SimulateStage(stageNumber)
-- 결과 수집 및 분석
end
return self:AnalyzeResults(results)
end
🎬 유튜브 콘텐츠 제작
1. 개발 과정 콘텐츠화
## 훈이겜터 유튜브 시리즈 구성
### EP1. "AI로 로블록스 게임 만들기 도전!"
- 기획 과정 공개
- 첫 AI 프롬프트 시도
- 첫 프로토타입 플레이
### EP2. "김치가 발효되는 타워 디펜스?!"
- 발효 시스템 구현 과정
- 시행착오와 디버깅
- 구독자 아이디어 반영
### EP3. "김장 보너스의 비밀"
- 콤보 시스템 설계
- 밸런싱 고민
- 테스트 플레이 반응
### EP4. "드디어 완성! 김치 타워 디펜스"
- 최종 결과물 소개
- 전체 개발 회고
- 구독자와 함께 플레이
2. 교육 콘텐츠 제작
콘텐츠 아이디어:
1. "AI 프롬프트 잘 쓰는 법" 튜토리얼
2. "로블록스 스튜디오 + AI 환경 설정"
3. "실시간 AI 코딩 라이브"
4. "구독자 아이디어 → AI 구현" 시리즈
🚀 프로젝트 완성 및 배포
1. 최종 체크리스트
## 김치 타워 디펜스 출시 전 체크리스트
### 게임 완성도
- [ ] 10 스테이지 모두 클리어 가능
- [ ] 모든 타워와 콤보 정상 작동
- [ ] 모바일/PC 크로스 플레이 테스트
- [ ] 한글 폰트 및 UI 정상 표시
### 문서화
- [ ] 모든 프롬프트 PROMPTS.md에 기록
- [ ] 개발 일지 완성
- [ ] 아키텍처 문서 작성
- [ ] 유튜브 영상 스크립트 준비
### 로블록스 스토어
- [ ] 게임 설명 작성 (한/영)
- [ ] 스크린샷 10장 준비
- [ ] 게임 아이콘 및 썸네일
- [ ] 태그 설정 (#타워디펜스 #한국 #김치)
### 커뮤니티
- [ ] 디스코드 서버 개설
- [ ] 첫 업데이트 로드맵 공개
- [ ] 버그 리포트 가이드
2. 배포 후 관리
-- 플레이어 피드백 수집 시스템
local FeedbackSystem = {}
function FeedbackSystem:Initialize()
-- 게임 내 피드백 UI
self:CreateFeedbackButton()
-- 자동 통계 수집
self:TrackPlayerMetrics({
"평균 플레이 시간",
"가장 많이 사용하는 타워",
"가장 어려워하는 스테이지",
"김장 콤보 사용률"
})
end
🎯 결론 및 핵심 교훈
성공적인 AI 게임 개발의 핵심
- 명확한 비전: "김치 타워 디펜스"라는 구체적 목표
- 체계적 접근: 큰 문제를 작은 단위로 분해
- 반복적 개선: AI와 지속적 대화로 품질 향상
- 투명한 문서화: 모든 과정을 기록하여 가치 창출
훈이겜터의 개발 철학
"AI는 도구일 뿐, 창의성은 인간에게서 나온다"
- AI가 코드를 95% 작성했지만
- 게임의 재미는 100% 인간의 아이디어
- 구독자와 함께 만든 게임이 진짜 의미
다음 프로젝트 예고
## 훈이겜터의 다음 도전
"김치 타워 디펜스 2: 한식 뷔페 대전"
- 멀티플레이어 PvP 모드
- 50가지 한국 음식 타워
- AI가 만드는 일일 도전 과제
- 구독자 참여형 콘텐츠 확대
"과연 AI만으로 MMO를 만들 수 있을까?"
이렇게 체계적인 접근과 꼼꼼한 문서화를 통해, AI 도구를 활용한 로블록스 게임 개발은 누구나 도전할 수 있는 현실적인 목표가 됩니다. 중요한 것은 "vibe coding"이 아닌 "정밀한 협업"이며, 모든 과정을 투명하게 기록하여 커뮤니티와 함께 성장하는 것입니다.
728x90
그리드형(광고전용)
댓글