작업하며 노트 끄적끄적내용. 그 그뒤부터 내용은 본격적으로 문서화 하였습니다. 나눠서 하자니 분류도 애매하고 .. 개발은 Antigravity를 메인으로 사용하고 IDE에 Codex, kilo를 추가로 설치하여 작업하고있습니다.
IDE 작업 예시
1. 아이콘 제작 프롬프트
### A. Back (`Icon_Back`)#### 이미지 사이즈- `512x512` (기본)- 고해상도 필요 시 `1024x1024`#### Positive Prompt```textUI button icon for "Back", red curved arrow pointing left, wooden button frame with metal rim,game interface asset, game UI icon, isolated on white background, chunky vector style, wood and stone texture,Kingdom Rush art style, 2D vector art, flat cartoon style, thick bold outlines, vibrant saturated colors,hand-drawn game asset, Flash game aesthetic, cel-shaded, high contrast, 1:1 composition, 512x512```#### Negative Prompt```texttext, realistic, 3D render, complex details, thin lines, watermark
2. 피드백 후 정리 보완작업
피드백 내용과 대응 요청(볼드는 수정요청내역)
1.중앙 세로 이음선 제거
배경 중앙에 seam(경계선)처럼 보이는 라인이 있어 품질이 떨어져 보입니다. 배경 스프라이트/타일 정렬부터 수정하는 게 1순위입니다.(Scene에서 생긴 그리드이기 떄문에 작업안해도됨)
2.스테이지 선택 노드 가독성 강화
현재 STAGE SELECT가 배경과 비슷한 톤이라 눈에 덜 띕니다.
선택 링(펄스), 외곽 글로우, 노드 그림자 추가 추천. (ComfyUI가 아닌 직접 GPT를 이용해서 생성 할 수 있을 떄만 대응)
3.상단 타이틀 대비 개선
WORLD MAP 텍스트가 배경 위에서 약합니다.
반투명 배너 또는 텍스트 외곽선/드롭섀도우를 넣어 가독성 확보하세요. (메이플 폰트 링크 후 연동)
4.하단 버튼 의미 분리
두 버튼의 기능이 직관적으로 안 보입니다.
아이콘 크기 키우고, 짧은 라벨(예: HERO, UPGRADE) 또는 툴팁을 붙이세요.
5.버튼 배치 균형
하단 버튼이 맵 오브젝트 위에 떠 있는 느낌입니다.
공통 하단 바(패널) 위에 정렬하면 UI 체계가 안정됩니다.
6.상태 정보 추가
스테이지에 클리어/잠금/신규 상태를 표시하세요(별, 자물쇠, 느낌표).
월드맵의 진행감이 크게 좋아집니다.
7. 클릭 피드백 강화
버튼/노드에 hover/press 스케일(예: 1.0→0.93→1.0), 클릭 SFX를 강하게 주면 조작감이 좋아집니다.
8.안전영역 대응
버튼 위젯으로 추가하고. 컨텐츠사이즈필터랑 레이아웃 그룹 추가.
하단 버튼 규격화 가능하도록 모듈화(이미지와 텍스트 수정하도록)
하단 버튼 공통 모듈화
** SafeArea 작업**
2026-02-14 개발일지 (feat.
월드맵에서 전투로 — UI 시스템 완성과 게임씬 설계
월드맵 UI를 프로덕션 수준으로 끌어올리고, 게임씬 전투 루프의 설계 문서를 확정한 하루. "버튼 하나하나에 시스템이 있고, 전환 하나하나에 설계가 있다."
🎯 오늘의 목표
월드맵 UI 완성도 향상 — 스테이지 노드, 액션 버튼, 사이드 보더를 프리팹 기반으로 안정화
씬 전환 Fade 효과 — 모든 씬 전환에 FadeOut/FadeIn 적용
게임씬 구현 플랜 — NotebookLM 킹덤러쉬 분석 데이터를 기반으로 전투 루프 설계 문서 작성
📦 커밋 요약
시간
커밋
내용
16:09
a9a937e
월드맵 UI 워크플로우, 에셋, 문서 일괄 적용
17:19
501258b
UIActionButtonItem 프리팹 추가 + 하단바 레이아웃 개선
20:34
faf18d5
UIStageNode 고도화 + 사이드보더 실행 플랜 추가
21:11
347805d
사이드보더 구조 툴 + SafeArea 바인딩
21:28
0a4937d
사이드보더 아트 에셋 생성 + 프리팹 바인딩
22:14
51d8495
UIStageNode 시각 상태 규칙 정리
🏗️ 1. UIStageNode 시스템 고도화
문제
스테이지 버튼이 단순 Button + Text로만 되어 있어, 잠금 상태/클리어 등급/선택 하이라이트를 표현할 수 없었음.
이 지표들이 먼저 정의되면, 코드를 짤 때 자연스럽게 로깅 포인트를 넣게 되고, "이 값이 어디서 튀는지" 추적이 가능해진다.
3. Disposable Tool 패턴의 위력
사이드보더 구조 생성, UIStageNode 검증, 에셋 바인딩 — 이 모든 작업을 일회성 에디터 스크립트로 처리하고 즉시 삭제했다. MCP로 개별 오브젝트를 하나씩 조작하는 것보다 Editor Script API를 활용한 일괄 처리가 훨씬 안정적이고 재현 가능하다.
📋 Disposable Tools (생성 → 사용 → 삭제)
Assets/Scripts/Kingdom/Editor/
├── WorldMapSideBorderStructureTool.cs ← 사이드보더 구조 자동 생성
├── WorldMapStageNodeAutoLayoutTool.cs ← 스테이지 노드 배치 도구
└── WorldMapStageNodeValidationTool.cs ← 스테이지 노드 프리팹 검증
🔄 오늘의 작업 흐름
1. 월드맵 UI 개선 (오전~오후)
├── UIActionButtonItem 프리팹 + 레이아웃
├── UIStageNode ViewModel 바인딩 + 시각 규칙
└── 사이드보더 구조/에셋/바인딩
2. 씬 전환 Fade (오후)
├── AppManagerBase.ChangeScene() 확장
├── _needsFadeIn 플래그 추가
└── InitScene → TitleScene fade 제외
3. 게임씬 설계 (저녁)
├── NotebookLM 질의 4건 (HUD/타워/경제/피해공식/UI인터랙션)
├── 기존 플랜 → 보강본 작성 (1차)
├── 사용자 편집 (구조 재정리, KPI/위험요소 추가)
└── 2차 보강 (피해 공식, UI 흐름, 스키마 추가)
📊 수치 요약
항목
수량
커밋
6건
신규/수정 스크립트
~12개
프리팹 생성/수정
4개 (UIStageNode, UIActionButtonItem, WorldMapView, SideBorder)
문서 작성/보강
5개 (사이드보더 플랜, 버튼 프리팹 플랜, 게임씬 플랜 등)
NotebookLM 질의
4건
컴파일 에러
0 (최종 검증 완료)
---
3. 플랜 보완하기!!
제미나이 프로 모델로 플랜을 만들후 제미나이 -> 클루드 -> 코덱스 -> 제미나이 계속 이렇게 플랜을 보강하면 (토큰 광탈) 플랜이 매우 단단해진다. 이후 Task세팅하고 코덱스나 클루드로 코드작업하면 한번에 엄청 길게 작업하면서도 매우 안정적으로 진행이 가능하다.
4. 스테이지 버튼도 모듈화
5. 작업이 너무 오래걸린다... 이제부터 코덱스 스파크 모델로 코드구현을 해보자! 생각보단? 빠르지 않은거 같은데 변경 내역을 자세히 못봐서 그런거 같기도하다.
6. 다음은 코덱스 <-> 오퍼스4.6 으로 게임씬 구현 플랜 내용이다. 해당 내용을 가지고 이후에 클루드 코드의 코딩을 진행 그러면 정말 한참을 짠다
StageConfig와 WaveConfig의 관계: 기존 StageConfig SO는 월드맵 표시용(위치/이름/해금)이고, WaveConfig는 전투 실행용(웨이브/골드/적). StageConfig.StageId를 키로 1:1 매핑하되, SO는 분리 유지한다. StageConfig에 WaveConfig 참조 필드를 추가하여 연결한다.
9.1 WaveConfig (SO)
StageId — StageConfig.StageId와 1:1 매핑
InitialGold
InitialLives
StarThresholds[] — 3별/2별 판정 기준 (남은 생명력)
Wave[]
WaveIndex
SpawnEntries[]
EnemyId
Count
SpawnInterval
PathId
SpawnDelay
BonusGoldOnEarlyCall
IsBossWave
9.2 TowerConfig (SO)
TowerId
TowerType (Archer/Barracks/Mage/Artillery)
DamageType (Physical/Magic/True)
BuildCost
SellRate (회수 비율, 예: 0.6)
CanTargetAir
Levels[]:
Damage, FireRate, Range, UpgradeCost
BarracksData (병영 전용, TowerType == Barracks일 때만 사용):
SoldierCount — 소환 병사 수 (기본 3)
SoldierHP, SoldierArmor, SoldierDamage
RespawnCooldown — 병사 재소환 대기 시간
RallyRange — 집결 위치 지정 가능 반경
BranchOptions[] (Lv4 분기):
BranchId, BranchName, BranchCost
Abilities[] (특수 능력, 개별 비용)
9.3 EnemyConfig (SO)
EnemyId
HP
ArmorPhysical (% 감소)
ArmorMagic (% 감소)
MoveSpeed
GoldBounty
DamageToBase (탈출 시 생명력 차감)
IsFlying
IsBoss
IsInstaKillImmune
SpawnOnDeath[] (하수인 소환 시)
9.4 HeroConfig (SO)
HeroId
HeroName
HP, Armor, MoveSpeed
AttackDamage, AttackRange, AttackSpeed
Skills[]:
SkillId, SkillType (Passive/Active/Ultimate)
Cooldown, Duration, DamageOrEffect
9.5 SpellConfig (SO)
SpellId (증원군/불의비)
Cooldown
EarlyCallCooldownReduction
Duration, DamageOrEffect
10. KPI/텔레메트리(초기 필수)
WaveClearTime
LifeLostPerWave
GoldIncomePerWave / GoldSpendPerWave
UnspentGoldAtWaveStart
TowerBuildRateByType / TowerSellRateByType
EnemyLeakCountByType
EnemyDeathHeatmap (경로 구간별)
EarlyCallUsageRate
HeroSkillUsageRate
10.1 튜닝 기준(초기)
한 웨이브 종료 후 평균 신규 건설 0~1회 또는 업그레이드 1회 가능한 경제값
특정 타워 타입 사용률이 과도하게 치우치면 수치 조정 트리거
UnspentGoldAtWaveStart가 지속적으로 높으면 난이도/가격 재조정
11. 위험 요소와 대응
위험
대응
초기화 순서 꼬임 → Null/경로 누락
부트스트랩 완료 전 GameScene 진입 금지 가드
병영 블로킹 → 전투 상태 충돌
적 상태를 Moving/Blocked/Attacking/Dead로 분리
Mock 경로 잔존 → 실제 루프 왜곡
DEV_MOCK 컴파일 심볼로 강제 분리
피해 공식 누적 오차 → 밸런스 붕괴
고정소수점 또는 int 기반 HP/데미지 사용
타워 UI 터치 영역 겹침
타워/건설포인트에 우선순위 레이어 + 상호배타 처리
UserSaveData 인스턴스 중복 → 데이터 덮어쓰기
글로벌 SaveManager 싱글톤으로 단일 인스턴스 보장
Time.timeScale 변경 → Coroutine/DOTween 오동작
timeScale 비의존 타이머 분리, 속도 변경 시 회귀 테스트
12. 체크리스트
월드맵 → 게임 진입 시 스테이지 데이터 일치
웨이브 시작/종료와 HUD 동기화
타워 건설/업그레이드/판매 정상
병영 블로킹 정상
조기 웨이브 호출 보상 정상
영웅 이동/스킬 최소 기능 정상
승/패 결과 저장 반영 정상 (§6.4 별 등급)
게임 → 월드맵 복귀 루프 정상
앱 재실행 후 기록 유지
기본 빌드 Mock 비활성 확인
피해 공식 검증 (물리/마법/고정/포병 관통)
속도 조절(x1/x2) 시 Coroutine/애니메이션/물리 정상 동작
복귀 경로 통일 확인 (Mock/GameView 모두 WorldMapScene)
13. 우선순위
상태머신 + 웨이브/스폰/경로
타워/경제 + 병영 블로킹
결과 처리 + 저장 + 월드맵 복귀
영웅 최소 기능
KPI 계측 + 튜닝
Mock 제거 + 회귀 안정화
14. 참고 메모
본 문서는 NotebookLM 킹덤러쉬 노트북을 기반으로 보강했다.
반영 포인트:
KR 스타일 핵심 전투 루프(병영 블로킹, 조기 호출)
전투 씬 매니저 분리 원칙
초기 단계 KPI 기반 밸런싱 접근
피해 유형 3종(물리/마법/고정) + 포병 관통 공식
별 등급 산정 기준 (라이프 기반)
타워 건설 UI 인터랙션 흐름 (링 메뉴 → 분기 → 능력 구매)
15. 누락 위험 체크리스트 (High Risk)
병영/영웅이 적을 실제로 멈추게 하는 Melee Lock 규칙이 구현됨
적 상태(Moving/Blocked/Attacking/Dead) 전이가 프레임 단위로 충돌 없이 동작함
초기화 순서가 고정됨(맵/경로 로드 전 스폰 시작 금지)
비행 적 타겟팅 제약(CanTargetAir)이 타워별로 정확히 적용됨
방어력/저항/고정피해 계산식이 공통 함수로 단일화됨
보스 면역(즉사/강제이동 면역) 플래그가 실제 전투 판정에 반영됨
웨이브 미리보기 UI가 실 유닛 스폰 없이 데이터만으로 동작함
조기 웨이브 호출이 경제 보상과 스킬 쿨다운 감소를 함께 처리함
Pause 상태에서도 입력 허용 범위(배치/업글/이동)가 명확히 분리됨
사운드 동시 재생 시 우선순위/채널 제한으로 클러터링을 제어함
16. Definition Of Done (전투씬)
16.1 기능
웨이브 데이터 기준으로 적 수량/타이밍이 정확히 스폰됨
적이 경로를 이탈하지 않고 목표 지점까지 이동함
타워가 유효 타겟만 공격하고(지상/공중 제약) 우선순위가 적용됨
병영 블로킹 및 영웅 교전이 정상 동작함
승/패 판정 및 결과 UI가 기획 조건대로 동작함
16.2 성능
적/투사체/이펙트 오브젝트 풀링 적용
목표 기기에서 전투 피크 시 목표 FPS 유지
불필요한 GC 스파이크(웨이브 시작/종료 구간) 없음
16.3 안정성
Null 참조 없이 타겟 소실 시 재탐색
씬 전환 반복(월드맵↔게임) 30회 이상에서 누수/크래시 없음
저장 실패/로드 실패 시 안전 폴백 동작
16.4 밸런스
초반 3웨이브 체감 난이도가 급격히 튀지 않음
특정 타워 한 종류만으로 강제되지 않음(사용률 편중 감시)
조기 호출 사용이 명확한 보상과 리스크를 가짐
16.5 회귀
WorldMapScene -> GameScene -> WorldMapScene 루프 회귀 통과
기존 저장 데이터와 신규 스키마 호환 확인
DEV_MOCK 비활성 빌드에서 Mock 경로 호출 0건
17. 코드 반영 대상 (초안)
Assets/Scripts/Kingdom/App/GameScene.cs
GameMockController 자동 생성 제거, GameStateController 초기화 진입점으로 변경