BurningTimesAi/공유/대화로그/FirstRising/2026-09-19_비주얼개선_자율작업_인수인계.md

10 KiB
Raw Permalink Blame History

FirstRising 비주얼 개선 — 자율 작업 인수인계서 (2026-09-19 · 세션 2)

⚠️ 최신 인계서는 2026-09-19_비주얼개선_세션3_인수인계.md 이다(세션 3 시작용). 이 문서는 세션 2 기록으로 보존한다.

작성: 총괄PM (세션 기록 10MB 도달 — C40). 이 문서 한 장으로 다음 세션을 시작한다. 이전 인계서 = 2026-09-19_비주얼개선_세션인수인계.md(원칙·부록 A 원문).

0. 다음 세션 첫 프롬프트

FirstRising 비주얼 개선 자율 작업을 이어서 진행해.
인계서 E:\BurningTimes\공유\대화로그\FirstRising\2026-09-19_비주얼개선_자율작업_인수인계.md 를 먼저 읽어라.
목표(디아블로식 고퀄 3D 액션 RPG 비주얼 + 타격감)에 도달할 때까지 중단 없이 반복 개선한다.
§4 남은 작업부터 이어서 하고, 원칙(§1)은 그대로 지킨다.

1. PD 지시 (이번 세션 누적 — 모두 유효)

  • 목표: 현재 에셋 + 셰이더·조명·후처리·VFX·카메라로 디아블로식 핵앤슬래시 "고퀄리티 3D 액션 RPG 비주얼 + 타격감", 상업 판매 가능 수준
  • 목표 도달까지 자율 반복, 절대 중단 금지(허락 대기·파일 보고로 멈추지 말 것)
  • 텍스처 개선 필요 시 ComfyUI(C:\Comfyui, Comfy Desktop) 연동, 참고 = pinterest.com · civitai.com
  • 모델·LoRA·필터 등 자율 다운로드 허락(파일 정보는 최종 보고에). 자체 원칙: .safetensors 만, 실행파일·pickle 금지
  • 기존 원칙 유지: 게임 코드·원본 에셋·ProjectSettings·실제 게임 맵 무수정, 작업 위치 = Assets/Scenes/TestVisual.unity(+TestVisual/TestVisual_Map.unity) · Assets/BurningTimes/Visual/, bt/work Phase 커밋·push 금지, 감사 에이전트 금지
  • 원본 반영은 TestVisual 에서 모두 마친 뒤 PD 지시 시. 원본 URP·맵을 테스트에 쓸 땐 복사본으로 작업
  • 세션 전환 권고·요구 금지(PD 지적)

2. 핵심 발견 (보고 필수)

  1. 맵 조명 8개가 실행 중 기여 0 — 서브씬이 L_FG 데모 LightmapSnapshot.asset(라이트맵 불일치)을 참조 → 조명이 Baked 로 처리돼 실시간에서 빠짐. TestVisual_Map 에서 참조 해제·Realtime 전환으로 해결
  2. 게임 후처리 그레이딩이 원천 불가 — 프로젝트 Assets/PostProcessData.asset 이 게임 전용 Assets/GameAssets/Shader/UberPost.shader 를 사용: ApplyColorGrading 주석 처리 + 고정 곡선 (c/(c+0.4))^2 → 톤매핑·노출·색보정 불가, 중간톤 0.18→0.096 으로 눌려 게임 전체가 어둡게 뭉침(PD 불만 1의 근본 원인). TestVisual 전용 렌더러만 URP 표준 PostProcessData 로 교체
  3. PlayerFresnelRenderFeature = 보호막·부활 무적 표시(림 아님), 몬스터 _RimColor = 피격 색 → 림은 별도 패스로
  4. 실제 게임 화면 캐릭터 = LODGroup LOD1 URP_Lit_Player(IDA Shader Graph 는 3.5 m 이내 LOD0), 몬스터 = Midium 에서 Shader.globalMaximumLOD=999 로 SimpleLit(블린퐁) 서브셰이더
  5. 해상도: 게임 코드가 목표 세로 1600/1000/800 px → 1920 화면 Ultra 0.83 · Midium 0.52 · Low 0.42 (역전 없음). PD 결정 대기(추천 0.75)
  6. 그림자 거리 10 m(3등급 공통)라 원래 화면에 그림자가 안 생김(카메라→캐릭터 16 m)
  7. Unity 네이티브 크래시 1회(02:56, Play 직후 그림자 SRP Batcher RenderShadowCasterPartsSRPBatcher→GetBindMasks) — 리포트 %LOCALAPPDATA%\Temp\Unity\Editor\Crashes\Crash_2026-09-18_175652936. 씬 백업은 scratchpad 로 이동 보존. 재현 여부 확인 중
  8. L_FG.../Coffin01.mat 이 URP 자동 업그레이드로 로컬 변경(임포트 때마다 재발) — 커밋 제외, 렌더링 동일

