- 상자 탭 = 보물고 홀(금고 문 · 기둥 · 양옆 보물 선반 · 가운데 받침대 방석 위 상자 · 열기 = 0.4 초 흔들린 뒤 결과)
- 보유 중·세트 = 보물고 진열장 + 틀 없는 큰 아이콘 · 한 줄로 이어진 선반 판 · 등급 색 리본 이름표 · 조각 진행 막대(레퍼런스 게임 유물 목록) · 미보유 = 빛바랜 아이콘 + 어두운 리본
- 유물 정보 팝업 = 선반 진열 무대(받침 방석 위 유물 · 등급 리본 · 강화 단계 표 ★ 지금 → 다음 · 조건 효과 상자)
- 상자 5종 = 기준 모양 1장 밑그림 img2img 로 같은 3/4 각도·외곽(명장 = 기존 용 문양) · 기존 그림은 작업 폴더 백업
- 자리·크기 = 표 Resources/UI/treasure_scene.csv(C45) · 코드 TreasureScene(새) · TreasureScreen · 그림 Assets/UI/Samguk/{frame_bg,treasure_ui,chest} · ui_atlas.csv import 줄 1개
- QA r1 FAIL(B2) → 수정 → r2 FAIL(B1) → 수정(제작 측 실측) · 2차 피드백 새 사이클 QA r3 PASS(B 0) + 경미 5건 수정 · TreasureSceneTests 1/1 · Screens_Domestic_Treasure_Arena_TradeChest 1/1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 로딩 화면 2종(LoadingScreen · 표 Resources/UI/loading_screen.csv): 원격 다운로드 = 배경 + 타이틀 로고 + 조운(아두)·병졸 제자리 질주 + 진행률·용량 / 일반 로딩 = 검은 화면 + 유비·관우·장비 말 타고 질주 + Loading
- 3형제 머리 크기 관우 기준(유비 0.80 · 장비 0.76) · 먼지 = 무리 뒤 · 발굽 테 닿음 · 검은 화면 밝은 바깥 테 · 장비 머리띠 점 · 관우 얼굴색 · 로고 먹 점 지움 (QA r6 PASS · B 0)
- 시작 흐름(BootFlow · 표 Resources/UI/boot_flow.csv): 스플래시 → 받을 리소스가 있으면 다운로드 화면 → 100 % → 검정 페이드 → 타이틀(TitleProvider · 없으면 로비) → 페이드 인 · 받을 것 없으면 지금처럼 바로 시작 · 지금 공급자 = none(실제 받기 장치 = PD 결정 대기) · 메뉴 TKS/Boot 미리보기
- GameBootstrap 시작 줄 1개 · 아틀라스 UI_Loading · UI_LoadingSimple(ui_atlas.csv 2줄) · 캡처 -uiOnly loading* · boot_anim
- 테스트: LoadingScreenTests 3 · BootFlowTests 4(타이틀 훅을 바꿨다 되돌림) · TitleScreenTests 8 함께 통과
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 3탭 배경 = 로비 화풍(연병장·저잣거리·규장각) · 장면 표 Resources/UI/domestic_scene.csv · 연출 LobbyAmbient(Frame 캔버스)
- 훈련: 병종별 범용 병사 훈련 동작(UiDrillAnim · 뒷발 고정 · 병종별 박자 · 화면 배율) · 궁병 훈련 전용 클립 drill_ready/drill_action(대기 원화 리그) + 날아가는 화살 · 병종 탭 아이콘 · 카드 = 이름 +수치%
- 순찰: 정보 판 1장(시계 + 쌓인 시간 · 게이지 · 시간당 골드·경험치·전리품 오른쪽 정렬 · 금테 안 획득 보상) · 버튼 수확/즉시 수확 · 광고 2배 = 수확 팝업 · 문 앞 순찰 영웅 + 창병 2 · 상인·주민 NPC 5(R22 대기 모션 · 길바닥)
- 개발: 양피지 두루마리 위 성장 트리(노드 그림 아이콘 27) · 재화 칩 · 아래 두루마리 = 영웅 배치 + 트리 초기화
- 영웅 파견 3자리(훈련 병종 지휘관 · 순찰 · 개발 · 장면 표시만) · 세이브 필드 3
- 병사 5종 자세·타격 그림 색·크기 대기에 맞춤(전투 그림도 같은 파일)
- 승병: UnitTypeInfo 이름/표시 글자 · heroes 병사 3 이름·한자 · 스킬·기믹 설명 · 튜토리얼 팁 + 임포트 자산(HeroDb·SkillInfoDb·GimmickDb·StageGimmickTable)
- 테스트 DomesticSceneTests 4 · BattleFlowTests 표시 글자
PD 지시 2026-11-12(대화로그 공유/대화로그/삼국지슬링샷/2026-11-12_내정메뉴_개편.md · 레시피 R23) · QA r1~r12 · 마지막 r11·r12 PASS(B 0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PD: 「로비에 배치된 관우의 크기만 작게 보이는 건지 체크해서 수정」 · 「축융의 얼굴 턱선이 없어서 얼굴이 너무 커보여」 · 「하단 아이콘이 선택되지 않았을 때에도 글자가 보이게 · 선택된 상태일 경우 X(닫기 버튼)처럼 동작」 · 「하단 아이콘을 우리 게임 화풍(캐주얼)에 맞게 다시 그려줘」
- 로비 원인: 출전 영웅을 칸(196×340)에 그림 틀째 맞춤 → 틀 = 세 자세 합집합이라 돌진 언월도로 넓은 관우(930 px)만 ×0.21(몸 153 px · 유비 185) → UiKit.UnitStand = 크기 표 size_px 기준 배율 + 기마 머리 끝 상한(BalanceConfig.mountedArtMaxTop) · 발 = 피벗 · LobbyUnitPx 206(유비 예전 크기)
- 축융: 맨 어깨라 얼굴·몸 피부가 이어져 턱이 없음 → 부분 다시 그리기 2 · 턱 호 덧칠 3 · 전체 재생성 1(피부가 하얘짐) 시험 → 채택 = 턱 아래 금빛 초커 덧칠(검정 외곽선 + 그림자 1단 · 생성 0 · 3자세) · 크기 표 눈 자동 측정 가능해짐 → adjust 1.18 → 1.02(카드 재현 확인)
- 하단 탭: 글자 = 모든 탭(선택 = 흰 34 · 아니면 흐린 30) · 아이콘 글자 위로 · OnTab 선택 탭 다시 = ShowLobby · VisibleTabLabels
- 아이콘: Assets/UI/Samguk/menu/tab_{hero,treasure,domestic,alliance,trade}.png = Krea 2 t2i 유닛과 같은 화풍 C · 20장 중 5 · 256² · 테마 치환(ui_delivered.csv md5)
- 테스트(고친 부분만): Lobby_Tabs_Back_ComingSoon(탭 글자 5 · 선택 탭 다시 = 로비 · 다시 열림) · UILayerTests · UnitArt_SizeTable 각 1/1 · error 0 · 캡처 lobby · hero_list
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PD: 「강유, 서황과 같이 새로 추가된 유닛의 크기가 이전에 제작된 유닛과 달리 큰 것 같아 · 이전에 유닛 크기를 조정한 기준에 맞게 크기나 위치도 조정」 · 「유닛의 기본 보는 방향을 오른쪽으로 통일」
- 원인: 크기 표가 눈 간격 하나 기준 → 새 그림은 투구·관이 커서 머리 덩어리가 커짐(카드 위 머리 폭 기존 202~283 · 신규 180~349)
- art_size.csv: lock 1 = PD 확인 기존 20종 크기 고정(기준점) · 신규 = 네 지표(눈 간격 · 얼굴 폭 · 머리 실루엣 폭 · 정수리 높이) 가운데 값 × adjust(영웅 목록 카드 시뮬레이션 눈 확인 · 78종) · Tools/unit_art_size.py 측정 추가
- 대기 그림 23종 좌우 반전(왼쪽 보던 유비·관우·제갈량·주유·곽가·장합·동탁·축융 등 · 눈 가운데 ↔ 머리 가운데 치우침 판정 + 눈 확인 · 피벗 = 프레임 가운데라 발 위치 그대로) · 출발·돌진은 원래 오른쪽
- 테스트(고친 부분만): UnitArt_SizeTable(크기 표 키 = 표준 키 · 기마 > 1.2 · lock 행) 1/1 · Lobby_Tabs_Back_ComingSoon 1/1 · error 0 · 캡처 hero_list
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Resources/Units 92 폴더(front_idle·ready·action · 키아트 화풍 C · 작업 폴더 C:\ArtRnD\samguk_units)
- art_size.csv 20 → 112행 · 기준 비율 0.1687 → 0.1695(기존 20종 −0.7 %)
- Tools/unit_art_size.py: 기병 = 게임 표 병종 · 얼굴 = 몸 위쪽 절반(장비 v5 말 콧구멍 오검출) · 자동 실패 = note 「눈 수동」 값 유지(장비·하후돈·축융)
- 테스트 StageData_MissingArt_FallsBackToShapes = 아트 없는 보스가 없어져 보스 1기 아트 id 를 잠시 바꿔 도형 대체 검사
- 테스트 119/119 · console error 0 · QA r2 남은 B1 = 황개 출발 무기(PD 결정 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- PD 「완벽한 비율 아니어도 됨(게임적 허용) · 기마는 보병·창병보다 조금 크게 · 너무 커지지 않게 조금 줄여」:
BalanceConfig.mountedArtMaxTop = 1.3(크기 표 mounted = 1 의 그려진 머리 끝 상한 = 표준 키 × 1.3) →
조운·조조군 기병 ×1.56 · 여포 ×1.82 · 장비 ×1.43 · 황건 기병 ×1.38 → 모두 ×1.3(탄 사람 = 보병의 약 0.8~0.9)
· 영웅 목록 카드는 그대로(머리 크기 같음)
- PD 「관우 옆얼굴이 깨진 것처럼 보임」: 원인 = front_idle 오른쪽 귀(붉은 조각 3,795 px)가 외곽선 없이 머리카락 사이에 끼어 있음
→ 그 조각만 둘레 머리카락으로 메움(cv2.inpaint TELEA · 검은 외곽선·얼굴 유지 · 재생성 없음) · ready·action 은 귀에 외곽선이 있어 그대로
- 테스트 118/118(기마 머리 끝 = 표준 키 × 상한 · 보병 < 기마) · console error 0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- PD 「영웅 리스트 캐릭터 크기 동일 · 말 탄 유닛도 보병·창병과 비슷한 비율」: 원인 = 그림마다 몸 키(bodyHeightPx)를 같은
높이로 맞춰 와서, 말까지 한 그림에 든 기마는 탄 사람이 절반 크기(눈 간격/키 0.09~0.12 vs 보병 0.14~0.20)
- 크기 표 Assets/Resources/Units/art_size.csv(SOT) = 눈 간격 자동 측정(Tools/unit_art_size.py · 얼굴 피부 안 어두운 구멍 2개)
÷ 말 안 탄 14종 중앙값 0.1687 → size_px(머리 크기가 표준인 유닛의 키) · mounted 열만 수동(장비 · 조운 · 여포 = 1)
- 게임: FrameAnimator 배율 = size_px 기준(기마 x1.38~1.82) · TopHeight = 실제 머리 끝 → Unit.ArtHeight(HP 바 · 머리 위 표시)
- 영웅 목록 카드: 같은 px 배율 → UnitPx 450 / size_px(머리 크기 같음 · 머리 끝 위치 그대로)
- PD 「화풍이 전혀 다른 유닛 폐기」 = Resources/Units/wei_* 5종 삭제(사마의 영웅 · 위군 = 도형 대체 · heroes.csv art id 유지)
- 테스트 118/118(+1 UnitArt_SizeTable_SameHeadSize_MountedRiderLikeFoot) · console error 0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 영웅 상세: 등급 색 바탕(글로우 + 문양 타일 · 화면 전체) · 전투력 칩 · 일러(빛 원 · 그림자 · 좌우 밀기 80 px = 영웅 전환) · 장비 6칸(ItemFrame 5층 · 장비 등급 색 · 장착 체크 / 가방 초록 화살표 / 없음 흐림) · 레벨 행(배지 · 바 · 레벨업 녹 + 골드 · 승급 하늘 장비 n/6) · 이름 띠(세력 · 병종 원 · 등급 칩 · ★) · 스킬 패널(액티브 + 쿨 칩 · Lv 칩 · 행마다 레벨업 = 스킬서 · 골드 · 상한 = 회색 최대) · 메뉴 4버튼(정보 = 상세정보 + 도감 · 진화 = 조각 팝업 + 알림 점 · 각성 · 외형 = 준비 중) · 헤더 오른쪽 보유 n / 전체 칩 · 1080 폭 틀 가운데 고정
- 공통 크롬: 재화 바 띠 없앰(칩 · 아이콘 84 밖으로 · 재화별 + 단추) · 헤더 PanelFrame03 + 왼쪽 붙은 뒤로 · 하단 탭 TabFocus 솟음 판 + 광택 · 아이콘 104/118 · 라벨 = 선택 탭만
- UiKit.TypeKey · 캡처 드라이버 = 영웅 상세 등급 변형(그 영웅 장비 세트 등급) · 테스트 HeroDetail_Redesign_SkillRow_Swipe_Menu(117/117)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 데이터: Assets/Data/Gimmicks/stage_gimmicks.csv 455행(143 스테이지 · 1-1·1-2 없음 · 샘플 5 스테이지 16행 그대로) = 기획 tables/ 사본(생성·사전 검증 = 기획 tables/_stage_gimmicks_gen.py) → TKS/Import Gimmicks → StageGimmickTable(455)
- 테스트: Tests/PlayMode/StageGimmickPlacementTests 2 — 145 스테이지 GimmickLayer.Build · 편성 좌표 보정 이동 0 · 아군 스폰 반경 2 비움 · 해로운 지대 위 적 스폰 0 · 파괴 불가 장애물 사이 폭 2 통로 · 강마다 다리 · 기믹 많은 5 스테이지 적 턴 결정 ≤ 1.5 초
- 캡처: GimmickImporter.Capture -gimmickStages 1-10,2-10,… = 그 스테이지 시작 화면(전장 전체)만
- 실측: 컴파일 0 · 임포트 OK(정의 16 · 배치 455) · PlayMode 115/115 · console error 0 · AI 적 턴 132~299 ms
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 데이터: Assets/Data/Gimmicks/{gimmicks,stage_gimmicks,tutorial_tips}.csv + Assets/Data/AI/ai_weights.csv(기획 tables/ 사본) → 메뉴 TKS/Import Gimmicks(검증 · 오류 시 자산 불변) → Resources/Gimmicks/GimmickDb(16)·StageGimmickTable(16 + 팁 3) · Resources/AI/AiWeights(32)
- 레이어: GimmickLayer(전투 시작 = 스테이지 배치 · 배경 위 유닛 아래 · 원/사각/다각 · 색 도형 + 글자 · 내구 핍 · 강 콜라이더 = 다리 구간 제외 · 겹친 유닛 보정) · 장애물 = 병종별 내구 피해·튕김·창 목책 밀기·바위 굴림·기병 정지 · 투사체 pass/block/destroy · 폭약 광역(아군 포함)+밀기+불 · 책사 광역 덤불 제거 · 강 낙하
- 지대: 경로 스윕(독 1→2→3 % · 늪 ×2 · 불 10 % · 빙판 미끄러짐 · 고지 · 안개 · 군기 · 함정) · 양 진영 턴 시작 훅
- 규칙 개정: 보병 튕김 중 다른 적과 연쇄 1회 · 창병 반작용(spearRecoilRatio · 밀며 전진 폐기) · 기존 테스트 기대값 갱신
- 적 AI: Runtime/AI(Sim 가상 실행 · TacticalAI 후보·점수·난이도·턴 운영 · 1부 보스 액티브) · 조준선 = 가상 실행 예상 궤적·기믹 반응·지대 띠 · TKS/Gimmick Painter · 캡처 GimmickImporter.Capture
- 검증: 컴파일 0 · 플레이모드 113/113(신규 26) · console error 0 · 적 10기 턴 결정 62 ms
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- UnitView.SetCharging(on) · Charging · 돌진 중 PlayAttack/피격 클립 무시(색만) · SetFacing 세트 전환 시 돌진 포즈 유지
- ActionResolver.Resolve: 루틴 전 SetCharging(true) · 끝나면 false(생존 시 대기)
- 테스트: 출발 자세·돌진 포즈·피격 포즈 유지·종료 뒤 대기 단언
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- UnitView: FacingBack/FacingLeft · SetFacing(세로 성분 → back/front 세트 · 가로 성분 → flipX · 거의 0 인 축은 유지 · 세트가 바뀌면 같은 동작을 새 보기 클립으로 이어 재생) · 시작 = 아군 ↗ · 적군 ↘
- ActionResolver: Face() · Move/MoveStraight/Push/Bounce/플로우/기병 돌진/궁병 사격/밀린 아군 공격에서 호출 · 기병 복귀 Move(face:false)
- 테스트 Facing_FourWays_FollowsLastMoveDirection_BounceTurnsAround(유비 아트 4방향 + 튕김 뒤 아래 보기 + 밀린 적 위 보기)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>