Commit Graph

1273 Commits

Author SHA1 Message Date
깃 관리자 323630badc Merge branch 'wl/gameplay/WL-816o-grass-cloud-edge' 2026-09-15 02:10:56 +09:00
깃 관리자 b23489def9 [WL-816o] 섬 풀밭 = 구름 경계 기준 최적화 배치 (#816)
PD 「데모와 같은 비주얼 · 잔디를 많이 심지 않는 최적화 로직(구름 그림자 기준 배치)」

- WLCloudShadow.cs(신규) — 데모 Toon 셰이더의 구름 그림자를 CPU 에서 같은 식으로 재현.
  CloudShadows/ToonLighting/ToonRamp 서브그래프 + CloudNoise.hlsl(6 옥타브 FBM) +
  SimplexNoise3D.hlsl(Ashima snoise) 1:1 이식. 값은 전부 머티리얼에서 읽는다(C45).
  노이즈는 성긴 격자(1 m)에서만 계산하고 판정 격자(0.3 m)는 겹선형 보간 → 굽기 2.2 ms.
- WLIslandGrass.cs — 후보를 캐시하고, 띠 밖 후보를 잘라 낸다. 구름이 흐르면
  RefreshCloudEdges() 로 「고르기」만 다시 한다(타일·제외 사각형 재수집 없음).
- WLIslandLookSettings.cs — §2 값 9개(되돌리기 스위치 cloudEdgeEnabled=0 → 816n 상태).
- WLIslandLook.cs — 기존 확장 감시 코루틴에 주기 갱신 1줄 추가.

실측(4타일 · PD 구도 12 m/45°/fov 60): 인스턴스 1,155 → 382(33.1%) ·
삼각형 10,380 → 3,435(33.1%) · 드로우콜 +2 유지 · 띠 면적 16.8%(데모 실측 15.7%).
원본(3DPixelArtEnvironment · FarmingIsland · Script · Packages · ProjectSettings) 0줄.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 02:09:26 +09:00
깃 관리자 3402dd7101 Merge branch 'wl/systems/WL-816p-range-ring' 2026-09-15 01:56:44 +09:00
깃 관리자 eed09cd18e [WL-816p] 플레이어 사거리 원 표시/소멸 (#816)
적(MobActor·보스)이 공격 사거리 안에 들어오면 플레이어 발밑에 반투명 흰색 원을 띄우고,
사거리 안에 적이 3초 이상 없으면 소멸시킨다(PD #816 원문).

- 반지름 = 게임이 실제 공격 판정에 쓰는 값. MyActor.cs:44/47/222 의 reach 식을 그대로 재현하고,
  런타임 NavMeshAgent.stoppingDistance(= PCActor.cs:381 m_ClassData.f_AttackRange) 의 양수 최솟값 +
  eStat.AttackRange_Up + WLTargetingSettings.immediateAttackMargin(0.2) 로 잡는다. 코드 상수 0(C45).
- 그리기 = 815f 예고 판과 같은 URP Unlit 반투명 + 런타임 생성 원판 메시(새 셰이더·에셋 0, 드로우콜 +1).
- 값 전부 SO: Assets/WL/Combat/Settings/Resources/WL/WLRangeRingSettings.asset
- 원본 Assets/Script/** 0줄 · 설치는 RuntimeInitializeOnLoadMethod(AfterSceneLoad) 1점.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 01:55:37 +09:00
깃 관리자 2fb0b8489e Merge branch 'wl/gameplay/WL-816n-ground-match-arena' 2026-09-15 01:38:55 +09:00
깃 관리자 6ff9df92a9 [WL-816n] 섬 풀밭 = 데모 배치 규칙(밀도 2.5) + 구름 그림자 5배 감속 (#816)
- 실측: 데모 바닥의 「등고선 띠」 = 구름 그림자 (고유색 99→59 · 색경계% 0.13→0.02 · _Cloud_Strength=0 격리 렌더)
- 실측: 데모 풀 배치 = 균일 격자(TerrainInstancesBehaviour · Density 2.5 · PositionVariance 0.5) — 경계 마스크 아님
- 실측: 데모 풀/바닥 밝기비 0.933 · 보이는 풀의 88%가 경계대(면적 15.7%)에 몰림 = 5.6배 집중
- 적용: scatter 밀도 1.8→2.5 · Farm_IslandTop_Arena/Farm_Grass_Arena 신규(구름 _Cloud_Change 0.005→0.001 · _Cloud_Movement (1,1)→(0.2,0.2)) · 풀색 x0.93

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 01:36:47 +09:00
깃 관리자 d32399fa0b [WL-816] 게임 시작마다 섬 세이브 초기화(resetSaveEveryStart 1) + 몬스터 공격 예고 바닥 판 off(decalEnabled 0) (PD 2026-09-15 · #816)
- WLIslandSave.Prepare: resetSaveEveryStart 면 실행 1회당 1번 세이브 삭제·던전 해금 0·보류 보상 0(던전→섬 복귀 시엔 아님). 되돌리기 = 0.
- WLTelegraphSettings.asset decalEnabled 1→0 (값만).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 01:18:59 +09:00
깃 관리자 546ea28b43 Merge branch 'wl/gameplay/WL-816k-demo-water' 2026-09-15 01:08:48 +09:00
깃 관리자 7fc9c10619 [WL-816k] 섬 바다 = 얕은 물 그라데이션 · 둘레 흰 띠 제거 (#816)
PD 2026-09-15: ① 흰 거품띠가 안개 같다 ② 물이 섬을 통과하는 느낌.

데모(Critter) 물 셰이더는 우리 카메라/URP 에서 **돌긴 한다**(복사본 Farm_Water_Demo.mat ·
깨짐 0 · queue 3000 · URP-Balanced 깊이·불투명 텍스처 둘 다 on 실측). 다만
ⓐ 무늬가 UV 기반이라 섬 물 평면(1000 m)이 데모 평면(10 m)의 100배 → 무늬가 사라지고
ⓑ 색 6안을 돌려도 814t 톤(#5C96C2)에 못 닿는다(최선 #2EBCF3 · 거리 77.2 · 쨍한 원색)
ⓒ 물가Δ 가 음수(-0.02) = 섬에 반응하지 않는다.
→ 채택하지 않고 대안 ⓑ 로 갔다(증거용으로 복사본은 남긴다).

채택 = Farm_Water_WL_F.mat (= E 복사본 · ToonWaterU · 814t 톤 그대로)
  FoamColor (0.62,0.82,0.90) · FoamDistance 2.2 · FoamEdge 3
  816j2 가 꺼 둔 깊이 거품을 **흰 거품이 아니라 물색을 밝힌 색**으로 되살려
  섬과 만나는 선에 얕은 물이 생기게 했다 → 물가Δ 0.0736 → 0.1129,
  밝은(흰) 픽셀 0.00 % · R-B 0(중립) = 안개로 읽힐 흰 덩어리가 없다.
SO: waterTo = Farm_Water_WL_F · shoreFoamEnabled 0 (둘레 띠 끔).

게이트 PASS(resident · up_to_date · console error 0) · ProjectSettings/ Packages/ 0줄
걷기 6.00 m · grounded=True.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 01:01:59 +09:00
깃 관리자 9c0852a92b [WL-816] 카메라 한 단계 더 당김 — 섬 15→12 m · 던전 13→11 m (PD 「둘 다 조금 더 확대」 · #816)
값 2칸(WLIslandSettings.asset). 되돌리기 = 15 / 13.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 01:01:27 +09:00
깃 관리자 858f31a930 Merge branch 'wl/systems/WL-816l-dungeon-entry' 2026-09-15 00:58:10 +09:00
깃 관리자 9c62123291 [WL-816l] 던전 입장 카메라 안정 + 더미 캐릭터 제거 (#816)
더미 = 던전 씬 2개의 별도 루트 PC_LH_M05(전시용 치비) + ArenaWalkerRig(이 리그가 body 로 치비를 걷게 한다).
FixDuplicates 는 ArenaWalker 가 붙은 오브젝트만 꺼서 치비가 그대로 남았다 → 두 씬에서 제거(루트 10→8).
카메라 = 입장 프레임에 위치만 순간이동하고 회전은 4%/프레임만 도는 원본 CamStatus 0 가지(RealCamera.cs:199·208)와
StageDirector.Enter 의 PC 워프가 원인. WLDungeonCameraRig 를 실행순서 -100 으로 당겨 LateUpdate 에서
최종 구도로 즉시 앉히고, 던전 로딩 화면은 정착·입장 뒤에 닫게 했다. 원본 0줄 · 되돌리기 SO 스위치 4개.

실측(프레임별 · 전→후): 회전 튐 0.46°+6.89° → 0.00°+0.00° · 워프 뒤 2 m 추적 지연 → 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 00:55:38 +09:00
깃 관리자 9ae58d10ac Merge branch 'wl/ui/WL-816m-dungeon-result' 2026-09-15 00:54:18 +09:00
깃 관리자 87fdb49648 [WL-816m] 던전 결과창 = 던전 번호 + 획득 골드 (#816)
PD 원문(2026-09-15) 「클리어 던전은 무조건 11로 나오고 획득한 재화 정보를 알 수 없어」.

- 결과창 제목 = 「던전 N 클리어!」 (WLDungeonDef.displayName) · 행에 「획득 골드 +96」 추가
- HUD 단계 라벨 = 「던전 N」
- 판정 = WLDungeonSceneSetup.Current 하나 · 골드 = WLIslandBridge.ComputeGold 재사용(식 1곳)
- 문구·형식 전부 SO(WLStageUiSettings 던전 절 7필드 · C45) · C8 롤백 = dungeonModeEnabled 0
- #815 스테이지 모드 무변경(구 4인자 경로와 캡처 MD5 동일) · Assets/WL/Island/** 0줄
- 게이트 PASS(resident · console errors 0) · 프로브 28/28 PASS

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 00:50:14 +09:00
깃 관리자 ed4c305b20 [WL-816] 섬 카메라 거리 SO 화 — FI PlayerVirtualCamera(FramingTransposer) 22→15 m 를 섬 로드 때 덮음 (PD 「섬도 더 가까이」 · #816)
- WLIslandSceneSetup.ApplyIslandCameraDistance: 섬 씬의 Cinemachine 가상 카메라(islandVcamName)의 m_CameraDistance 를 islandCamDistance 로. FI 씬·코드 0줄.
- WLIslandSettings: islandCamDistance 15 · islandVcamName PlayerVirtualCamera 신설 · camDistance 는 기준 기록값 22 로 복원(던전은 dungeonCamDistance 13).
- 되돌리기 = islandCamDistance 0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 00:46:35 +09:00
깃 관리자 aae6aa8fbd [WL-816] 카메라 거리 당김 — 섬 22→15 m · 던전 18→13 m (PD 「둘 다 더 가까이」 · #816)
값 2칸만(WLIslandSettings.asset). 되돌리기 = 22 / 18.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 00:32:22 +09:00
깃 관리자 57b4865c5f Merge branch 'wl/systems/WL-816i2-dungeon-cam' 2026-09-13 18:44:01 +09:00
깃 관리자 0087a6cab5 Merge branch 'wl/gameplay/WL-816j2-water-fix' 2026-09-13 18:21:02 +09:00
깃 관리자 2e941b31fd [WL-816j2] PD 화면에서 물 다시 맞춤 + 섬 둘레 흰 거품 띠 (#816)
PD 지적 3가지를 PD 구도(FOV 60 · 45° · 22 m · 1280×720)에서 다시 맞췄다.
① 분홍 얼룩 = 깊이 기반 Foam 이 과했다 → **끈다**(FoamColor = 물색).
   화면 실측 물가 거품 38.36 % → 2.08 %.
② 거품이 분홍 = 후처리가 밝은 곳을 분홍으로 민다 → 화면에서 R−B 를 재서
   중립으로(R−B +23 → −1). 띠는 URP Unlit 흰색.
③ 「금 간 유리」 = 보로노이 칸 2.5 m 가 판유리처럼 읽혔다 → 1.0 m 로 잘게 +
   LightColor 0.42/0.72/0.845 · FoamShadowColor 흰색. 잔무늬 대비 0.074 → 0.037.
   바다 평균색은 #5C96C2 → #5794C1 로 그대로(816h 톤 유지).

둘레 띠(PD 선택 ⓑ) = 새 `WLShoreFoam` 이 섬 윗면 footprint 의 거리장을 따라
메시 띠 1장을 만든다. 사방 전부 · 드로우콜 +1 · 삼각형 1,280(타일 4칸).
확장은 816e 훅(`RequestGrassRebuild`)에 얹어 새 가장자리도 자동.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 18:10:55 +09:00
깃 관리자 6cb9f40944 [WL-816i2] 던전 재입장 시 전투가 시작되지 않던 것 수정 (#816)
- 원인(실측): 전투 시작 신호는 RealCamera 의 카메라 연출이 끝날 때 나온다 —
  PCActor.StartCam → Set_Target(pc, CamRot_Portal) → CamStatus=0 + list_tfCamactionTarget.Add(pc)
  → LateUpdate 가 목록을 다 비우면 Start_Game() → ActorInfo.All_Stop(false) + DungeonInfo.Start_Dungeon.
  그런데 원본에 그 목록을 비우는 곳이 없어 맵을 바꾸면 **죽은 Transform** 이 남고,
  재입장 때 `camTarget.position`(RealCamera.cs:199)이 MissingReferenceException 을 던져
  LateUpdate 가 매 프레임 끊긴다 → Start_Game() 이 영영 안 불려 전투가 멈춘 채로 남는다.
  (816i 가 Get_PortalPos 콜백을 되살리기 전에는 이 경로 자체가 안 돌아 드러나지 않았다.)
  → 죽은 항목만 걷어내고, 비면 지금 대상을 한 개 채운다(원본 0줄 · SO 로 끔).
- 같은 씬을 쓰는 던전(1·3 = WL_Dungeon01, 2·4 = WL_Dungeon02)에서 씬 이름으로만 찾느라
  **언제나 앞 줄**의 스테이지가 돌던 것 수정 — 입장 요청(Pending)을 우선한다.
  실측: 던전 3 입장 시 stageIndex 12·보상 192(전에는 10·96).
- 던전 전용 카메라 거리(dungeonCamDistance)를 SO 에 분리(섬 값은 그대로).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 18:06:38 +09:00
깃 관리자 30c73321e9 Merge branch 'wl/gameplay/WL-816j-water-detail' 2026-09-13 17:37:20 +09:00
깃 관리자 f9b831ddc0 Merge branch 'wl/systems/WL-816i-dungeon-enter' 2026-09-13 17:35:56 +09:00
깃 관리자 9103c7442e [WL-816j] 실측 스크립트·로그 (PD 경로 확인 · 데모 비교 · 되돌리기) (#816)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 17:33:18 +09:00
깃 관리자 84ade4b619 [WL-816i] 던전 진입 에러 제거 + 카메라 구도 고정 (#816)
- "Screen position out of view frustum" 의 진짜 원인을 실측으로 확정: 좌표가 화면 밖이라서가 아니라
  **카메라 투영이 깨졌을 때**만 난다(near==far · 직교 size ≤ 0 · aspect ≤ 0). 꺼진 카메라는 무관.
  → 깨진 투영을 찾아 되살리는 감시(0.5초 주기 · SO 로 끔) 추가.
- 섬 카메라 실측값(각 45° · 거리 22 m · FOV 60 · 원근 · 고정 방향)을 SO 에 담아 던전에 적용.
  RealCamera 의 (cameraHeight, DistanceAway, DistanceUp, rotateAround) 로 역산해 넣는다.
- 이동 방향 리드(#755) 배율을 SO 로 노출(기본 1 = 지금 그대로 · 0 이면 섬과 완전히 같은 고정 구도).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 17:29:40 +09:00
깃 관리자 89540cab17 [WL-816j] 바닷물 무늬 간격 + 섬 가장자리 물보라 (#816)
무늬가 넓어 보이던 원인(실측) = 물 평면이 1000×1000 m 인데 UV 는 0~1 뿐이라
Size 7.83 로는 보로노이 무늬 1칸이 21.3 m (섬 타일 8 m · 캐릭터 1.19 m).
Size 66.67 로 올려 1칸 2.5 m. 흐름 0.8 m/s(실측 1.16). 무늬 줄 밝기만 낮춤.
물보라 = 셰이더에 이미 있는 깊이 기반 Foam 의 값만 조정(FoamDistance 6 ·
FoamEdge 1 · 거품알 0.75 m) — 새 시스템·새 렌더러 0.
색(WaterColor·DarkColor)·DeepDistance·Height·WaweSpeed 는 816h 채택값 그대로.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 17:26:48 +09:00
깃 관리자 f2e89653ed [WL-816i] 던전 진입 MissingReference 제거(맵 노드 1개로 상주) + 섬 구도 카메라 (#816)
- LoadMapMgr 파생 노드를 씬마다 새로 만들지 않고 DontDestroyOnLoad 하나로 상주시킨다.
  씬 전환에서 파괴된 노드를 정적 Ins 가 계속 가리켜 Get_PortalPos 의 StartCoroutine 이
  MissingReferenceException 을 내던 것을 없앤다(원본 LoadMapMgr.cs 0줄 · 파생 + private 필드 주입).
- 맵 프리팹이 없어 m_MapData 가 영원히 null 이라 Co_Get_PortalPos 가 끝나지 않던 것도 함께 해결 —
  꺼진 오브젝트에 런타임 MapData 를 만들어 넣는다(MapData.Awake/Start 미실행 = RenderSettings 무변경).
- 던전 씬의 아레나 룩 카메라(직교 · MainCamera 태그)가 전투 화면을 차지하던 것을 끄고
  전투 카메라(RealCamera)만 남긴다.
- WLDungeonCameraRig — 섬(FI Cinemachine) 실측 구도(각 45° · 거리 22 m · FOV 60 · 원근)를
  던전 카메라에 그대로 적용한다. 값은 WLIslandSettings SO.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 17:14:48 +09:00
깃 관리자 9aaddae676 [WL-816] 세이브 단일화가 실제로는 동작하지 않던 것 수정 (#816)
816g 가 실측으로 지목: WLIslandSaveSettings.asset 의 m_Script 가 {fileID: 0}
이라 Resources.Load 가 null → 세이브가 여전히 Level01.dat / InGame.dat 로
갈리고 있었다(33afe0b8d 는 코드만 들어가고 설정이 안 붙은 상태였다).

원인: 유니티는 ScriptableObject 를 **클래스 이름과 같은 이름의 .cs 파일**
에서만 MonoScript 로 인식한다. 그 클래스가 WLIslandSave.cs 안에 있어
m_Script 를 바인딩할 수 없었다.

조치: WLIslandSaveSettings.cs 로 분리 + .asset 의 m_Script 를 새 GUID 로.
검증: ResolveSaveName("InGame") = "WL_Island" (런타임 실측) · 컴파일 오류 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 16:50:45 +09:00
깃 관리자 1c41891d2c Merge branch 'wl/systems/WL-816g-gate-platform' 2026-09-13 16:46:08 +09:00
깃 관리자 b661d16bb1 [WL-816g] 발판 1회성(자리마다 한 번) + 새 타일 외곽선 맞춤 + 던전 로딩 보정 (#816)
PD 추가 지시 2건.

① 「던전 열기는 한 번만 · 이후 같은 자리에 또 등장하면 안 된다」
   던전 한 줄 = 발판 한 자리(`WLDungeonDef.platformUseFarm`·`platformPosition`).
   값을 치르면 그 자리는 영영 비고 다음 발판은 표가 지정한 **다른 자리**에 선다.
   해금 수는 PlayerPrefs 에 남겨 껐다 켜도 유지된다(실측: Play 재시작 후에도
   던전 1 그대로 · 밭 자리 발판 없음 · 다음 발판만 (-2,0,-2) 가격 30).
   FI `RefreshIsland` 의 가격표 재생성이 우리 발판을 되살리지 않는 것도 실측
   (섬 확장 4→5칸 후 발판 수 1 유지 · 자리 그대로).
   덤으로, 골드가 많을 때 가만히 서서 던전이 연달아 팔리던 것도 막았다.

② 던전 진입 멈춤
   던전 씬에는 `MobControlMgrList` 가 0개다(실측: WL_Dungeon01·02·ArenaProto 전부 0).
   섬과 같은 이유로 로딩 칸 0 이 안 찬다 → 던전 표의 씬 이름을 로딩 보정 대상에 포함.

③ §1 남은 몫 — 새로 연 타일이 `WL/HullOutline` 패스를 못 받아(슬롯 1 vs 2)
   경계에서 테두리 유무가 갈렸다. 열린 직후 기존 타일의 머티리얼 배열을 그대로
   물려준다(새 머티리얼 0개). 실측: 8칸 전부 재질 조합 1가지.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 16:42:33 +09:00
깃 관리자 71d29a4621 [WL-816g] 초기 발판·던전 해금 흐름 — 밭·던전 숨김 + FI Purchaser 재사용 + 시작 골드 10 (#816)
PD 지시 3건 중 §2·§3.

- 초기 상태: 밭(Farm·Soil) 렌더러·콜라이더만 끄고(오브젝트는 살려 둔다 —
  끄면 섬 확장 때 FI 가 꺼진 오브젝트에서 코루틴을 시작해 콘솔 에러가 난다),
  던전 입구는 해금한 수만큼만 세운다. 처음에는 0개.
- 발판 = FI 가 섬 확장에 쓰는 **가격판 프리팹 그대로**(PD 정정: 새 모델 금지).
  실측으로 프리팹 렌더 범위를 재서 밭 한가운데·바닥 바로 위로 맞춘다
  (원본은 물 위 y≈-0.5 에 눕도록 돼 있어 섬 위에 그냥 놓으면 지면 아래로 들어간다).
- 지불도 FI `Purchaser` 그대로 — 보이지 않는 더미 `Island` 를 대상으로 물리고
  그 `OnActivated`(public event)를 받아 던전 표의 한 행을 켠다. FI 코드·프리팹 0줄.
- 시작 골드 500 → 10. `IslandManager.Awake` 안에 이미 있던 1줄 훅(세이브 이름)
  시점에서 `startingMoney` 를 바꾼다 = FI 새 줄 0.
- 던전 하나 = 발판 한 자리. 값을 치르면 그 자리는 영영 비고 다음 발판은 다른 자리.
- 던전 씬도 `MobControlMgrList` 가 0개라 로딩 칸 0 이 안 찬다 → 던전 표의
  씬 이름을 로딩 보정 대상에 포함.

되돌리기: `WLIslandSettings.gateFlowEnabled = 0` 하나로 지금 상태 100 %.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 16:42:32 +09:00
깃 관리자 3bc5358aaa Merge branch 'wl/gameplay/WL-816h-sky-water' 2026-09-13 16:16:25 +09:00
깃 관리자 9e9fc536a7 [WL-816h] 하늘 통일 + 섬 물을 WL 워터 셰이더로 (#816)
- 물 채택 = Farm_Water_WL_C (ToonWaterU · WaterColor(0.36,0.69,0.82) ·
  DarkColor(0.17,0.42,0.57) · Foam 2.2/28/0.4 · Height 0.09 · WaweSpeed 0.4).
  A/B/C 3단을 같은 카메라로 찍어 고름 — 쨍한 원색을 뺀 값.
- 하늘 격리 실측: 섬 == 던전(픽셀 동일) · 전투 맵은 글자 하나까지 원래대로.
- 성능(같은 카메라 60프레임 × 2회 교대): 전 0.855/0.889 → 후 0.901/0.886 ms/frame.
- 걷기 6.00 m · 확장 타일 5→4→5 · 물 MeshCollider 무변경.
- 되돌리기: waterMode=0 → FarmingIsland 물 100 % · enabled_=0 → 전체 off (둘 다 실측).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 16:12:54 +09:00
깃 관리자 b7d26d2bb7 [WL-816h] 하늘을 「활성 씬」에서 빌려 쓰고 나갈 때 돌려준다 + 섬 물을 WL 워터 셰이더로 (#816)
- WLSkyScope 신설 — RenderSettings 는 활성 씬(InGame) 소유라 섬이 쓴 하늘이
  전투 맵까지 남는다. 섬·던전에 들어갈 때만 빌리고 나가면 스냅샷 그대로 복원.
  스냅샷은 활성 씬마다 한 번만 뜬다(재획득 때 다시 뜨면 던전 씬의 WL_ReferenceLook
  이 이미 바꾼 값을 「원래 값」으로 잘못 기억한다 — 실측으로 발견).
  앰비언트는 WLReferenceLook 이 이미 걸려 있으면 건드리지 않는다(던전 무드 보존).
- 섬 바다(1000×1000 평면)를 ToonWaterU(WL_Water_Ocean 복사본)로 교체. 3단 A/B/C.
- Assets/FarmingIsland/** 0줄 · ProjectSettings 0줄 · 전역 URP/품질 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 16:04:28 +09:00
깃 관리자 994a8e8ad6 [WL-816] 섬 바닥이 투명하게 보이던 진짜 원인 — 카메라 가림 처리 제외 (#816)
PD 「섬의 특정 지역(캐릭터가 선 지역)의 지면이 안 보인다」 → 「여전히 투명」

진짜 원인(실측): 전투용 카메라 기능 OccluderFade 가 카메라와 플레이어
사이를 가리는 물체를 ShadowsOnly 로 내려 숨긴다. 섬 타일은 8m 두께
블록이라 그 판정에 걸려, **플레이어가 선 타일만** 안 보였다.
  Island (1) shadow=ShadowsOnly / 나머지 4개 shadow=Off  ← 결정적 실측
  물 렌더러를 꺼 보니 그 자리에 배경색이 비쳐 「바닥이 없다」를 확인했다.

앞선 추정(런타임 재질 복제 _814t)은 원인이 아니었다. 다만 그 수정도
타일 간 색차를 없애므로 그대로 둔다.

조치: OccluderFade 제외 목록에 island,bridge,dock 추가(데이터 1줄).
      terrain/ground/water 등과 같은 성격이다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 15:30:25 +09:00
깃 관리자 b1e58d795e [WL-816] 섬 바닥이 안 보이는 문제 — 대비 복제 대상에서 제외 (#816)
PD 「섬의 특정 지역(캐릭터가 선 지역)의 지면이 안 보인다」.

실측: 그 타일의 재질은 런타임 복제본 Farm_IslandTop_Demo_814t 였고,
같은 프레임에서 나중에 열려 원본 재질을 쓴 타일 Island (4) 만 정상
렌더됐다. 복제본으로 바꾸면 하늘색이 비치고 원본으로 되돌리면 즉시
정상 렌더되는 것을 화면으로 확인했다(교체 테스트).

바닥은 넓은 평면이라 대비 복제의 이득이 없으므로 제외 목록에 넣는다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 15:19:29 +09:00
깃 관리자 ff875b3deb [WL-816] 섬 진입 시 로딩 90% 멈춤 해소 (#816)
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>
2026-09-13 15:12:38 +09:00
깃 관리자 33afe0b8dc [WL-816] 섬 세이브를 경로 무관 단일 파일로 고정 + 기존 세이브 초기화 (#816)
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>
2026-09-13 14:39:21 +09:00
깃 관리자 840655c06c Merge branch 'wl/gameplay/WL-816f-ground-match' 2026-09-13 14:27:51 +09:00
깃 관리자 b0f8febb12 [WL-816f] 마무리 실측 스크립트(성능 전/후 · 밭 칸 표시 · 확장) (#816)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 14:22:19 +09:00
깃 관리자 0b649230d8 [WL-816f] 바닥을 데모와 일치 — 잔디 단색 + 풀 대비↓ + 밀도 2.5→1.8 + 밭 칸 표시 톤↓ (#816)
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>
2026-09-13 14:21:45 +09:00
깃 관리자 f04ac8cfb6 [WL-816] 섬 캐릭터 애니메이션 이벤트 중복 차단 — 'OnStep has no receiver' 제거 (#816)
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>
2026-09-13 13:51:19 +09:00
깃 관리자 a2a954ba83 Merge branch 'wl/gameplay/WL-816e-island-grass' 2026-09-13 13:36:58 +09:00
깃 관리자 715fab076f [WL-816e] 기능 검증 스크립트(걷기·농사·확장) (#816)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 13:33:17 +09:00
깃 관리자 1921884672 [WL-816e] 실게임 섬(Level01)에 데모 룩 런타임 적용 + 타일 위에 데모 풀밭 인스턴싱 (#816)
- 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>
2026-09-13 13:27:28 +09:00
깃 관리자 190b58a6aa [WL-816] 던전 씬 2개를 빌드 씬 목록에 추가 (#816)
816d 가 만든 던전 씬. 없으면 던전 입장이 반드시 실패한다.
+ Assets/WL/Island/Scenes/WL_Dungeon01.unity
+ Assets/WL/Island/Scenes/WL_Dungeon02.unity
검증: 기존 27개 중 사라진 항목 0 · 총 29.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 12:51:41 +09:00
깃 관리자 e4a4106139 Merge branch 'wl/systems/WL-816d-island-dungeon' 2026-09-13 12:50:35 +09:00
깃 관리자 cac7889ec0 [WL-816d] 던전 NavMesh 를 콜라이더 기준으로 베이크(에러 100건 제거) + 한글 폰트 + 입구 위치 실측 반영 (#816)
- 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>
2026-09-13 12:47:45 +09:00
깃 관리자 6fa7a421d3 [WL-816d] 섬 카메라 소유권 + WL PC 비동기 생성 대응 + NavMesh 기본값 사용 (#816)
- NavMeshSurface 기본값(collectObjects=All · useGeometry=RenderMeshes)을 그대로 쓴다(게이트 PASS)
- 섬 카메라 소유권 SO(islandCameraOwner 기본 1 = FI 카메라) · 떠날 때 되살림
- WL 전투 PC 는 Addressables 콜백으로 늦게 생긴다 → hidePcWatchSeconds 동안 감시해 숨김
- 프로브 전용 DebugSceneOverride(던전 복사본 씬 미등록 구간 검증용)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 12:34:24 +09:00
깃 관리자 c23fdeb91a [WL-816d] 던전 씬 단독 Play 가드 + 치비 컴포넌트 제거 견고화 (#816)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 12:26:55 +09:00
깃 관리자 c2972b5264 [WL-816d] 섬×던전 왕복 1차 배선 — WL/Island 새 파일 6개 + 던전 씬 2개 + 표 행 9개 (#816)
- 새 파일 Assets/WL/Island/** : 설정 SO · 브리지 · 섬 씬 런타임 준비 · 던전 입구 더미 · 던전 씬 런타임 준비 · UI
- 던전 씬 = WL_ArenaProto 복사본 2개(원본은 룩 개발용으로 그대로)
- 표: BattleMapConfig 5행(섬 900 · 던전 901~904) · WLStageTable 4행(인덱스 10~13 · 앵커 0,0,0)
- 값 2개(816c 실측): autoEnterOnMapEnter 1→0 · 클리어/실패 버튼 「로비로」→「섬으로」
- 원본 수정 = NewGameUI.cs:36 1줄(StartMapId 훅)뿐 · FarmingIsland 0줄 · ProjectSettings 0

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 12:26:54 +09:00