Project_WL/AgentScripts/WL813w3_PROBE.txt

134 lines
10 KiB
Plaintext
Raw Normal View History

# WL813w3 Probe 2026-09-09 14:46:42 (edit mode · Play 0 · 로그인 0)
playMode=False
── ⓪ 준비
[PASS] 가짜 메인 PC IsMainPC()=true · MyValue.MyPC 등록
[PASS] RunGuide.Active(에셋 · enabled · 런 축)
아레나 중심 = (139.0,0.8,-20.0) · Agent=없음(에디트 모드 · 실 Set_Warp 은 못 돈다)
── ① 에셋 · SOT (813w3 신규 필드 · C45 · 코드 상수 0)
[PASS] WLRunGuideSettings 로드 · [PASS] WLBossArenaSettings 로드
[가이드 신규 10] warpBackEnabled=True warpBackAfterSeconds=1.5 warpCooldownSeconds=5 warpJitterRadius=3 warpNavSampleRadius=5 warpSnapsCameraLead=True followBossRadius=12 bossAwayFromCenterRadius=6 exitDiagEnabled=True exitDiagRepeatSeconds=0
[아레나 신규 7] holdZoneSpawnNearArena=True zoneSpawnHoldMargin=10 restartRebasesGateKills=True restartRearmsHoldSpawn=True restartResetsLivingBoss=True restartRegensDeadBoss=True suspendOutsideRun=True
[PASS] 강제 복귀 on · 1.5 s(발주서 §1-2)
[PASS] 워프 지점 = 중심 ±3 m(발주서 §1-2)
[PASS] 워프 쿨 5 s ≥ 5(발주서 §1-2)
[PASS] 이탈 진단 on(verboseLog=False 와 무관하게 남는다)
[PASS] 보스 추적 판정 반경 12 m / 보스 이탈 기준 6 m
[PASS] bossHoldRadius(14) < 813d 리쉬 발동선(24) — 워프가 리쉬보다 먼저 걸린다
[PASS] 워프 대기(1.5s)가 리쉬 유예(1.5s)와 같은 자릿수
[PASS] D-27 스위치 3종 on
── ② 이탈 원인 진단 (§1-1 · Q7 이 읽는 줄) — PC 를 반경 밖으로 옮긴다
시작 상태=Hold · 목적지=(139.0,0.8,-20.0)
[PASS] 중심에서 Hold(도착 반경 10 m)
[PASS] 반경 안 — 이탈 0(실측 0)
[PASS] ArenaExits=1(실측 1) · 이탈 1회 = 진단 1줄
[PASS] 링버퍼 1칸(실측 1)
[PASS] 되돌림도 그대로 1회(실측 1) — 813w2 경로 유지
진단 줄 원문(보스 생존):
#1 t=221.5s f=12 · 중심 37.0m · 보스 37.0m(보스-중심 0.0m 점프=N 락=Y) · 타깃=보스 · 조이스틱=0(조종 N) · 애님=Idle CC=N · 에이전트 v=0.0 정지=N NavMesh=N 목적지-중심=-1.0m · 가이드=Hold · 피격=없음
[PASS] 중심 거리 37.0 m
[PASS] 타깃 종류 = 보스(실측 1) · 락=True — 보스 생존 중엔 락이 걸려 있으니 「보스를 쫓아 나간 것」으로 읽는다
[PASS] 보스는 중심(보스-중심 0.0 m) = 보스 점프 아님 → **잡몹/원본 이동이 끌고 나간 경우**
[PASS] PC-보스 37.0 m
[PASS] 가이드 상태 = Hold(이탈 순간)
[PASS] 이 줄은 이탈 줄(워프 줄 아님)
[PASS] frame=12 · index=1 · 조이스틱=0 · 애님=Idle · 에이전트 NavMesh=False
[PASS] 줄에 타깃·가이드 상태가 문자로 들어간다(Q7 이 로그만 읽는다)
[PASS] 반경 안 복귀 → 이탈 타이머 해제(OutsideSince=-1.0)
[PASS] 재진입해도 이탈 수는 그대로 1(에피소드당 1줄)
진단 줄 원문(보스 없음 · 잡몹 타깃):
#1 t=221.5s f=12 · 중심 37.0m · 보스 -1.0m(보스-중심 -1.0m 점프=N 락=N) · 타깃=잡몹 · 조이스틱=0(조종 N) · 애님=Idle CC=N · 에이전트 v=0.0 정지=N NavMesh=N 목적지-중심=-1.0m · 가이드=Hold · 피격=없음
[PASS] 🔴 타깃 종류 = 잡몹(실측 2) — 「누가 끌고 나갔는가」
[PASS] 보스 없음 → 보스 필드 = 1(실측 -1.0)
[PASS] 줄에 「타깃=잡몹」
── ③ 강제 복귀 판정 (§1-2 · WarpDecision 순수 함수 · 가짜 거리·시각)
[PASS] 반경 안(10 m ≤ 14) → 판정 없음
[PASS] 이탈 0.5 s(< 1.5) → 되돌림만(대기)
[PASS] 🔴 이탈 2.0 s → **워프**(발주서 §1-2 ②)
[PASS] 3 s 전 워프 → 쿨다운(5s)으로 보류
[PASS] 6 s 전 워프 → 쿨다운 지나 다시 워프
[PASS] 보스 곁 → 워프하지 않는다(정상 추적)
[PASS] 이탈 직후 폴링 — 워프 시도 0(1.5 s 대기 중) · OutsideSince=221.5
[PASS] 가짜 시각 t=1000 — 이탈 기록 · OutsideSince=1000
[PASS] t=1001(+1.0 s < 1.5) — 워프 경로 미도달
[PASS] 🔴 t=1002(+2.0 s ≥ 1.5) — **워프 경로 도달**(워프 0 · NavMesh 지점 없음 1)
※ 에디트 모드는 NavMesh 가 없어 NavMesh.SamplePosition 이 실패한다 → 실 Set_Warp 실행은 「미확인」(Play 필요)
[PASS] 쿨다운(5 s) 중 재이탈 → 워프 보류(실측 1) · 되돌림은 계속
── ④ 보스 점프 케이스 (§1-2 · Anubis 스킬2 Co_JumpToPosition 으로 보스가 멀어진 경우)
[PASS] 보스가 중심(0 m) · PC 37 m → 추적 아님(= 워프 대상)
[PASS] 🔴 보스-중심 25 m · PC-보스 5 m(≤ 12) → **워프하지 않는다**
[PASS] 보스-중심 25 m · PC 는 반대쪽 → 추적 아님(= 워프 대상)
[PASS] 🔴 중심 30.0 m 밖 · 보스 곁 5 m · 3 s 경과 — 보스 곁 보류 1회 · 워프 0회 · NavMesh 실패 0회
[PASS] 진단 줄의 보스-중심 = 25.0 m(Q7 이 이 값으로 「보스가 튄 것」을 구분한다)
※ bossJumping 은 보스 NavMeshAgent.enabled=false 로 잰다 — 에디트 모드엔 에이전트가 없어 항상 false(실측 False) = 「미확인」
── ⑤ 「다음 런」 BossArena 리셋 (§1-4 · D-27 게이트 조기 개방 · 보스 미등장)
[PASS] 1런 — 보스 스폰 보류(HoldSpawn=true) · GateArmed=True
[PASS] 누적 54/54 → 게이트 열림 · ReleaseCount=1
[PASS] 보스 등장(BossSpawned=true · 생존) · 이 보스는 런 끝까지 살아남는다
ResetGate() 실행 — 게이트 재무장(다음 런) — 기준 처치 54 · 보스 생존(리셋 1) · 보류 재무장 0
[PASS] 게이트 닫힘(GateOpen=false)
[PASS] 🔴 이 런 기준 처치 = 0(실측 0) — 누적 54 는 813p 계약대로 유지 = **조기 개방 차단**(D-27 ①)
[PASS] 🔴 살아 있는 보스는 BossSpawned **유지**(실측 True) — 813p 판은 false 로 내려 813p 폴백이 BossStarted 를 못 냈다(D-27 ②)
[PASS] 살아 있는 보스라 보류 재무장 0(재스폰 = 클론 2개 방지)
[PASS] 🔴 다음 런 첫 처치(누적 55) — 게이트 **안 열린다**(813p 판은 여기서 즉시 열렸다 = Q6 R3 「t<30 에 이미 open」)
[PASS] 이 런 처치 55/54 → 정상 개방
[PASS] 누적값은 계속 증가(54 → 109) = 813p 「BossArena 값은 리셋하지 않는다」 계약 유지
[PASS] 보스를 「죽은 상태」로 만든다(activeInHierarchy=false)
ResetGate() 실행 — 게이트 재무장(다음 런) — 기준 처치 109 · 보스 사망(개방 시 재등장 예약) · 보류 재무장 0
[PASS] 죽은 보스 → BossSpawned=false(등장 대기)
[PASS] 🔴 죽은 보스는 개방 시 원본 On_Regen 예약(FieldBossData.AfterDie 와 같은 경로 · 클론 증가 0)
[PASS] 보스 액터가 남아 있으므로 보류 재무장 0(= resume 재진입 금지)
※ 실제 On_Regen 실행은 Play 전용(m_Stat 필요) — 여기서는 예약까지만 실측 = 「미확인」
── ⑥ 런 밖(RunEnded 뒤) 리쉬·게이트 정지 (§1-4 ③ · Q6 「리셋 68 → 190」)
[PASS] 🔴 런 밖에서 59킬 — 게이트 **안 열린다**(건너뛴 평가 59회)
[PASS] 🔴 보스가 아레나 40 m 밖인데도 런 밖이라 리쉬 판정을 **건너뛴다**(건너뛴 틱 1)
[PASS] 리셋 0(실측 0) — Q6 은 여기서 68 → 190 으로 쌓였다
[PASS] 대조: 같은 좌표를 EvaluateLeash 에 직접 넣으면 「보스 이탈」 판정 = 정지가 없었다면 리셋이 걸렸을 조건이다
[PASS] 런 재개 → 같은 조건에서 게이트 개방(= 정지가 「영구 차단」이 아니다)
[PASS] RunActive 강제 on 확인 · 자동 판정은 RunDirector.IsRunning 을 읽는다
RunDirector: StartCount=0 IsRunning=False · WLRunSettings.Enabled=True
[PASS] 🔴 C8 — 런이 한 번도 시작 안 됐으면(StartCount=0) RunActive=true = 813d 그대로
(런 밖 건너뛴 리쉬 틱 누계 1 · 이번 절 증가 1)
── ⑦ 잡몹 유입 차단 (§1-3) — HoldSpawn 이 존 스포너에 쓰이는지 실측
실측: BossArena.HoldSpawn(FieldBossData, Action) 의 인자는 **FieldBossData 전용**이다
· 존 스포너는 MobControlMgr(별도 클래스)이고 원본 훅(FieldBossData.Start 1줄)은 보스에만 있다
· 원본 리젠 경로 = MobControlMgr.actDie → MyCoroutine.Set_Coroutine → StartCoroutine(같은 컴포넌트)
[PASS] → HoldSpawn 재사용 불가 · 새 공개 API BossArena.HoldNearbyZoneSpawns(cfg) 를 만들었다
차단 반경 = arenaRadius 20 + margin 10 = 30 m
존0 폴백 앵커 (115.0,0.4,-22.0) → 중심 24.1 m · 차단 대상
존1 폴백 앵커 (147.0,2.6,30.0) → 중심 50.6 m · 무간섭
존2 폴백 앵커 (71.0,-0.3,18.0) → 중심 77.9 m · 무간섭
존3 폴백 앵커 (159.0,0.9,-22.0) → 중심 20.1 m · 차단 대상
[PASS] 앵커 4개 중 2개가 차단 대상(전부도 아니고 0도 아니다 = 반경이 유효하다)
씬의 MobControlMgr = 0개
[PASS] 보스 없음 → 차단 0회(예외 0) · 대상 스캔 0개
※ 실 스포너 정지는 맵이 로드된 Play 에서만 잰다 = 「미확인」
── ⑧ GC (틱 경로 0 B · 이탈 1건의 실제 할당량)
[PASS] 반경 안 ForceTick ×100 = 0 B
[PASS] 대조군 64 KB 할당 = 69632 B(측정기 동작 확인) · len=65536
이탈 1건 = 16384 B — 링버퍼 기록(struct 배열 · 사전 할당)은 0 B이고, 이 값은 **콘솔 1줄 문자열**이다(발주서 §1-1 「1줄/이탈」의 대가 · 이탈이 없으면 0 B)
[PASS] 링버퍼에 기록됨(1칸)
[PASS] 이탈 40회 → 링버퍼 32칸에서 멈춘다(무한 증가 0)
[PASS] 가장 오래된 #9 → 최신 #40(오래된 것부터 밀려난다)
── ⑨ C8 롤백 (임시 SO · 실에셋 읽기만)
[PASS] warpBackEnabled=0 → 10 s 밖에 있어도 워프 0 = **813w2 동작 그대로**
[PASS] warpBackAfterSeconds=0 → 워프 0(값 하나로도 끌 수 있다)
[PASS] followBossRadius=0 → 보스 추적 예외 없음(언제나 워프 대상)
[PASS] exitDiagEnabled=1 → 기록됨
[PASS] exitDiagEnabled=0 → 기록·콘솔 0(카운터만 증가)
[PASS] RuntimeDisabled=1 → 틱 ×10 에 이탈 판정 0 · 조종 False · JoystickStatus 0
아레나 C8 스위치: restartRebasesGateKills=True restartRearmsHoldSpawn=True restartResetsLivingBoss=True restartRegensDeadBoss=True suspendOutsideRun=True holdZoneSpawnNearArena=True
[PASS] 전부 0 으로 두면 ResetGate 는 813p 판(게이트만 닫기)·리쉬는 813d 판·존 스포너 무간섭
[PASS] WLBossArenaSettings.RuntimeDisabled=1 → 존 차단 0회
RESULT PASS