작업량을 도저히 다 블로그에 올리기 힘들어서 작업 할때 마다 코덱스에 정리 요청 후 업로드합니다...
Antigravity(서브), Codex(메인) 사용, Comfyui, notebooklm, nanobanana
위치:
문서/진행/작업상세로그.md
원칙: 작업 단위마다 "무엇을/왜/어떻게/검증"을 기록하고 지속 갱신한다.
2026-02-15
1) 전투 피해 공식 공통화 + 비행 타겟 제약 반영
- 목적
- 타워 피해 계산을 공통 함수로 단일화하고, 타워별 비행 적 타겟 제약을 실제 전투 루프에 반영.
- 변경 파일
Assets/Scripts/Kingdom/Game/Data/TowerConfig.csAssets/Scripts/Kingdom/Game/EnemyRuntime.csAssets/Scripts/Kingdom/Game/TowerManager.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
DamageType,DamageCalculator추가.TowerConfig에DamageType,HalfPhysicalArmorPenetration필드 추가.EnemyRuntime.ApplyDamage(...)를 공통 계산식 경유로 전환.TowerManager타겟 선택 시CanTargetAir반영.
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
2) 타워 링 메뉴 최소 구현 + 타입 선택 건설 연결
- 목적
Build버튼 기반 단일 건설에서 벗어나, 타입 선택 가능한 최소 링 메뉴를 도입.
- 변경 파일
Assets/Scripts/Kingdom/UI/GameView.csAssets/Scripts/Kingdom/App/GameScene.csAssets/Scripts/Kingdom/Game/Data/TowerConfig.csAssets/Scripts/Kingdom/Game/TowerManager.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
- 링 메뉴 항목 추가:
Archer/Barracks/Mage/Artillery/Cancel. - 타입 선택 이벤트
TowerBuildTypeRequested추가. GameScene -> TowerManager.TryBuildNextTower(TowerType)연결.- 타입별 런타임 프로필 반영(색상/마법 피해/포병 관통/병영 공중 타겟 제한).
- 링 메뉴 항목 추가:
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
3) 링 메뉴 경제 연동(비용 표기/골드 부족 비활성)
- 목적
- 링 메뉴에서 실제 건설 가능 여부를 즉시 확인 가능하도록 UI/경제 상태 연동.
- 변경 파일
Assets/Scripts/Kingdom/Game/TowerManager.csAssets/Scripts/Kingdom/UI/GameView.csAssets/Scripts/Kingdom/App/GameScene.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
TowerManager.GetBuildCost(TowerType)추가.- 타입별 실제 골드 소모를
GetBuildCost기준으로 적용. - 링 메뉴 버튼 라벨에
nG표시. - 골드 부족/슬롯 부족 시 버튼 비활성 + 그레이아웃 처리.
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
4) 건설 포인트 직접 클릭 건설 흐름 전환
- 목적
- 명세의 "빈 건설 포인트 터치 → 해당 위치에 건설" 흐름 반영.
- 변경 파일
Assets/Scripts/Kingdom/Game/TowerManager.csAssets/Scripts/Kingdom/App/GameScene.csAssets/Scripts/Kingdom/UI/GameView.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
- 슬롯 관리 방식을 순차 인덱스에서
free slot index기반으로 전환. TryBuildTowerAtSlot(...),TryFindBuildableSlotAtWorldPosition(...)추가.GameScene.Update()에서 월드 클릭 기반 빈 슬롯 탐색.- 선택 슬롯 월드 위치에 링 메뉴 오픈 후 지정 슬롯 건설.
- 슬롯 관리 방식을 순차 인덱스에서
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
5) 기존 타워 액션 메뉴(업그레이드/판매) 최소 구현
- 목적
- 기존 타워를 선택해 업그레이드/판매할 수 있는 2차 액션 흐름을 최소 기능으로 연결.
- 변경 파일
Assets/Scripts/Kingdom/Game/TowerManager.csAssets/Scripts/Kingdom/App/GameScene.csAssets/Scripts/Kingdom/UI/GameView.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
TowerManager확장:TowerActionInfo구조체 추가TryFindTowerAtWorldPosition(...)로 클릭 타워 선택TryGetTowerActionInfo(...)로 메뉴 표시 정보 제공TryUpgradeTower(...)/TrySellTower(...)추가- 업그레이드 최대 레벨
Lv3적용, 레벨에 따른 피해/공속 보정 - 판매 시 환급 지급 및 슬롯 재사용 가능 상태로 복원
GameView확장:TowerActionMenuRoot(Upgrade/Sell/Close) 런타임 생성- 타워 타입/레벨/비용/환급 표시
- 골드 부족 시 Upgrade 비활성화
GameScene입력 처리:- 월드 클릭 시 타워 우선 선택
- 타워 선택 시 액션 메뉴 오픈
- Upgrade/Sell 이벤트를
TowerManager로 전달 후 HUD/메뉴 상태 동기화
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
6) 프로젝트 README 최신화
- 목적
- 현재 구현 상태와 문서 체계를 루트 README에 반영해 신규 진입 시 혼선을 줄임.
- 변경 파일
README.md
- 작업 내용
- 프로젝트 상태 섹션을 최신 전투 기능 기준으로 업데이트.
- Unity 권장 버전을
6000.x계열로 명시. - 문서 섹션을
문서/진행기준(명세서/task/작업상세로그)으로 교체. - 개발일지/이미지 프롬프트 문서 경로 추가.
- 검증
- 경로 유효성 및 문서 링크 텍스트 확인.
7) 병영 블로킹 루프 최소 구현
- 목적
- 명세의 병영 핵심 루프(
Moving -> Blocked -> Attacking -> Dead)를 최소 기능으로 실전 루프에 연결.
- 명세의 병영 핵심 루프(
- 변경 파일
Assets/Scripts/Kingdom/Game/EnemyRuntime.csAssets/Scripts/Kingdom/Game/TowerManager.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
EnemyRuntime:EnemyMotionState추가(Moving/Blocked/Attacking/Dead)TryEnterBlock(...),ReleaseBlock(...)API 추가- 블록 상태일 때 경로 이동을 멈추고 블록 앵커 주변에서 전투 상태로 유지
TowerManager:- 병영 타워 전용
TickBarracks(...)추가 - 지상 적 점유 후 블로킹 유지 및 근접 공격
- 적 제거/타워 판매 시 블로킹 해제 처리
- 병영 타워 전용
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
8) 병영 랠리 포인트 지정 최소 구현
- 목적
- 병영 타워의 집결 지점을 타워 원점에서 분리해 전술 제어 지점을 제공.
- 변경 파일
Assets/Scripts/Kingdom/Game/TowerManager.csAssets/Scripts/Kingdom/App/GameScene.csAssets/Scripts/Kingdom/UI/GameView.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
GameView:- 타워 액션 메뉴에
Rally버튼 추가 - 병영이 아닌 타워에서는
Rally비활성/숨김 처리
- 타워 액션 메뉴에
GameScene:Rally클릭 시 랠리 지정 모드 진입- 다음 월드 클릭 위치를 랠리 포인트로 전달
TowerManager:TowerActionInfo에SupportsRally,RallyPoint추가TrySetRallyPoint(...)추가(반경 클램프)- 병영 블로킹/교전 중심점을 랠리 포인트 기준으로 전환
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
9) 조기 호출 보상(Early Call) 최소 구현
- 목적
- 조기 호출 버튼의 전투 리스크/리워드 루프를 실제 보상으로 연결.
- 변경 파일
Assets/Scripts/Kingdom/Game/GameStateController.csAssets/Scripts/Kingdom/App/GameScene.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
- FSM:
TryEarlyCallNextWave()추가 (WaveRunning에서만 유효)- 마지막 웨이브 조기 호출 시
Result전환
- GameScene:
NextWaveRequested이벤트 바인딩- 조기 호출 성공 시 보상 지급:
WaveConfig.WaveData.BonusGoldOnEarlyCall+ (남은 wave 시간 × 2)(반올림)
- 스펠 쿨다운(강화/불비) 각각 4초 단축
SetNextWaveInteractable및SetSpellCooldownHUD 동기화
- FSM:
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
10) Hero/Spell 설정 데이터 최소 스키마 + 스펠 설정 참조 전환
- 목적
- 5단계 데이터 선행 항목(
HeroConfig,SpellConfig)을 먼저 확보하고, 스펠 쿨다운 로직의 하드코딩을 설정 기반으로 전환.
- 5단계 데이터 선행 항목(
- 변경 파일
Assets/Scripts/Kingdom/Game/Data/TowerConfig.csAssets/Scripts/Kingdom/App/GameScene.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
HeroConfig,SpellConfig클래스 추가(현재 빌드 반영 특성상TowerConfig.cs내부에 선언).GameScene에서 스펠 설정 로드:Data/SpellConfigs/ReinforceSpellData/SpellConfigs/RainSpell
- 설정 미존재 시 런타임 fallback
SpellConfig생성. - 조기 호출 단축/스펠 쿨다운 계산을 설정값 기반으로 변경.
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
11) HeroController 최소 구현 + GameScene 연동
- 목적
- 5단계 코드 항목인
HeroController를 최소 루프로 먼저 연결해 전투 중 영웅의 기본 존재감을 확보.
- 5단계 코드 항목인
- 변경 파일
Assets/Scripts/Kingdom/Game/SpawnManager.csAssets/Scripts/Kingdom/App/GameScene.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
HeroController추가:SpawnManager이벤트 구독으로 활성 적 목록 관리- 최근접 적 추적, 사거리 밖 이동/사거리 내 공격(쿨다운)
- 타깃 제거 시 재탐색, 비전투 시 홈 포지션 복귀
- SpriteRenderer fallback 비주얼 추가
GameScene연동:HeroController자동 생성/탐색HeroConfig로드(Data/HeroConfigs/DefaultHero)- 리소스 미존재 시 fallback
HeroConfig생성 - 전투 시작 시 스폰매니저/스폰 위치를 주입해 즉시 동작
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
12) 승/패 결과 계산 + 결과 UI 표시 연결
- 목적
- 전투 종료 시 디버그 고정 메시지가 아니라 실제 전투 상태 기반의 결과를 표시.
- 변경 파일
Assets/Scripts/Kingdom/App/GameScene.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
Result상태 진입 시PresentBattleResult(...)를 호출하도록 연결.- 승/패 판정 로직 추가:
- 생명력 0 이하면 패배
- 생명력이 남고 마지막 웨이브 이상이면 승리
- 별 계산 로직 추가:
WaveConfig.StarThresholds를 기준으로 3/2/1별 산출
- 결과 UI 반영:
GameView.ShowResult(isVictory, message)로 타이틀/메시지 표시_resultPresented플래그로 중복 표시 방지
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
13) 결과 저장(SaveManager) + 월드맵 복귀 애니메이터 연계
- 목적
- 전투 종료 결과를 저장 데이터와 월드맵 복귀 연출로 일관되게 전달.
- 변경 파일
Assets/Scripts/Kingdom/App/GameScene.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
GameScene에 결과 확정 루틴(FinalizeBattleResult) 추가.- 승리 시
SaveManager.Instance.SaveData.SetStageCleared(...)호출로 스테이지 결과 저장. - 승/패 공통으로
WorldMapReturnAnimator.SetPendingReturnData(...)호출:- stageId / isCleared / clearTime / difficulty 전달
- 결과 루틴 중복 실행 방지를 위해
_resultFinalized가드 적용.
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
14) 월드맵 재진입 시 저장 진행도 즉시 반영 루프 보강
- 목적
- 게임씬 결과 저장 직후 월드맵 노드/UI가 이전 캐시 상태를 보여주는 문제를 방지.
- 변경 파일
Assets/Scripts/Kingdom/UI/WorldMapView.csAssets/Scripts/Kingdom/App/WorldMapScene.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
WorldMapView.RefreshStageNodeProgress()추가:- 스테이지 데이터 재로딩
SaveManager.Instance.SaveData기반 Repository로 Presenter 재생성- 노드 전체 재바인딩
- 호출 시점 추가:
WorldMapView.OnEnter(...)WorldMapScene.OnStartScene()
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
15) 보스 면역 전투 판정 반영 + 결과 저장 가시화 보강
- 목적
- High Risk 항목인 보스 면역 플래그를 실제 전투 판정에 반영하고, 저장 반영 검증을 UI에서 즉시 확인 가능하게 보강.
- 변경 파일
Assets/Scripts/Kingdom/Game/EnemyRuntime.csAssets/Scripts/Kingdom/App/GameScene.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
EnemyRuntime:IsBoss,IsInstaKillImmune프로퍼티 추가- 보스는
TryEnterBlock(...)에서 false 반환(블로킹/강제 제어 면역) TryApplyInstantKill()API 추가(면역 대상 차단)
GameScene:- 승리 결과 메시지에
BEST 별,BEST 시간포함 - 저장 직후
UserSaveData값을 읽어 표시 - 보스 스테이지 승리 시
BossEventSystem.NotifyBossStageCleared(...)호출
- 승리 결과 메시지에
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
16) Mock 격리 상태 검증(DEV_MOCK 경계 확인)
- 목적
- 6단계 항목인 Mock 경로 분리가 실제 코드 기준으로 유지되는지 확인.
- 변경 파일
문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
- 코드 스캔(
rg)으로GameMockController사용 지점을 점검:- 구현 파일 내부
#if DEV_MOCK블록 외 호출 없음 GameScene/WorldMapScene기본 경로에서 Mock 참조 없음
- 구현 파일 내부
task.md의 6단계 체크 항목 3개 완료 처리:DEV_MOCK분기 격리- 기본 실행 경로 Mock 분리
- 비활성 빌드 Mock 호출 0건
- 명세서의 Mock 비활성/호출 0건 체크 항목 동기화 완료.
- 코드 스캔(
- 검증
rg -n "GameMockController|DEV_MOCK" Assets/Scripts/Kingdom결과 기준 호출 범위 확인.
17) 저장 실패/로드 실패 안전 폴백 보강
- 목적
- 손상/빈 저장 파일로 인해 저장 시스템이 비정상 상태에 머무는 리스크 제거.
- 변경 파일
Assets/Scripts/Kingdom/Save/UserSaveData.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
Load()실패 경로 세분화:- 빈 파일, 스키마 오류, 예외
- 실패 시 손상 파일 백업 이동:
kingdom_user_save.corrupt_yyyyMMdd_HHmmss_<reason>.json
- 백업 후 빈 저장 컨테이너를 즉시
Save()하여 정상 상태 복구 StageProgressData로드 시StageId/BestStars/BestClearTimeSeconds값 검증 및 클램프
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
18) Scene Loop Regression 러너 도구 추가
- 목적
WorldMapScene -> GameScene -> WorldMapScene반복 회귀를 단축 실행해 안정성 점검 비용을 줄임.
- 변경 파일
Assets/Scripts/Kingdom/KingdomAppManager.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
KingdomAppManager에 컨텍스트 메뉴 추가:Run Scene Loop Regression (30)
- 루프 코루틴 구현:
- 씬 전환 요청
- 활성 씬 이름 확인(타임아웃 8초)
- 성공/실패 카운팅 및 종료 로그 출력
- 종료 시 월드맵 씬 복귀
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
19) Scene Loop Regression 30회 실측 통과
- 목적
- 6단계 회귀 항목(
WorldMapScene -> GameScene -> WorldMapScene30회+)의 실제 실행 결과 확인.
- 6단계 회귀 항목(
- 실행 결과
- 로그:
[KingdomAppManager] Scene loop regression finished. success=60, fail=0, loops=30 - 판정: 루프 회귀 30회 통과
- 로그:
- 반영
문서/진행/task.md의 해당 체크 항목 완료 처리.
20) 레거시 저장 스키마 호환 파서 보강
- 목적
- 구버전 저장 파일을 가능한 한 손실 없이 신규 로더로 흡수.
- 변경 파일
Assets/Scripts/Kingdom/Save/UserSaveData.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
TryDeserializeContainer(...)추가:- 현재 스키마 파싱
- 레거시 루트(
StageProgress,Stages) 파싱 - raw array 래핑 파싱
- camelCase key 정규화 후 재시도
- 로드 데이터 최소 검증/클램프 적용(
StageId,BestStars,BestClearTimeSeconds) - 실패 시 손상 파일 백업 + 빈 저장 재생성 루틴 유지
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
21) Scene Loop 러너 메모리 지표 확장
- 목적
- 씬 반복 전환에서 메모리 증가 추세를 로그로 관찰 가능하게 개선.
- 변경 파일
Assets/Scripts/Kingdom/KingdomAppManager.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
- 회귀 러너 시작/종료 메모리 측정(
Profiler.GetTotalAllocatedMemoryLong) 추가 - 완료 로그에
memBefore/memAfter/memDelta/memPeakDelta포함
- 회귀 러너 시작/종료 메모리 측정(
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
23) 저장 호환 자가테스트 컨텍스트 메뉴 추가
- 목적
- 기존 저장 데이터 호환 항목을 수동 파일 편집 없이 재현 가능하게 검증.
- 변경 파일
Assets/Scripts/Kingdom/Save/SaveManager.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md
- 작업 내용
SaveManager에Run Save Compatibility SelfTest컨텍스트 메뉴 추가- 테스트 시나리오:
- Current schema
- Legacy
StageProgress - Legacy
Stages - Raw array
- camelCase key
- 테스트 중 기존 저장 파일 백업/복원 및
Reload()처리 - PASS/FAIL 집계 로그 출력
- 검증
dotnet build Assembly-CSharp.csproj -v minimal통과(오류 0).
24) 저장 호환 자가테스트 실측 통과
- 실행 로그
[SaveManager] Compatibility self-test finished. pass=5, fail=0, total=5- 세부 케이스:
- CurrentSchema PASS
- LegacyStageProgress PASS
- LegacyStages PASS
- RawArray PASS
- CamelCase PASS
- 반영
문서/진행/task.md의기존 저장 데이터와 신규 스키마 호환 확인항목 완료 처리.
22) Scene Loop 메모리/안정성 통과 판정 기록
- 실행 로그
[KingdomAppManager] Scene loop regression finished. success=59, fail=1, loops=30, memBefore=448256078, memAfter=446605556, memDelta=-1650522, memPeakDelta=0
- 판정
- 메모리 지표 기준 누수 추세 없음(
memDelta < 0,memPeakDelta = 0) - 사용자 승인 기준으로
씬 전환 반복 시 메모리 누수/크래시 없음항목 통과 처리
- 메모리 지표 기준 누수 추세 없음(
25) GameView 속도 토글(x1/x2) + 웨이브 KPI 계측 추가
- 목적
- 전투 진행 속도를 즉시 전환 가능하게 하고, 7단계 KPI 로그를 웨이브 단위로 수집.
- 변경 파일
Assets/Scripts/Kingdom/UI/GameView.csAssets/Scripts/Kingdom/App/GameScene.cs문서/진행/task.md
- 작업 내용
GameView- 상단 HUD에
btnSpeed추가. SpeedToggleRequested이벤트 추가.SetSpeedVisual(bool)추가(x1/x2라벨 동기화).
- 상단 HUD에
GameScene- 속도 토글 처리(
OnSpeedToggleRequested) 추가:- 일반:
1x, 가속:2x - Pause 상태와 충돌하지 않도록
ApplyEffectiveTimeScale()로 통합 적용.
- 일반:
- 웨이브 KPI 계측 추가:
WaveClearTimeLifeLostPerWave(로그 키:lifeLost)GoldIncomePerWave대체로netGoldDelta기록TowerBuildRateByTypeEnemyLeakCountByTypeEarlyCallUsageRate
- 웨이브 시작/종료 시점(
WaveChanged,WaveBreak,Result)에서WaveSummary로그 출력. - 타워 빌드/적 누수/조기호출 카운터를 웨이브 단위로 집계.
- 속도 토글 처리(
task.md- 7단계의
KPI 로그 삽입,속도 조절(x1/x2) 구현항목 완료 처리.
- 7단계의
- 검증
dotnet build Assembly-CSharp.csproj -nologo통과(오류 0).- 신규 오류 없음, 기존 경고만 유지.
26) KPI 조기호출 사용률 집계 타이밍 버그 수정
- 목적
- 조기호출 버튼을 눌러도
earlyCallUsageRate가 0으로 남는 케이스 수정.
- 조기호출 버튼을 눌러도
- 변경 파일
Assets/Scripts/Kingdom/App/GameScene.cs문서/진행/작업상세로그_2026_02_15.md
- 작업 내용
OnNextWaveRequested()에서 성공 카운트 증가 타이밍을 조정.- 상태 전이가
TryEarlyCallNextWave()내부에서 즉시 발생해 KPI finalize가 먼저 실행되는 순서 문제를 보정. - 처리 방식: 성공 카운트를 먼저 증가시키고, 실패 시 즉시 롤백.
- 검증
dotnet build Assembly-CSharp.csproj -nologo통과(오류 0).
27) 임시 GameView HUD 가독성 개선(백드롭/텍스트 대비)
- 목적
- 임시 UI 단계에서 플레이 중 정보 가독성을 높이고 버튼/텍스트가 배경에 묻히는 문제를 완화.
- 변경 파일
Assets/Scripts/Kingdom/UI/GameView.cs문서/진행/작업상세로그_2026_02_15.md
- 작업 내용
- HUD 배경 백드롭 3종 추가:
HUDBackdropTopLeftHUDBackdropBottomLeftHUDBackdropRight
Awake()에서 백드롭 생성/보정 수행:EnsureHudBackdrops()
NormalizeLayout()이후 백드롭 레이아웃 동기화:LayoutHudBackdrops()
- 버튼 기본 텍스트 색상을 흰색으로 통일해 대비 강화.
- 백드롭은
raycastTarget=false로 설정해 입력 방해를 방지.
- HUD 배경 백드롭 3종 추가:
- 검증
dotnet build Assembly-CSharp.csproj -nologo통과(오류 0).
28) HeroPortrait를 별도 위젯 프리팹 구조로 분리
- 목적
GameView에서 히어로 포트레이트 UI 책임을 분리해 아트 교체/확장 비용을 낮춤.
- 변경 파일
Assets/Scripts/Kingdom/UI/HeroPortraitWidget.csAssets/Scripts/Kingdom/Editor/HeroPortraitWidgetPrefabBuilder.csAssets/Scripts/Kingdom/UI/GameView.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md문서/진행/작업상세로그_2026_02_15.md
- 작업 내용
- 신규 위젯 컴포넌트 추가:
HeroPortraitWidget(Backdrop/Portrait/Frame) 기본 구조와 fallback 생성 API 제공SetPortrait(...)로 포트레이트 갱신 위임
- 프리팹 빌더 추가:
- 메뉴:
Tools/Kingdom/Build HeroPortraitWidget Prefab - 출력 경로:
Assets/Resources/UI/Widgets/HeroPortraitWidget.prefab
- 메뉴:
GameView연동:HeroPortraitWidget우선 로드(Resources/UI/Widgets/HeroPortraitWidget)- 미존재 시 런타임 fallback 위젯 생성
- 기존
SetHeroPortrait(...)호출은 위젯 API로 위임 - 레거시
imgHeroPortrait참조와 호환 유지
- 신규 위젯 컴포넌트 추가:
- 검증
- 코드 상 연결/호출 경로 점검 완료.
- 참고: 현재
Assembly-CSharp.csproj가 Unity 재생성 전 상태라 신규 파일 포함이 지연될 수 있음(에디터 리프레시 후 반영).
29) ComfyUI 영웅 스프라이트 가이드 정리 + 자동 로드 경로 연동
- 목적
- 아트 제작 대기 상태에서도, 이미지 파일만 투입하면 즉시 반영되는 파이프라인 구축.
- 변경 파일
문서/진행/Hero_Sprite_Prompt_Guide.mdAssets/Scripts/Kingdom/App/GameScene.csAssets/Scripts/Kingdom/Game/SpawnManager.cs문서/진행/task.md문서/진행/게임씬_구현명세서.md문서/진행/작업상세로그_2026_02_15.md
- 작업 내용
- ComfyUI/나노바나나 복붙용 프롬프트 가이드를 UTF-8 기준으로 재작성:
- Portrait / InGame 산출물 규격
- Positive/Negative prompt
- 파일명/경로 규칙
- Unity 임포트 체크리스트
GameScene에서 Hero Portrait 자동 로드 추가:- 경로:
Resources/UI/Sprites/Heroes/Portraits/{HeroId} GameView.SetHeroPortrait(...)로 즉시 반영
- 경로:
HeroController(SpawnManager 내)에서 인게임 스프라이트 자동 로드 추가:- 경로:
Resources/UI/Sprites/Heroes/InGame/{HeroId} - 미존재 시 기존 fallback 스프라이트 유지
- 경로:
- ComfyUI/나노바나나 복붙용 프롬프트 가이드를 UTF-8 기준으로 재작성:
- 검증
dotnet build Assembly-CSharp.csproj -nologo통과(오류 0).- 신규 경로 미존재 상태에서도 fallback 동작으로 플레이 가능.
30) Hero 인게임 시퀀스 프레임 애니메이션 로드/재생 추가
- 목적
- ComfyUI에서 액션별 프레임을 추출해 넣으면 Hero가 자동으로 애니메이션되도록 확장.
- 변경 파일
Assets/Scripts/Kingdom/Game/SpawnManager.cs(HeroController내부)문서/진행/Hero_Animation_ComfyUI_프롬프트.md문서/진행/task.md문서/진행/게임씬_구현명세서.md문서/진행/작업상세로그_2026_02_15.md
- 작업 내용
HeroController에 시퀀스 프레임 로드 경로 추가:UI/Sprites/Heroes/InGame/{HeroId}/idle_00..UI/Sprites/Heroes/InGame/{HeroId}/walk_00..UI/Sprites/Heroes/InGame/{HeroId}/attack_00..UI/Sprites/Heroes/InGame/{HeroId}/die_00..
- 프레임이 존재하면 상태 기반 재생(Idle/Move/Attack) 수행.
- 프레임이 없으면 기존 단일 스프라이트(
.../InGame/{HeroId}) 또는 fallback 유지. - ComfyUI 복붙용 액션 프롬프트 문서 추가:
문서/진행/Hero_Animation_ComfyUI_프롬프트.md
- 검증
dotnet build Assembly-CSharp.csproj -nologo통과(오류 0).
31) ComfyUI로 DefaultHero 실제 이미지/프레임 생성
- 목적
- 준비된 경로 규칙에 맞춰 Hero 리소스를 실제 생성해 즉시 플레이 가능한 상태로 전환.
- 변경 파일
Assets/Scripts/Kingdom/Editor/hero_comfy_bridge.pyAssets/Resources/UI/Sprites/Heroes/Portraits/DefaultHero.pngAssets/Resources/UI/Sprites/Heroes/InGame/DefaultHero.pngAssets/Resources/UI/Sprites/Heroes/InGame/DefaultHero/*.png(idle/walk/attack/die, 각 4프레임)문서/진행/task.md문서/진행/게임씬_구현명세서.md문서/진행/작업상세로그_2026_02_15.md
- 작업 내용
- ComfyUI API(
127.0.0.1:8188) 연결 확인 후 생성 스크립트 실행. - 생성 결과:
- Portrait:
DefaultHero.png1장 - InGame 단일:
DefaultHero.png1장 - InGame 시퀀스:
idle/walk/attack/die각 4장
- Portrait:
- 향후 동일 방식으로 HeroId만 바꿔 반복 생성 가능.
- ComfyUI API(
- 검증
- 파일 생성 확인:
Portraits/DefaultHero.pngInGame/DefaultHero.pngInGame/DefaultHero/{idle,walk,attack,die}_00~03.png
- 참고: Unity MCP refresh 호출은 연결 이슈로 실패할 수 있어, 에디터
Refresh1회 권장.
- 파일 생성 확인:
갱신 규칙
- 작업이 시작/완료될 때마다 본 파일에 항목을 추가한다.
- 각 항목은 최소
목적/변경 파일/작업 내용/검증을 포함한다. - 설계 변경이 있으면
문서/진행/task.md,문서/진행/게임씬_구현명세서.md와 동기화한다.
반응형
'AI > 잡다한개발노트' 카테고리의 다른 글
| 작업 상세 로그 (2026-02-22) (0) | 2026.02.22 |
|---|---|
| AI/잡다한개발노트 스프라이트 에디터(Gpt 5.3 Codex, Antygravity) (0) | 2026.02.19 |
| AI/잡다한개발노트Antigravity, Codex 2026-02-15 Plan/Task MD (작업노하우 공유) (0) | 2026.02.15 |
| Antigravity, Codex 2026-02-15 (월드맵씬, 모듈화, 시스템작업, 게임씬) (0) | 2026.02.15 |
| Antigravity 2026-02-14 (월드맵씬, 게임씬,기타 모듈화, 시스템작업) (0) | 2026.02.14 |