3. 완료 (FirstRising bt/work, push 없음)

커밋 내용
e3fbd5da85 Phase2 전용 URP(Midium 복제, 그림자 25 m·1024·하드) + VisualProfileSwitcher(Play 중에만 교체·종료 시 원복) · 맵 조명 실시간 복구 · Trilight 환경광 · 반사 큐브맵 · 블롭 · 키 라이트
7fb2c4b6c4 Phase4 TV_Volume_Main (당시 그레이딩 미적용 — 발견 2)
6d27d9aa19 Phase3+4b 재질 변형 7(스펙 중립화·매끈함·노멀) + 노멀맵 11(그레이스케일→노멀) + 지형 복제(노멀 레이어, 4 m) · 표준 PostProcessData · 노출 1.25 대비 16 채도 12 WB+6 비네트 0.3 · FSR 샤프 0.85 · 달빛 2.5 · 히어로 라이트 14/r12 · 청록 1.2
27048aebf2 Phase6+7 림(전용 렌더러 PlayerRimLight + TV_PlayerRim, 지수4·배율0.35) · HitFeelDirector(ECS 피격값 읽기 → 흔들림·히트스톱·불꽃·섬광·처치 빛)

| bcc3b67a1b Phase5 | 선형 안개 18~65 m 청회색 · 분위기 먼지 · 등불 일렁임(TVLightFlicker) · 가려짐 실루엣 복사 셰이더(발끝 오검출 제거·푸른 반투명) | | 8e3c4942d3 Phase8 | 카메라 옵션 TVCameraProfile(기본 꺼짐, 14 m·FOV 48) · 식생 그림자 끔(캐스터 90→74) |

  • 최종 수치(공터·카메라 16 m): 평균 밝기 0.075 → 0.120 · 암부 60% → 17% · Draw 181 → 286 · SetPass 35 → 55 · 삼각형 8.0만 → 13.5만
  • 기록 완료: PD 지시 로그 BT18 ⑨ 결과 · 대화로그 2026-09-19.md §5
