Commit Graph

1213 Commits

Author SHA1 Message Date
깃 관리자 74a08191b6 [WL-816zd] 섬 윤곽 둥근 풀 배치 (#816)
땅(타일 메시)은 각진 그대로 두고, 풀 카펫의 **바깥 윤곽만** 둥글게 읽히도록
배치 넓이를 바꾼다. PD 원문 「땅은 각지게 만든 상태로, 풀을 라운딩 느낌이 나게
배치해서 만들어도 되잖아」.

- WLIslandGrass: 윗면 마스크 + edgeInset 네 방향 검사 대신, 섬 footprint 를
  반지름 R 로 **열고**(침식 후 팽창 = 볼록 모서리가 R 로 둥글어짐) 바깥으로
  overhang 만큼 팽창한 거리장으로 자른다. 침식·팽창 모두 결합적이라
  「(inset+R) 침식 → (R+overhang) 팽창」 거리장 두 장이면 끝난다.
  기준선이 edgeInset 이라 overhang = edgeInset 이면 바깥선이 지금과 같고
  (모서리만 둥글어짐), 그보다 크면 차이만큼 절벽 위로 넘친다.
- 거리 변환은 816j2 WLShoreFoam.Chamfer 를 그대로 쓴다(public 승격 · 정의 SOT 1곳).
- 넓힌 칸 범위가 이웃 타일과 겹치므로 OwnerTile(체비쇼프 최근접)로 칸 하나를
  한 타일만 만들게 해 중복 0.
- 길·밭·소품 제외와 816za 밭 라운드는 무변경. 인스턴싱 bounds 에 overhang 반영.
- SO: outlineRoundEnabled 1 · outlineRoundRadius 1.5 · outlineOverhang 0.3
  · outlineRoundCell 0.25 (0 이면 현행 배치 그대로 = 되돌리기 1값).
- FI 원본 0줄 · 씬 0줄.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 17:18:08 +09:00
깃 관리자 4175874c51 [WL-816zc] PD 조정 — 울타리 콜라이더도 끔(투명 벽) + 3 s 상시 재숨김 · 상인/사과나무 자리 교환 · 던전 발판 = 입구 자리(0,0,3) · 좌판·사과나무 콜라이더 유지(판매·수확 트리거) (#816)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 17:05:42 +09:00
깃 관리자 4d5aa6f546 Merge branch 'wl/ui/WL-816zc-island-flow' 2026-09-15 16:04:42 +09:00
깃 관리자 39fcbe5d44 [WL-816zc] 섬 초기 플로우 v2 (#816)
캠프파이어 설치(10) → 상인 설치(30) → 사과나무 설치(60) → 던전 생성(100).
한 번에 발판 1개 · 단계는 PlayerPrefs 1키(WL_Island_FlowStep · 시작마다 초기화).
원본 섬 확장 가격판(FI Purchaser)은 첫 던전 승리 전까지 렌더러·콜라이더만 끄고,
승리(OnStageCleared) 시 WL_Island_ExpansionUnlocked=1 → 그대로 다시 켠다
(이후 확장 순서는 FI 원본 Island.Constraint 그대로 · 우리 코드는 켜고 끄기만).
밭은 시작 시 생성 보류 유지(hideFarms 1) · 던전 2~4 행 enabled_ 0.
되돌리기 = flowV2Enabled 0.

원본(Assets/FarmingIsland/** · Assets/Script/**) 0줄.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 16:04:08 +09:00
깃 관리자 e438652860 Merge branch 'wl/systems/WL-816zb-stagger-flash' 2026-09-15 15:57:55 +09:00
깃 관리자 e692c53ea0 [WL-816zb] 피격 경직 + 흰색 하이라이트 단축 (#816)
경직 = MobStagger(신규 · HitConfirmed/Killed/Spawned 구독 · 원본 0줄) · NavMeshAgent.speed 0 + velocity 0 + Animator.speed 0
       일반 0.18 / 엘리트 0.12 / 보스 0.08 s · 넉백 중에는 종료를 미뤄 넉백 직후부터 다시 셈(상한 1 s) · 스턴·빙결이면 즉시 해제
       값 = WLHitFeelSettings(mobStaggerEnabled·초 3개) + 에셋

흰색 = MobHitFlash 점멸 상한 blinkMaxSeconds 0.06 s (연장·티어 시간 배수 2.4 포함해 첫 점멸 시작 기준으로 절단)
       세기 blinkColor 2.2→3.0 · blinkEmission 0.6→0.9 (짧게, 대신 세게) · 값 = WLHitBlinkSettings + 에셋

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 15:57:19 +09:00
깃 관리자 dd5757bc4b [WL-816za] 밭 자리 풀 경계 라운드 (#816)
밭(흙) 제외 사각형을 반듯한 사각형 대신 「모서리 반지름 + 경계 노이즈」로 판정해
풀이 흙 가장자리로 불규칙하게 파고들게 한다. 길·건물·소품 제외 규칙은 무변경.

- WLIslandLookSettings: farmEdgeRoundEnabled 1 / farmEdgeRadius 1.0 / farmEdgeNoise 0.4 / farmEdgeNoiseCell 0.5
- WLIslandGrass: 밭 rect 를 _farmRounds 로 분리 + InRoundedFarm(둥근 모서리 + 값 노이즈) 판정
- 라운드 모드에서 밭 안에 든 Soil 1x1 사각형은 빼서 깎아낸 모서리를 도로 메우지 않게 함
- farmEdgeRoundEnabled 0 이면 기존 동작 그대로

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 15:55:02 +09:00
깃 관리자 2799b311b6 [WL-816w] 울타리 숨김 = 섬 타일 전 하위·이름 포함 검색 + 시작 후 8회 재숨김 · 밭 체크무늬 off(soilCheckerContrast 0) (PD 2026-09-15 · #816)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 15:47:34 +09:00
깃 관리자 b185d3bf9b [WL-816y] PD 조정 — 시작 시 울타리 재숨김 3회 · 텐트 1개(우상단 유지) · 모닥불 2.4× · 텐트 2.4× · 던전 입구 4곳 섬 안쪽으로 (#816)
- WLIslandGateFlow: Co_ReHideFences(3 s 간격 3회) — FI 타일 활성화가 울타리 렌더러를 다시 켜는 것 보정.
- WLIslandSettings.asset: campTentCount 2→1 · campFireScale 1.2→2.4 · campTentScale 1.6→2.4 · gatePosition (-3,3)→(0,3) · (10.5,-3)→(8,-1) · (2.5,11)→(2.5,8.5) · (10.5,10.5)→(10,10).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 15:34:10 +09:00
깃 관리자 b289d896b3 Merge branch 'wl/ui/WL-816y-camp-portal' 2026-09-15 15:29:00 +09:00
깃 관리자 2ca0b84519 [WL-816y] 캠프파이어 설치 자리 장식 + Arch_01 던전 포탈 (#816)
- 첫 개방 발판 문구 = 「캠프파이어 설치」 · 지불·세이브 복원 시 그 구역에 캠프 장식 스폰
  (WLIslandCampDecor: Fireplace 중앙 1 + Tent 가장자리 2 · 불 쪽 향함 · 콜라이더 off · 바닥 스냅)
- 던전 입구 = WL_DungeonGate_Arch(Arch_01 + 아치 중앙 마법 포털 루프) · gatePrefabPath 4행 · 안내 문구 「던전으로 이동하기」
- FantasyForest 원본은 Built-in 셰이더(URP 분홍) — 원본 0줄 수정, WL 쪽 URP 사본 머티리얼 2개로 래핑
- 되돌리기 = campDecorEnabled 0 + gatePrefabPath 비우기

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 15:12:29 +09:00
깃 관리자 a2880d1a94 [WL-816x] 몹 확대 시 원본 보스 판정 경계(scale>2) 안 넘게 가드 on (mobBodyScaleKeepUnderBossThreshold 1 · Lead 결정 · #816)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 15:06:25 +09:00
깃 관리자 036d5fcbf8 Merge branch 'wl/systems/WL-816x-hitfx-mobscale-nodash' 2026-09-15 15:05:39 +09:00
깃 관리자 1624e4c95e [WL-816x] 대시 억제 게이트에 WL_CanDash 조건 추가 — 조이스틱 조작 중 제자리 공격 강제 방지 (#816)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 15:03:59 +09:00
깃 관리자 bd862b70d7 Merge branch 'wl/gameplay/WL-816w-island-fixes' 2026-09-15 15:01:14 +09:00
깃 관리자 91fbe5ba9f [WL-816w] 이동 깜빡임 실측 · 섬 울타리 제거 · 밭 자리 흙 (#816)
① 깜빡임: PD 경로(InGame+Level01 Additive)에서 걸으며 프레임별 실측 — 재현 0
   (화면차 중앙값 2.61 · 중앙값×3 초과 0/119 · 렌더러 증감 0/89 · dt 16.7ms 일정).
   viewCull ON/OFF 대조도 1154~1155 · 튐 0 → 값 변경 없음.
② 울타리: IslandManager/Island (0)/Fence01·(1)·(2) = FI 섬 타일 장식(Farm 자식 아님).
   hideIslandFences 로 렌더러만 끈다(원본 0줄 · 확장 타일도 Co_ReHide 에서).
③ 밭 자리 흙: showFarmSoil 로 Soil 렌더러는 남기고(콜라이더는 계속 off)
   soilTargetColor 를 화면 실측으로 재수렴 (164,168,138) vs 데모 흙 (164,168,139).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 14:59:53 +09:00
깃 관리자 8ec0ee8eb2 [WL-816x] 피격 이펙트 상단·150 % · 몬스터 150 % · 사거리 안 적 있으면 대시 억제 (#816)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 14:59:32 +09:00
깃 관리자 86aeccb952 [WL] PD 에셋 임포트 — Low Poly Fantasy Forest (Assets/FantasyForest · 537 파일 · 137 MB · 컴파일 error 0) (#816)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 14:57:36 +09:00
깃 관리자 2ede177aa9 [WL-816p] 사거리 원 노출 유예 3→2 s (graceSeconds · PD 2026-09-15 · #816)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 14:47:37 +09:00
깃 관리자 b3a4819226 [WL-816q] 가시 범위 풀 재선정 끔(viewCullEnabled 1→0) — PD 「이동 시 화면 깜빡임」 1차 조치 · 4타일 섬은 컬링 이득 0 (#816)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 14:40:13 +09:00
깃 관리자 37d231b26f [WL-816v] 1타 LookAtTarget 런타임 주입 (이슈 ① · Lead 결정 b) (#816)
실측: Attack1_S_10101 은 ShowEffect/Move/Projectile 3개뿐이고 LookAtTarget 이 없다.
Attack2/3_S_10101 만 LookAtTarget@0.0000s(int=0, str='') 를 갖는다 → 1타만 대상 방향으로
돌지 않은 채 나간다.

- Hit1LookAtTarget 신설(원본 훅 0 · FBX/meta 0줄) — RuntimeInitializeOnLoadMethod
  숨김 러너가 PC 등장·클래스 변경을 폴링하고, 같은 컨트롤러의 2·3타 클립에서
  LookAtTarget 이벤트를 템플릿으로 읽어(함수명·시간·파라미터 복사 · 코드 상수 0개 C45)
  1타 클립에 AddEvent 로 클래스당 1회 주입 + Animator.Rebind()
- SO 신설 WLCombatCoreSettings.hit1LookAtTarget(1) · hit1ClipNamePattern(Attack1_S_{CID})
  · hit1EventFunctionName(LookAtTarget) · hit1PollSeconds(0.5) — 0 이면 러너 자체가 안 뜬다
- 검증(에디트 모드 · 같은 Inject 코드 경로): 1타 이벤트 3→4개, LookAtTarget@0.0000s(int=0,
  str='') 로 2·3타와 동일. 2·3타 4개 무변경. transform.LookAt 정렬 각 오차 8방향
  37.00° → 0.00°. FBX/meta git status 0줄(에셋 무오염 실측) · 검증 뒤 재임포트로 원복

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 13:54:17 +09:00
깃 관리자 b0e601ca02 [WL-816u] 열림 발판 중앙·50 % + 던전 「다음」 = 재입장 + 액티브 스킬 OFF (#816)
① 발판 = 열림 구역(숨긴 밭 전부) XZ 정중앙 + 인스턴스 스케일 50 %
   - WLIslandSettings: platformScale 0.5 / platformCenterOnZone 1 / platformCenterVisibleOnly 1
   - 트리거는 스케일 역보정으로 월드 3.40 m 유지 · FI 프리팹 0줄
② 던전 결과창 왼쪽 버튼 = 같은 스테이지 재입장(StageDirector.Retry)
   - WLStageUiSettings: dungeonPrimaryRetry 1 / dungeonPrimaryText 「다시 도전」
   - 스테이지 모드(#815)는 Current==null 이라 한 줄도 지나가지 않음
③ 액티브 스킬 사용 OFF (PD 「우선 엑티브 스킬은 사용 Off 해줘」)
   - 새 파일 ActiveSkillLock.cs · WLCombatCoreSettings.activeSkillsEnabled 0
   - 자동 스킬 캐시(arr_magicData) 비움 + 패드 스킬 슬롯 0 · 기본 공격 불변

게이트 PASS(resident · errors[] · 콘솔 error 0) · ProjectSettings/Packages dirty 0
Assets/Script/** · Assets/FarmingIsland/** 0줄

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 13:49:33 +09:00
깃 관리자 4d7fae1e6f [WL-816v] 검기 1타 정합 — 감아올리기 트림 (#816)
원인(실측): Attack1_S_* 클립은 ShowEffect 직후 4~5 프레임만 실제 타격 호이고
그 뒤 칼끝이 한 바퀴 넘게 감긴다. 속도 트림(정지 꼬리만 자름)은 그 감김을
남겨 칼끝 원 피팅이 깨지고(편차비 0.27 > 임계 0.25) 손잡이 중심 폴백으로
떨어져 피벗이 머리 높이·몸 왼쪽으로 0.39 m 밀렸다. 12행 중 1타 4행만 폴백이었고
2·3타 8행은 전부 칼끝원(편차비 0.14/0.17)이라 정상이었다.

- SlashArcMeasure.TrimWindupWrap 신설 — 편차비가 기준 이하가 되는 가장 긴 창 선택
- WeaponTrailDriver.MeasureSwingCalibration · WL816t_Bake 양쪽에서 같은 헬퍼 사용
- SO 신설 arcTrimWindupWrap(true) · arcFitMaxDeviation(0.25 · 기존 하드코딩 이관 C45)
- 캘리브레이션 1타 4행 재베이크 — 2·3타 8행은 수치 무변경(Δ 0.000 m · 0.0°)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 13:41:59 +09:00
깃 관리자 fad1270c48 Merge branch 'wl/gameplay/WL-816r-dirt-look' 2026-09-15 09:51:56 +09:00
깃 관리자 75f1333583 [WL-816r] 풀 없는 지형(길·밭·흙띠) = 데모 흙 톤 (#816)
- 데모 실측: 흙 = 툰 단색(고유색 21 · 에지 1.11% · 질감/노이즈 0) · 화면색 #A4A88B vs 풀 #97C284
- 섬 윗면 텍스처 모래/흙 사분면 #CCCBB5/#807057 → #AEC4AC/#88A086 (초록 #A0E4A2 바이트 무변경)
- 같은 프레임 띠/초록 비 = 1.0740,0.8479,1.0487 (데모 1.0861,0.8660,1.0530 · 채널당 ≤5)
- 길 Farm_Road01_ToonTex _DiffuseColor #DDC89D → #ADC3AB · 그림자비 = 데모 흙 비(0.3596,0.2741,0.2051)
- 밭 soilTargetEnabled/soilTargetColor 신설 — 칸 구분·마름/젖음 밝기비 보존한 채 목표 흙색으로 이동
- 되돌리기 = SO 참조 1개(islandTopMaterial/remap → Arena2) + soilTargetEnabled 0

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 09:49:32 +09:00
깃 관리자 f35dab8542 [WL-816t] 검기 크기 = 공격 범위 · 무기 위치 정합 (#816)
원인(실측): 검기 캘리브레이션 8행이 교체 전 캐릭터 Ai01(root scale 1 · 무기 원본 크기) 기준으로
구워져 있고, 런타임 캐릭터는 814n/814p 로 LH_M05(root scale 1.0527 = f_Scale 0.70 x heightComp 1.5038)
+ 무기 x0.54~0.66 로 바뀌었다. 로컬 프레임이 달라 호 중심이 0.36~0.88 m, 평면 법선이 6.9~61.0 deg
어긋난 채 고정돼 있었고, 이 오차 벡터가 캐릭터와 함께 돌아 화면에서는 가로 -0.50~+0.59 m /
세로 -0.46~+0.86 m 로 방향마다 다르게 보였다.

- WL816t_Bake: 런타임과 같은 PC(swap resolve) x 같은 스케일 x 같은 무기 보정(WLWeaponFitter.Fit)으로
  1/2/3 타 클립을 60 Hz 샘플 -> 런타임 ToLocalPos 규약(회전만)으로 12행 재베이크 (구 8행 대체)
- SlashTrailSettings: arcFitAttackRange / arcRangeScale 신설 (기본 off = 무동작 · C8 롤백)
- WeaponTrailDriver.PlaceArc: 스위치 on 이면 호 바깥 반지름 = 공격 범위
  (stoppingDistance 양수 최솟값 + AttackRange_Up + immediateAttackMargin · WLRangeRing 과 같은 SOT · 상수 0개)
- 8방향 x 3타 편차 0.525/0.361/0.864 m -> 0.000 m · 법선 61.0/20.5/23.5 deg -> 0.0 deg

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 09:37:12 +09:00
깃 관리자 ddf0e12655 [WL-816p] 사거리 원 = 채움 없이 얇은 테두리만(ringOnly 1 · ringWidth 0.06) (PD 2026-09-15 · #816)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 09:22:25 +09:00
깃 관리자 dd5a47bab2 [WL-816q] 가시 범위 — 첫 배치 때 카메라가 없었으면 생긴 뒤 다시 고르게 (#816)
ViewMovedEnough 가 _viewOn=false 에서 곧장 false 를 돌려줘, 카메라가 씬보다 늦게 생기는 경우
가시 범위가 영영 안 켜지고 섬 전체에 인스턴스가 남았다(그림은 정상 · 최적화만 무효).
카메라가 생겼는데 아직 범위를 못 잡았으면 true 를 돌려 한 번 다시 고르게 한다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 08:38:58 +09:00
깃 관리자 cdb324a57d [WL-816q] 풀 높이 0.35→0.7(띠 가장자리 톱니 폭) · 가시 범위를 바닥 사다리꼴로 교정 (#816)
- 톱니 윤곽 폭 = 풀 높이 × cot(태양고도). scale 스윕 실측(같은 카메라·같은 구름 위상):
  0.35 에지% 1.05 / 0.50 1.20 / 0.70 1.39 / 0.90 1.43 (데모 참고 1.22) · 인스턴스·삼각형·드로우콜 불변.
  0.70 = 데모의 띠 가장자리 밀도(≈4개/m)와 같은 폭 → 채택.
- 가시 범위: 절두체 평면을 그대로 밀면 위쪽 평면이 바닥과 15° 라 8 m 가 바닥에서 31 m 로 벌어졌다
  (실측 618 → 3,731 ㎡). **바닥 사다리꼴을 2 차원으로** 미는 방식으로 교정 → 여유 4 m 에서 643 → 1,151 ㎡.
  viewMargin 8→4 · viewRebuildStep 2.5→1.5 · viewMaxDistance 40 · viewRebuildAngle 3 신설.
- 팝 0 실측: 보폭 1.5 m 이동 후 [다시 고르기 전] vs [고른 뒤] 화면 차이 **0 픽셀**.
  0/2/4 s 좌표 지문 동일(75934715234309) = 생성·소멸·이동 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 08:31:20 +09:00
깃 관리자 7e0733307e [WL-816q] 범인 = 풀이 바닥보다 늘 어둡다 · 풀을 바닥과 같은 톤으로 맞춰 띠 복원 + 가시 범위 배치 (#816)
- 실측: 바닥만 렌더하면 띠세기LF 7.31 / 포기잡음HF 0.39 (매끈한 띠). 풀을 켜면 HF 4.22(10.8배)
  에지% 0.86 → 14.06(16.3배). 풀이 바닥 대비 0.943/0.900/0.882 배로 「항상 더 어두워」 띠를 덮었다.
- 수렴 실측: 풀 색 × (1.0737, 1.1189, 1.1365) 에서 보이는 풀 31.0% → 0.6%
  (구름 위상 3곳 전부 0.56~0.68%). 띠 안쪽에서 바닥과 같은 픽셀 = 데모와 같은 원리.
- _Cloud_Change 0.001→0.005 · _Cloud_Movement (0.2,0.2)→(1,1) = 데모 원값 복귀(풀·바닥 동일).
- 가시 범위 배치(816q §3): 월드 고정 격자는 그대로 두고 카메라 시야 사각형 + 여유 8 m 안만 남긴다.
  여유(8) > 재선정 보폭(2.5) 이라 늘고 주는 것은 화면 밖에서만 — 좌표는 불변(순간이동 0).
  되돌리기 = viewCullEnabled 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 08:13:25 +09:00
깃 관리자 433540dcb9 [WL-816o] 구름 경계 배치 끔(cloudEdgeEnabled 0 = 816n 균일 배치로 복귀) — PD 「풀이 순간이동하는 것처럼 보임 · 데모 느낌 아님」 (#816)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 07:45:24 +09:00
깃 관리자 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
깃 관리자 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
깃 관리자 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
깃 관리자 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
깃 관리자 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
깃 관리자 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