내일배움캠프-언리얼

TIL - 99

이시보 2026. 7. 6. 23:09

루멘(Lumen) 이슈 정리

1. 쉬핑 패키징에서 루멘이 플레이어를 못 따라옴

  • 증상: PIE는 정상, 쉬핑 빌드에서 특정 구역에서 거의 못 따라옴 (적 AI도 특정 구역 동일)
  • 원인: 레벨 RecastNavMesh의 Runtime GenerationStatic이었음.
    • 프로젝트는 bGenerateNavigationOnlyAroundNavigationInvokers=True (플레이어 인보커 주변만 런타임 네비메시 생성) 사용.
    • 이 방식은 RuntimeGeneration = Dynamic이어야 동작. Static이면 런타임 생성이 안 돼 네비메시 구멍 → MoveToActor 실패 → 루멘은 2초마다 텔레포트 복구로만 붙음.
    • PIE는 에디터가 네비메시를 항상 갖고 있어 문제가 가려졌던 것.
  • 수정: RecastNavMesh Runtime Generation = Static → Dynamic
    • 레벨에 배치된 RecastNavMesh 액터가 있으면 그 액터 Details에서 변경 후 레벨 저장
    • 없으면 Project Settings ▸ Navigation Mesh ▸ Runtime Generation = Dynamic (DefaultEngine.ini에 반영)
  • 검증: Development 설정으로 패키징 → 콘솔 show Navigation → 죽었던 구역에 네비메시 생성되는지 확인
  • 주의: 네비메시는 플레이어 인보커 30m 버블 + NavMeshBoundsVolume 커버 구역에만 생성됨 (bounds 없는 구역은 Dynamic이어도 안 됨)

2. 특정 선 너머로 가면 루멘이 사라짐 (에디터 + 쉬핑 공통)

  • 증상: 플레이어가 특정 선을 넘으면 루멘이 사라지고, 돌아오면 다시 생김
  • 원인: 루멘(BP_LumenCharacter)이 P_Level_WP에 직접 배치된 액터이고 World Partition Spatially Loaded 상태.
    • WP는 배치 액터를 edit-time 위치의 셀에 귀속 → 런타임에 이동해도 셀이 안 바뀜.
    • 플레이어가 그 원본 셀의 스트리밍 범위를 벗어나면 셀 언로드 = 루멘 디스폰. 돌아오면 재로딩 = 재생성.
    • WP 스트리밍은 PIE에서도 돌기 때문에 에디터에서도 재현됨 (쉬핑 전용 아님).
  • 수정: P_Level_WP에서 배치된 BP_LumenCharacter 선택 → Details ▸ World Partition ▸ Is Spatially Loaded 체크 해제 → 레벨 저장
    • (대안: 배치 대신 GameMode/PlayerController에서 런타임 스폰 → 자동 always-loaded)
  • 같이 확인: 루멘이 리전별로 켜졌다 꺼지는 Data Layer에 할당돼 있지 않은지 (있으면 always-loaded 레이어로 이동)

'내일배움캠프-언리얼' 카테고리의 다른 글

TIL - 101  (0) 2026.07.08
TIL - 100  (0) 2026.07.07
TIL - 98  (0) 2026.07.02
TIL - 97  (0) 2026.07.01
TIL - 96  (0) 2026.06.30