PD 「title 씬에서 시작하면 로딩 90%에서 더이상 진행이 안된다」
→ 그래서 _MainMenu 로 우회했고, 그 탓에 우리 섬에 도달한 적이 없어
「풀밭이 전혀 안 바뀐다」로 이어졌다. 두 증상의 뿌리가 하나였다.
원인(PD 의 멈춘 화면에서 Lead 직접 실측):
list_loadingComplete = [False, True]
칸 1 = UI 준비(NewGameUI.cs:88) → True
칸 0 = 몬스터 프리팹 로드(MobControlMgrList.cs:28) → False
섬(Level01·맵 900)은 전투 맵이 아니라 MobControlMgrList 가 아예 없다
(실측 인스턴스 0) → 칸 0 이 영원히 False → 로딩창이 안 닫힌다.
씬·풀·게이트·룩·PC 는 전부 정상 생성돼 있었고 화면만 가려져 있었다.
조치: 섬 씬이 붙은 뒤 MobControlMgrList 가 없으면 칸 0 을 우리가 채운다.
전투 맵은 건드리지 않는다(그쪽은 원본이 채운다). 원본 파일 0줄 수정.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 「세이브가 경로마다 갈리면 안돼. 그냥 기존 세이브를 초기화하고
단일 경로로 맞춰」.
원인(816f 실측): IslandManager.Awake 가 saveFileName 을 활성 씬 이름으로
잡아, 섬 단독 Play 는 Level01.dat · 게임 정식 경로(Additive)는 InGame.dat
로 갈렸다. 섬을 키워 놔도 다른 경로로 들어가면 초기 상태가 나왔다.
조치:
- IslandManager.cs:119 **1줄** 훅 → WLIslandSave.ResolveSaveName()
- 새 파일 WLIslandSave.cs + SO(WL_Island · enabled_=1)
- 기존 세이브 4개(InGame/Level01/Level02/WL_FarmLook.dat) 백업 후 삭제
→ Temp/claude/island_save_backup_143818
- enabled_=0 이면 원래 동작(씬 이름)으로 복귀
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 「내가 실행할 때는 전혀 풀밭이 아니야 · 바닥이 완전히 같은 느낌이 나도록」
■ ① PD 실행 경로 실측 = 훅은 실제로 돈다(버그 아님)
InGame 활성 + Level01 Additive 재현: 머티리얼 1,575 렌더러 교체 · 풀 생성 ·
ReferenceLook on · 콘솔 error 0. 「안 나온다」가 아니라 「데모와 전혀 다르게 보인다」였다.
다만 이 경로에서만 생기는 실측 차이 2가지를 찾아 보고에 적었다
(세이브 파일이 활성 씬 이름으로 갈린다 · RenderSettings 가 InGame 소유).
■ ② 바닥 3요소 (같은 화각·같은 거리 캡처로 판정)
체크무늬 : 잔디 타일 텍스처는 단색(#A0E4A2) — 격자 0. 밭(Soil)의 칸 표시는
게임 기능이라 남기고 **색만** 데모 톤으로(soilTint·soilCheckerContrast).
바닥 색 : #AFEDAE → #A0E4A2 (화면색 평균 데모 #94BE81 ↔ 우리 #9AC37E)
풀 색 : 새 복사본 Farm_Grass_Demo.mat (_DiffuseColor #A6E39F · _ShadowDiffuseColor #95CC8F)
→ 풀이 바닥과 같은 색으로 깔려 「카펫」이 사라진다(에지% 8.09 → 1.96 · 데모 1.79)
밀도 : 2.5 → 1.8 (6.25 → 3.24 개/㎡)
🔴 Assets/FarmingIsland/** 0줄 · Assets/Script/** 0줄 · 3DPixelArtEnvironment 0줄 ·
ProjectSettings 0줄 · 전역 URP/품질 0. 되돌리기 = enabled_ = 0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 보고: 'OnStep' on animation 'Run' has no receiver!
원인(실측): WLIslandPcRig 가 FI 플레이어의 컨트롤러를 우리 치비 비주얼의
Animator 에 복사해 같은 클립을 함께 돌린다(816d). FI 의 Run 클립이 쏘는
OnStep 의 수신자 PlayerController(FarmingIsland/Scripts/Core/PlayerController.cs:243)
는 부모에 있는데, 유니티는 애니메이션 이벤트를 Animator 와 같은 GameObject
에만 보낸다 → 비주얼 자식에서 수신자 없음.
부모 Animator 가 이미 같은 이벤트를 PlayerController 로 보내 발소리는 정상
재생된다. 비주얼 쪽은 중복이므로 수신자를 만들면 발소리가 두 번 난다
→ 비주얼 Animator 의 fireEvents 만 끈다. 기존 파일 0줄 수정(자가 부착).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- WLIslandLook: RuntimeInitializeOnLoadMethod + sceneLoaded 로 Level01 에 머티리얼·조명·ReferenceLook 을 얹는다(씬 파일 무변경)
- WLIslandGrass: 데모 InstancesBehaviour 를 상속해 섬 타일 윗면에 풀·꽃·자갈을 GPU 인스턴싱(콜라이더 0 · NavMesh 영향 0)
- 윗면/길 마스크는 에디터에서 구워 SO 에 저장(FI 메시 isReadable=0 · FarmingIsland 임포트 설정 무변경)
- 섬 타일 텍스처를 데모 지면색 실측값으로 재생성(체크무늬 두 초록 → 한 색)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- NavMeshSurface.useGeometry = PhysicsColliders — RenderMeshes 기본값은 메시 Read/Write 를 요구해 콘솔 에러 100건(실측)
- 베이크 후 앵커 위 NavMesh 존재를 로그로 남긴다(WL_Dungeon01 실측: (0,0.07,0) 있음)
- 이름표·「들어가기」 버튼에 한글 TMP 폰트 지정(기본 폰트에는 한글 글리프가 없어 □ 로 나왔다)
- 던전 3 입구를 덤불 위치에서 (2.5,0,11) 로 이동(에디트 모드 레이캐스트 실측)
- 던전 입장 시 프롬프트 숨김
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- NavMeshSurface 기본값(collectObjects=All · useGeometry=RenderMeshes)을 그대로 쓴다(게이트 PASS)
- 섬 카메라 소유권 SO(islandCameraOwner 기본 1 = FI 카메라) · 떠날 때 되살림
- WL 전투 PC 는 Addressables 콜백으로 늦게 생긴다 → hidePcWatchSeconds 동안 감시해 숨김
- 프로브 전용 DebugSceneOverride(던전 복사본 씬 미등록 구간 검증용)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
무기용 값 = 덩어리 16 · 팔레트 12칸 (캐릭터 40/16 은 과하다 — 무기는 화면이 1/10)
- 6칸은 육안 기각: 08 방패 문양이 뭉치고 05_Bow_004 노란 장식이 초록으로 돈다(dHue 30.3°→0.03°)
- 채도 복원을 min(평균색 채도, 복원값)으로 제한 — 금속이 갈색으로 뜨던 1차 육안 기각 원인 제거
- Hue 는 ±8° 하드 클램프 · 전역 채널 이득 0
인게임 Play 실측(포스트 포함 · 게임 크기): 서로다른색 11종 전부 25% 이하
(Elven_Sword 82.6→7.7 · Wand 38.1→8.6 · Dagger2 65.6→15.0) · 고유색 최대 70(≤200)
캐릭터 기존 수치 악화 0 (167 · 5.64% → 167 · 5.64%) · 되돌리기 11/11 동일
코스튬 = 해당 없음(46종 전부 어른 Ai01 계열 · 스왑 대상은 110001 하나뿐 = 이미 도트화된 M05)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 가 「우리 게임의 기본 시스템을 FarmingIsland 씬의 시스템을 그대로 활용하고
싶다」고 채택했으므로 기반 시스템이 되었다. 미추적 상태로는 병렬 worktree 에
폴더 자체가 없어 워커가 작업할 수 없다(816c 가 선결 과제로 지목).
- Assets/FarmingIsland/** (1,195 파일 174MB · 섬 확장·상인·인벤토리·농사·축산·낚시·섹터 이동)
- Assets/Plugins/{Demigiant(DOTween), SimpleInput, UI} — FarmingIsland 컴파일에 필요
🔴 FI 씬 5개의 빌드 목록 등록은 ProjectSettings 변경이라 PD 승인 후 별건으로 한다
(F-31 재발 방지 — 임포트가 ProjectSettings 를 덮어쓴 사고가 있었다).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
측정 지점을 알베도가 아니라 **Play 화면 픽셀**로 옮겨 다시 쟀다(편집 모드 렌더는 무의미).
아레나 근접(직교 0.95) · 캐릭터 격리 마스크 · 덩어리(팔레트 칸) 지도 기준.
원인(실측 · 추정 아님)
ⓐ 소스 텍스처 = 무죄. *_WL.png 는 Suriyun 원본과 MD5 동일.
ⓑ 그림자색(_ShadowDiffuseColor) = 영향 0.2° 미만 — 중성/따뜻/어둡게 4종 비교.
ⓒ 포스트 그레이딩 Volume = 영향 0.1° 미만 — weight 0 으로 꺼도 색이 그대로.
🔴 진범 = 무드의 **조명**(키라이트 (1,0.78,0.46)x1.45 + 보라 앰비언트).
평면 색은 디테일이 없어 빛의 색조가 그대로 드러난다.
mood 0.30 -> 0 이면 금발·흰옷이 돌아오지만 고유색 132 -> 906(평탄함이 깨진다).
이번 조치 = 캐릭터 전용 휘도보존 역이득 _DiffuseColor (0.994, 1.024, 0.894)
씬·조명·814t 설정·ProjectSettings 는 하나도 안 건드린다.
유채색 가중 dHue 25.1° -> 17.0° · 머리칼 -16.9° -> -7.0° · 흰 튜닉 -74.1° -> -10.4°
붉은 바지 -7.7° -> +0.7° · 게임 크기 고유색 132 -> 121 (4.1 %)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
814x 실측: 림을 켜면 캐릭터 영역 고유색이 52 -> 261 로 되돌아간다
(림이 표면마다 새 밝기를 만들어 「넓은 면 = 한 색」을 깬다).
PD 도 「흰색으로 빛이 반사된 느낌」을 지적했다. 두 이유가 같은 곳을 가리킨다.
rimStrength 값(0.6)은 남겨 두어 켜면 그대로 복귀한다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
메시 UV 를 「색 하나를 가리키는 좌표」로 새로 굽는다. 삼각형 안에서 UV 가 상수라
화면에서 아무리 축소돼도 그 덩어리는 항상 단색 — 평균 날 디테일이 애초에 없다.
실측(WL_ArenaProto · 직교 10 · 1080x1920 · 캐릭터 2,996 px · 814u/814v 와 같은 축)
서로 다른 색 비율 89.3 % -> 1.7 % (합격선 <= 25 %)
캐릭터 영역 고유색 2,676 -> 52 (합격선 <= 60)
덩어리당 색 단계 - -> 평균 2.79 (14칸 중 13칸이 2~3 · 합격선 <= 4)
눈 진한 점 10 px -> 36 px (눈 1개 7x5 px)
색상(Hue) 오차 - -> 몸통 2.4° 피부 3.7° 머리칼 3.5°
삼각형 수 무변경 · 정점 2,520 -> 2,776 (+10 %)
원본 수정 0 — FBX/원본 png/프리팹/씬 전부 무변경. 메시는 복사본(.asset)에 UV 만 새로 굽고
런타임에 갈아끼운다. 되돌리기 = 새 SO 의 enabled_ = 0 이면 814s+814t 상태 100 %.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 「② 기존 텍스처를 이 화풍으로 변환으로 해보자」.
로컬 ComfyUI(127.0.0.1:8000) HTTP API 를 직접 호출 — MCP 불필요.
- 체크포인트 noobaiXLNAIXL_epsilonPred05Version(LoRA 학습 베이스 · PD 안내)
- LoRA ElinSpriteNoobLocon_byKonan 0.9
- img2img denoise 0.40 (0.30~0.50 비교 후 채택 · 0.50 은 배치가 틀어진다)
- 원본 알파 복원 + 팔레트 32/48/64 색 양자화
UV 무변경 확인: 갑옷/튜닉/바지/부츠가 전부 제자리에 찍힘(인게임 렌더 실측).
아직 머티리얼/프리팹에 꽂지 않음 — 후보 파일만.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 「왜 흰색으로 빛이 반사된 느낌이 나는거지?」
원인 = 림라이트(rimStrength 1.6) 가 밝은 면에서 흰색으로 포화.
색은 금색(1, 0.82, 0.5)이지만 세기가 높아 흰색으로 탄다.
외곽선 두께는 PD 승인값(캐릭터 1 / 배경 2.5) 유지.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- §1 실측: 부위별 텍셀→화면픽셀 밀도(앞면 삼각형 · 화면면적 가중) · 올리브 원인 규명
- 얼굴 face02_V1..V4 · 머리칼 Hair05_V1..V4 (원본 복사 → 제자리 가공 · UV/메시 무변경)
- 올리브 차단: HSV 의 V 만 조절(RGB 배율 금지 → 채널 포화 0) + 단별 Hue 를 기준색 ±cap 로 제한
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- ArenaWalker.body 가 비어 있어 스크립트가 자기 자신(빈 오브젝트)을 움직이고 있었다
→ body = PC_LH_M05 로 연결(PD 실측 보고 「캐릭터 움직임이 없어」의 직접 원인)
- body 가 비어 있던 탓에 Start() 의 Animator.fireEvents=false 도 캐릭터에 적용되지 않아
'Event_Idle' has no receiver! 가 33건 발생 → 빈 수신자 ArenaAnimEventSink 를 붙여
에디트/플레이 양쪽에서 차단(fireEvents 는 런타임 전용이라 에디트 모드를 못 막는다)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Animator.fireEvents=false: 클립 Idle 이 쏘는 Event_Idle 의 수신자(WizardActor)를
§1 에서 떼어 내 "AnimationEvent … has no receiver!" 가 2초마다 났다(실측 6회/12초).
빈 수신자 컴포넌트를 붙이는 대신 이벤트 발사를 끈다 → Play 콘솔 error 0.
- autoWalk 프로브(기본 off): 중앙→14 m 소요 시간을 실측하기 위한 씬 전용 스위치.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- PC_LH_M05 씬 인스턴스에서 게임 컴포넌트 7종 제거(WizardActor·NavMeshAgent·
Rigidbody·CapsuleCollider·SkinnedMeshAfterImage·WLPcScaleCompensator·
WLWeaponFitter) → 게임 초기화 없이 Update 가 돌며 터지던
KeyNotFoundException: 'Freeze'(Actor.cs:1065) 제거. 프리팹 수정 0.
루트 스케일 1.05266 · 몸 높이 1.21651 m 는 제거 전후 델타 0 실측.
- Main Camera 를 Demo.unity 실측값으로 이식: 직교 size 10 · euler(30,60,0)
· near 0.3 / far 500 · clear Skybox · depth -1 · HDR/MSAA on
+ UniversalAdditionalCameraData(post off · AA none · rendererIndex -1).
- 씬 라이트 3개에 UniversalAdditionalLightData 추가(데모와 동일 구성).
- Terrain.drawTreesAndFoliage false→true(데모와 동일).
- ArenaWalker.cs(신규 · 씬 전용): WASD 이동 + 방향 회전 + idle/run 상태 재생
+ 카메라 추적 + Terrain.SampleHeight 접지. 속도 3.9 / 회전 300 은
LH_M05.prefab NavMeshAgent 실측값.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- 새 씬 Assets/WL/Look/Arena/Scenes/WL_ArenaProto.unity (기존 씬·빌드 씬 목록 수정 0)
- 바닥 = Unity Terrain 80x12x80 + Demo_Grass/Demo_Dirt 레이어 + Demo Terrain.mat(ToonTerrain) — 데모 실측 방식 그대로
- 경계 = 반경 14 m 에 Stone_1/2 + Tree + Arch_Large/Small · 연못 Water_Plane · 배경 Windmill/House
- 캐릭터 LH_M05 중앙(스케일 1.05266 = f_Scale 0.7 x 보정 1.5038) · 프리팹 수정 0
- 조명/ambient/fog/스카이박스 = 데모 실측값 그대로
- 머티리얼 14종(+Terrain.mat) · 삼각형 29,875 (목표 15종/5만 이내)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 결정 「1. 바꿔. 2. 붉은 기사 M05로 해」 · 조사서 §C① ⓒ안.
- 새 프리팹 Assets/Res_Addr/PC/LH_M05.prefab — M05 모델 + Ai01 컴포넌트 구성 이식
(WizardActor·NavMeshAgent·Rigidbody·CapsuleCollider·SkinnedMeshAfterImage · Layer 3 · rootMotion 0)
무기 소켓 7/7 을 Ai01 과 **같은 본 경로**에 같은 로컬 TRS 로 재생성 → ClassConfig 무기 인덱스 무변경
Animator 아바타 = M05 자신의 Humanoid → 기존 pcanim_* 12개 + 이벤트 250개가 그대로 리타깃
- 되돌리기 스위치 WLCharacterSwapSettings(SO) — enabled/pcPrefabName/verboseLog · off 면 원본 100 %
- 크기 보정 WLPcScaleCompensator — 원 높이 1.1316 × 1.5038 = 1.7017 m(= Ai01)
→ 인게임 1.1912 m · 로비 1.7017 m 로 Ai01 과 동일. **테이블 ClassConfig 수정 0**
(f_Scale 을 고치면 스위치를 껐을 때 Ai01 이 1.79 m 가 되어 되돌리기가 깨진다)
- CapsuleCollider 는 루트 스케일을 받으므로 로컬 값을 1.5038 로 나눠 월드 크기를 Ai01 과 동일하게
- 원본 수정 = PCInfo.cs 1줄(상한) · Addressables 0 · Assets/Suriyun/** 수정 0(참조만)
실측: 머리:키 5.49 → 2.55 · 도트A 머리 픽셀 7.6 → 16.5 px (+115.5 %)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Assets/Suriyun/Scripts/MouseOrbitImproved.cs 와 기존
Assets/ResWork/Suriyun/Scripts/MouseOrbitImproved.cs 가 둘 다 전역 네임스페이스의
같은 클래스라 중복 정의로 프로젝트 전체가 컴파일되지 않았다(58cc4f663 소행).
둘 다 우리 게임 씬/맵에서는 쓰이지 않는 벤더 데모용 궤도 카메라라,
이번에 들어온 쪽만 지워 임포트 전 상태로 되돌린다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 「해상도만 저하된 느낌」 실측 진단:
캐릭터가 차지하는 픽셀이 84/62/47 px 로 도트 게임(16~48 px)보다 촘촘했다.
ortho 는 유지하고 픽셀 높이만 낮춰 42/31/23 px 로 맞춘다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PixelCameraManager.viewCamera/upscaledCanvas 는 [SerializeField] 가 아니라
프리팹에 저장되지 않아 인스턴스마다 항상 null → Initialize() 가 항상
FindAnyObjectByType 로 찾는다. Object.Destroy 는 프레임 끝 처리이므로
모드 전환(Teardown→Assemble 동일 프레임)에서 새 매니저가 아직 살아 있는
이전 리그의 뷰 카메라를 잡았고, 프레임 끝에 그것이 파괴되며
CanvasViewCamera.get_Aspect 에서 매 프레임 예외가 났다(PD 실측 200건).
FindAnyObjectByType 는 비활성 오브젝트를 제외하므로 파괴 전에 SetActive(false).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PD 실측: [카메라] 모드를 바꾸면 UpscaledCanvas.SetCanvasRenderTexture 에서
'Material has been destroyed' 예외가 매 프레임(콘솔 978건).
원인 = Object.Destroy 가 프레임 끝 처리라, 머티리얼 인스턴스를 지운 뒤에도
같은 프레임에 PixelCameraManager.LateUpdate 가 돌아 targetTexture==null 을 보고
RT 를 새로 만들고 이미 지운 머티리얼에 SetTexture 했다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
몹 처치마다 MobActor.Set_Die()(MobActor.cs:444)에서 NullReferenceException 이 났다.
원인 = 프리팹 저장 상태가 비활성인 IngameUIs 가지 아래의 MonsterSimpleInfo 를
스테이지 진입 때 SetActive(false) 해 버려서, 가지가 켜져도 그 노드만 꺼진 채 남아
Awake 가 영영 안 돌고 MonoBehaviourSingletonTemplate.Ins 가 null 로 남은 것.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>