- 충돌 1건 Assets/Resources/Units/art_size.csv: 이 PC(눈·얼굴·머리 칸 추가 · lock/adjust) 쪽을 기준으로, 원격의 여포 수정(body_px 819 → 718 · 깃털 제외 실측 메모)을 같은 행에 옮겨 적음 · meta.json bodyHeightPx 718 은 원격 그대로
- 확인: 재컴파일 성공(오류 = 원격 IB 이펙트 프리팹 첫 임포트 경고 2건) · UnitArt_SizeTable 테스트 1/1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
충돌 = Assets/Resources/Units/art_size.csv 1건: 원격 새 표(113줄)를 기준으로 하고 dz_boss_lvbu 줄만 이 PC 수정(body_px 819 → 718 · 깃털 제외 · 여포 크기) 다시 적용 · size_px 는 원격 재측정 447.1 유지.
CLAUDE.md 는 자동 병합(충돌 표시 0 · 양쪽 절 유지).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 기본 공격(돌진) = IB 이펙트 그대로 시험: 앞 빛 물결 · 속도 꼬리(진영색 4색 · 멈춘 자리에서 0.12초 흐려짐) · WL 흙먼지 · 기준점 dash(아래로 갈수록 발 쪽) · 히트 이펙트 제거(PD 지정 대기)
- 슬링샷 방향 결정 UI = IB GameTouchArrow 이식(IbAimArrow · IB 유닛 반지름 0.496 기준 비율) + 진행 중 캐릭터 연출(IbUnitMarks: 발밑 원 · 몸 빛 · 조준 중 속성 방울) · 값 표 Resources/Skills/ib_ui.csv
- 기병: 복귀 영역(채운 원 · PreviewCavalryReturn) · 복귀 때 돌아서기(UnitView.TurnAround)
- 타격감: HitFeel + CameraController.Shake · 표 hit_feel.csv(IB 흔들림 값은 디컴파일에 없어 추정값)
- 액티브 스킬 1차 연출(Fable 제안 56 스킬 · 사본 Resources/Fx/TKS_Fx_Sk_*) · SkillVfx 확장(s_camp · f_fwd · f_drift · f_fade · s_over · b_flat · 트레일 페이드) · 셀화 셰이더 포트
- 2D 돌진 시험본(Dash2D · Aura2D test_aura) · 이전 시험 행은 skill_vfx.csv 에 # 주석
- 여포 크기: dz_boss_lvbu 몸 높이 819 → 718(깃털 제외 · 말 탄 유닛 머리 끝 상한 때문에 작아졌음)
- 원본 = Assets/VFX/IB(쿠로네코 · GUID 유지 · Tools/wl_vfx_import.py --skip-scripts) · 사본 도구 Tools/make_ib_fx_copies.cs · make_ib_camp_textures.py · build_dash2d.cs
- 테스트 PlayMode 118/118 통과 · 자동 재직렬화(png meta · UITheme · ProjectSettings) 제외
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PD: 「전위, 태사자 등과 같이 영웅 목록에서 위치가 너무 위쪽에 등장하는 영웅은 위치를 조금 더 내리고 크기를 약간 더 키워」 · 「여전히 방향이 반대로 되어 있는 유닛 체크」 · 「소교와 초선은 복장·헤어는 좋으나 생김새·소품(부채)이 너무 같다」
- 원인: 카드가 머리 끝(관·투구 꼭대기)을 맞춰서 관·투구가 낮은 유닛은 얼굴이 위로 뜸(카드 위 눈 높이 기존 중앙 216.5 · 허저 −62 · 전위 −48 · 태사자 −31 px)
- 크기 표 eye_up_px(대기 그림 눈 높이 · 발 위 px · 자동 + 장비·하후돈·축융 수동) → UnitArt.EyeUpPx → HeroScreens 카드 = 눈 줄(걷는 216 · 기병 210 = 기존 20종 중앙값) 맞춤 · 없으면 머리 끝 맞춤
- 25 px 넘게 높던 12종 adjust × 0.95(5 % 크게)
- 방향 판정 = 두 눈 가운데 ↔ 얼굴 피부 폭 가운데(머리 실루엣은 투구·끈에 속음) + 확대 확인 → 원술·허저 반전 · 축융 = 1차 반전이 오판이라 되돌림 · 출발·돌진 = 왼쪽 0
- 소교 = 동그란 얼굴·발그레 볼·밝은 웃음 + 대나무 피리 · 초선 = 가는 아몬드 눈·붉은 입술 + 춤 비단 리본(옷·머리 문장 그대로 · seed 51~54 중 · QA PASS B 0)
- 테스트(고친 부분만): UnitArt_SizeTable · Lobby_Tabs_Back_ComingSoon · UILayerTests 각 1/1 · error 0 · 캡처 hero_list
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 심볼 그림 = 검은 바깥 테두리 + 흰 채움만(원본 안쪽 선 = 베벨·명암처럼 보여 뺌 · Tools/class_symbols.py --inner-lum 기본 0)
- 모든 자리에서 심볼 그림자 제거(목록·도감 카드 · 영웅 상세 이름 띠·스킬 행 · 스테이지 팝업 · 전투 HUD)
- 확인 캡처 = 영웅 목록만(-uiOnly) · 테스트 118/118 · console error 0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 병과 심볼 = 단색(채움 한 색 · 안쪽 선 = 뚫린 선 · 테두리 없음 · Tools/class_symbols.py 기본값 · --outline = 구 방식) · 모든 자리에서 뒤 원 틀 제거(목록 카드 · 도감 카드 · 영웅 상세 이름 띠 · 스킬 행 · 스테이지 팝업 적 구성 · 전투 HUD 유닛 판) · 그림자만
- 진영 원 배지(위·촉·오·군) = 영웅 상세 이름 띠 · 도감 카드에도(구 세력 깃발)
- 영웅 목록 카드: 걷는 유닛 머리 끝 +36(발이 카드 아래로) · 말 탄 유닛(크기 표 mounted) ×0.72 + 전신 높이 상한 390(여포 = 크기 표 size_px 449 로 혼자 크게 나오던 것 맞춤)
- 테스트 118/118 · console error 0
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>
- 보물 상자: 카드 뒤 무대(문양 흰 5 % + 바닥 그라데이션) · 카드 680×760 · 상자 320 + 흰 금빛 600 · 확률 칩 h60 글자 30 · 내용물 줄 = 카드 아래 어두운 띠 위 흰 글자 · 상자 행 선택 = 흰 테두리 깜빡 + 1.08 배 · 비선택 어둡게 25 % · 기본 선택 = 보유 > 0 인 첫 상자(직접 고르기 전까지)
- 연무장: 「이벤트」 = 카드 안 꼬리 칩(돌출 0) · 일일 던전 입장 칩 아이콘(달력) · 아이콘 칩 글자 왼쪽 정렬(InfoChip 공통)
- 내정: 게이지 800(명세) · 누적 시간 = 게이지 아래 줄
- 전투 HUD: 스킬 상태 = 한 줄 짧게(사용 가능 · 예약됨 · 쿨 n턴 …) · 뒤 금빛 560 · 위 안내 문장 = 어두운 칩 위 칸 맞춤(잘림 제거) · 유닛 판 y 150 · 칩 h56 글자 30 · HP 28
- 결과: 금빛 안쪽 한 겹 추가
- 검수 결함 1(내정 「전 규격 55~70 % 축소」)은 원본 1080×1920 캡처 실측(제목 띠 ≈ 69 · 수확 버튼 128)으로 축소 그림 환산 오류 판단 · 게이지 길이만 실제 차이 → 반영
- 테스트 117/117 · console error 0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 보물: 목록 바탕 · 서브탭 · 보유 칸 = 보물 아이콘(납품 tre_* 없으면 기본 스탯별 팩 임시 tre_stat_* · 미보유 흰 25 % 실루엣) + 이름 띠 CardFrame01_Bottom · 등급 범례 칩 Round10 · 효과 줄 칩
상자 탭 = 포인트 띠 BannerFrame05 + 가는 주황 바 + 보상 상자 · 상자 카드 CardFrame03(상자 색 + 안쪽 + 광택) + 상자 300 + 뒤 금빛 · 등급 칩 + % 한 줄 · 화살표 아이콘 · 열기 Primary 노랑 + 보유 칩(없으면 회색) · 상자 행 ItemFrame 150 + 수량 칩 + 선택 FocusLine 깜빡
상자 색 = 코드 상수(ChestColor) → 테마 chest_<id> · 칸 색 chest_<id>_bg/deco/light/glow(C45)
- 연무장: 목록 바탕 · 카드 = 일러 자리(픽토그램 256 흰 25 % · 임시) + 요약 한 줄 + 어두운 판 칩 2줄(입장 아이콘 + 값 · 보상 칸 76) + 상태 칩 · 규칙 문장 → ⓘ 팝업 · 적장 토벌 「이벤트」 뱃지
- 내정 순찰: 목록 바탕 · 서브탭 · 섹션 「순찰」(레벨형 게이지 군량색 + 배지 「7h」) · 「시간당 수확」 스탯 칸 4(아이콘 64 · 값 44 Sen) · 「쌓인 보상」 타일 4 + 수량 칩 · 수확 Primary 녹 · 광고 2배 Secondary 하늘 + 횟수 · 즉시 Secondary 보라 + 보옥 비용
- 전투 HUD: 유닛 판(초상 원 마스크 + 이름 · 병종 원 · 체력 바 색 단계 · 공/방 칩 · 슬링/사거리 칩 · 상태) · 수 칩 = 아군/적 아이콘 + 숫자 · 스킬 사용 가능 = 뒤 금빛 호흡 · 기본 조작 문장 삭제(상황 안내 유지)
- 공통: Sen 에 「×」 글리프가 없어 수량은 「x」 · 회색 버튼 글자 흰 외곽선 · 금빛 틴트 α 1(Glow_Circle01 가운데 α 0.5 실측)
- 테스트 117/117 · console error 0
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>
- Resources/Units/liubei·zhangfei·zhaoyun·huangzhong = 스켈레탈 B단계 export(QA B 0) · guanyu = 정지 그림 유지(뒷모습 등판 B 1 → 수정 중)
- Resources/Units/cc_infantry·spear·cavalry·archer·boss_caocao · wei_infantry·spear·cavalry·archer·boss_simayi = 원화 세션 3·4차 납품(QA S4 PASS)
- UnitArtMeta.bodyHeightPx(리그 export = ppu · 정지 그림 = 불투명 폭 ≥ 30 % 행 범위) → UnitArtData.CharHeightWorld 우선 사용 — 스켈레탈 세션 안내(charHeightPx 는 무기 포함이라 긴 무기 인물이 작아짐) · 기존 meta 24개 갱신
- CLAUDE.md 아군 아트 설명
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>