캠프파이어 설치(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>
- 원인(실측): 전투 시작 신호는 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>
- "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>
- 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>
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>
- 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>