Project_WL/AgentScripts/WL813w3_PROBE.txt

136 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WL813w3 Probe 2026-09-09 14:48:56 (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 를 반경 밖으로 옮긴다
[PASS] 🔴 도착 전 50 m — 이탈 0 · 진단 0(BossArrivedOnce=False) = 게이트 개방 직후 순간이동이 생기지 않는다
[PASS] 아레나 도착 → 이탈 감시 개시(BossArrivedOnce=true)
시작 상태=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=355.1s f=14 · 중심 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=14 · index=1 · 조이스틱=0 · 애님=Idle · 에이전트 NavMesh=False
[PASS] 줄에 타깃·가이드 상태가 문자로 들어간다(Q7 이 로그만 읽는다)
[PASS] 반경 안 복귀 → 이탈 타이머 해제(OutsideSince=-1.0)
[PASS] 재진입해도 이탈 수는 그대로 1(에피소드당 1줄)
진단 줄 원문(보스 없음 · 잡몹 타깃):
#1 t=355.1s f=14 · 중심 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=355.1
[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