커밋 내용
031dc33fbf 해상도 WorldManager.cs Midium 목표 세로 1000→1440 — 9026d835ce 로 원복(PD: Test 씬 완료 후 원본 반영)
3a5a455771 Phase9 근접 카메라 켬(PD 결정, 14 m·FOV 48) · TVEntityBlobShadows(몬스터 발밑) · 소프트 섀도 Low · 캐릭터 노출 정리
828a5dabc5 Phase10 TVShadowCasterSanitizer — 그림자 패스 없는 그림자 캐스터 엔티티 43개 정리 → 에디터 크래시 2회의 원인 제거(전투 재현 2회 무크래시)
516fb88f28 보스 1마리(EvilUndead7 idx 71, TestVisual 스폰 목록만) · TVBossScale · 렌더 해상도 0.75 를 스위처 renderScaleOverride 로 이동(TestVisual 전용)
4e955f04d1 보스 5배 → 2배 (PD)
5fc02132f2 PD 지시 4건: 보스 16 m 이내 카메라 14→18.5 m·FOV 48→52(TVCameraProfile) · 적 피격 섬광 최고 0.45·0.09 s(HitFeelDirector) · 플레이어 무적(TVTestCheats) · P09 여전사 외형 교체(TVCharacterSwap + Visual/Characters/TV_P09_Female.prefab, lilToon→URP Lit 복사본 8, 원래 몸체의 레이어·렌더링 레이어 복사로 림·X-ray·프레넬·키라이트·블롭 동일 적용)
  • 최종(렌더 0.75·카메라 14 m): 평균 밝기 0.119 · Draw 235 · SetPass 56 | 6dd1563c6e | 보스 스폰 지점 → 문 밖 공터 (2,-47) · TVCharacterSwap 몸통 기준(루트의 부모) 변환 — 활 위치·방향 일치 | | 058eac18a8 | 원래 캐릭터 복귀(TVCharacterSwap 끔) · TVMonsterZones 구역 5곳 5~8마리(순찰·피격 추격·10초 재스폰·5~8타) · TVPlayerAttackRange(사거리 ×0.7 = 6.3 m, 적 없으면 공격 중지, 테두리 원) · 평소 카메라 16 m/FOV 50 | | c8125d3857 | WL 타격감 이식(HitFeelDirector 재작성 + TVPresentationHook): 등급별 히트스톱·흔들림·펀치, 경직(0.09 s·히트 모션 유지), 넉백 0.2 m/0.12 m · 사거리 원 0.04 m·알파 0.16 | | 06565f107c | TVDamageNumbers 금색 외곽선 숫자(쌓임·팝, 게임 숫자 끔) · 베기 줄기·별 섬광 · 붉은 섬광 세기 0.1 | | 9a66b66e60 | TV_AnimatedProxy 셰이더 + TVMonsterProxies(몬스터 그림자·보스 슈퍼 아머 외곽선) · TVBossLights · TVMonsterLocomotion(보폭 실측 표·속도/재생 맞춤) · TVPreDamageHook(플레이어 피격 숫자) · 이동 방향 · 원 0.012 m · 폰트 외곽선 0.13·dilate -0.15 |

  • 테스트 전용 토글(원본 반영 대상 아님): BT_Visual 의 TVTestCheats.invinciblePlayer · TVCharacterSwap(켜면 P09 여전사) · TVCameraProfile.bossPullBack · TVPlayerAttackRange(rangeScale·holdFireWithoutTarget·alwaysShowRing) · BT_Visual/MonsterZones(구역 위치 = 자식 Zone1~5, 몬스터 번호·반경·수)

  • 주의: 몬스터 GPU 애니메이션의 Walk(1) 칸은 전부 빈 클립 — 이동 애니메이션은 Run(2)만 쓸 것

4. 남은 작업 — PD 결정 사항 (게임 본편 반영)

  1. ① 표준 PostProcessData(또는 커스텀 UberPost 에 그레이딩 복원) + 게임 씬 Volume ② 실제 맵 LightingData·조명 모드 점검 ③ 몬스터·드롭 프리팹 그림자 설정 정리(또는 셰이더 LOD 0 서브셰이더에 ShadowCaster 추가) — 그림자 거리를 늘리기 전 필수 ④ 그림자 거리 25 m ⑤ 타격감을 ECS 이벤트로 이식 ⑥ 품질 등급별 on/off(그림자 +86 Draw · 림 +24 · 후처리 +10)
  2. 추가 반복 후보: 몬스터 림(BRG·GPU 스키닝 호환 셰이더 필요) · ComfyUI 지면 디테일 타일(텍스처용 모델 필요)
  3. P09_Modular_Humanoid 구매 여부(PD) — 에셋 폴더는 미커밋(구매 결정 전), 원본 재질은 lilToon 전용(미설치)

5. 작업 방법 (실증)

  • Unity CLI: unity command --project-path C:\BurningTimes\FirstRising eval_file --file <cs> (Roslyn, return 문자열). 한 호출이 5초 넘으면 응답만 끊김(실행은 계속) → 무거운 작업은 나눠서
  • 캡처: capture_game_view --source screen --width 1080 --height 1920 --json → base64 → scratchpad 저장(Assets 저장 금지)
  • 헬퍼(scratchpad C:\Users\sw\AppData\Local\Temp\claude\E--BurningTimes\40033f44-40b9-4a47-bdbd-1903c584f36f\scratchpad): play.ps1(Play+캐릭터 공터 이동+카메라 16 m) · cap.ps1 <이름> · comp.ps1 -names -out(JPEG 합성) · lum.ps1 -names(평균 밝기·암부 비율) · p2_chk2.cs(Draw/SetPass) · p7_move.cs(몬스터 근처로 이동 → 전투) · p7_cnt.cs(타격 감지 수)
  • 주의: AssetDatabase.SaveAssets() 금지(원본 머티리얼 자동 저장 사고) → SaveAssetIfDirty(obj) · 조명/환경 색 입력은 sRGB · 서브씬 조명 transform 은 엔티티가 덮어씀(서브씬 파일에서 수정) · 테스트 몬스터는 레벨 1000 보스라 전투 수 초 뒤 캐릭터 사망(FAIL, timeScale 0) — 정상