티스토리 뷰

🟩 학습 목표

  • Game Animation Sample(GAS)의 모션 매칭 핵심 에셋 마이그레이션 및 의존성 검증 수행
  • 에셋 이주 직후 발생하는 셰이더 Fatal 크래시 및 블루프린트 대량 컴파일 에러 해결
  • 입력 아키텍처 누락으로 인한 시점 먹통 현상의 원인을 분석하고 C++ 코어 설계 방향 수립

🟧 1. 셰이더 컴파일 실패로 인한 Fatal 크래시 해결

🟦 문제 상황

에셋 이주 직후 프로젝트를 재실행하는 과정에서 아래와 같은 치명적 에러 메시지와 함께 에디터가 강제 종료되는 현상이 발생하였다.

Fatal error: [File:...PipelineStateCache.cpp] [Line: 533] Shader compilation failures are Fatal.

🟦 원인 분석

수천 개의 대량 애니메이션 데이터와 머티리얼 에셋이 한 번에 유입되면서 백그라운드 셰이더 재계산(컴파일) 부하가 급증하였다. 이 과정에서 파생 데이터 캐시가 충돌하거나 하드웨어 루프에 걸려 RHI(Render Hardware Interface) 레이어에서 크래시를 유발한 것으로 판단하였다.

🟦 해결 방법

엔진이 참조하는 파생 데이터 캐시(DDC)를 완전히 초기화하여 깨끗한 상태에서 셰이더를 다시 빌드하도록 유도하였다. 아래 경로의 폴더 내부 데이터를 전면 삭제한 후 프로젝트를 재부팅하여 문제를 해결하였다.

  • AppData\Local\UnrealEngine\5.6\DerivedDataCache

🟧 2. 플러그인 미활성으로 인한 블루프린트 컴파일 에러

🟦 문제 상황

CBP_SandboxCharacter 및 ABP_SandboxCharacter 컴파일 시 MotionWarping, MotionMatch, PoseSearch 관련 변수, 함수, 핀이 존재하지 않는다는 내용으로 60개 이상의 대량 컴파일 에러(유령 노드 현상)가 발생하였다.

🟦 원인 분석

에셋의 레퍼런스 구조는 정상적으로 복사되었으나, 해당 노드들을 구동하는 엔진 핵심 플러그인들이 새 프로젝트에서 활성화되어 있지 않아 에디터가 노드의 정의를 인식하지 못하는 현상이었다.

🟦 해결 방법

프로젝트 세팅에서 모션 매칭 및 애니메이션 시스템 구동에 필요한 필수 플러그인 4종을 활성화한 후 에디터를 재시작하여 정상 컴파일을 완료하였다.

  • 활성화 플러그인: Motion Warping, Pose Search, Motion Trajectory, Animation Locomotion Library

🟧 3. 인게임 테스트: 마우스 시점 회전(Look) 먹통 현상

🟦 문제 상황

캐릭터 스폰, WASD 이동, 모션 매칭(Motion Matching) 동작은 정상적으로 출력되나 마우스 조작을 통한 카메라 시점 회전이 전혀 작동하지 않는 현상을 확인하였다.

🟦 원인 분석

가져온 캐릭터 블루프린트가 GAS 전용 플레이어 컨트롤러(PC_Sandbox)와 입력 매핑 콘텍스트(IMC_Default)에 의존하도록 구조화되어 있었다. 캐릭터 에셋만 이주하고 입력을 받아 처리할 컨트롤러와 입력 액션(IA) 데이터들을 연동하지 않아 발생한 구조적 문제였다.

🟦 향후 계획

본 프로젝트 적용 단계에서는 어차피 C++ 코어로 캐릭터 클래스, 플레이어 컨트롤러, 게임모드를 직접 구현하고 향상된 입력(Enhanced Input) 시스템을 코드로 바인딩할 예정이다. 따라서 불필요한 입력 에셋들을 추가 이주하지 않고, C++ 구현 단계에서 입력을 구조적으로 통합하기로 결정하였다.


🟧 4. 추가 기술 습득 및 톤앤매너 검증

🟦 포스트 프로세스(Post Process) 볼륨의 영향력 체감

뷰포트 상에서 포스트 프로세스 볼륨 활성화 여부에 따른 비주얼 품질 차이를 명확히 확인하였다. 블룸(Bloom), 앰비언트 오클루전(AO), 색보정(Color Grading) 등의 포스트 이펙트가 아포칼립스 장르 특유의 어둡고 황량한 톤앤매너(Vibe)를 형성하는 데 결정적인 요소임을 이해하였으며, 메인 프로젝트 빌드 시 필수 적용하기로 확정하였다.

🟦 Result was visible but ignored 경고 분석

컴파일 시 발생하는 해당 경고는 치명적인 에러가 아닌 순수 데이터 흐름상에서 반환값을 처리하지 않았을 때 발생하는 엔진의 안내 메시지임을 파악하였다. 런타임 성능 및 크래시에 영향이 없으므로 우선순위 디버깅 대상에서 제외하는 판단 기준을 정립하였다.


🟧 5. 후속 작업 (Next Action Item)

  • 노션 스프린트 2순위 작업 착수
  • 본 프로젝트에 최종 검증된 에셋 마이그레이션 실행
  • C++ 코어 캐릭터 클래스를 생성하고 Enhanced Input 코드 바인딩 구현
  • 멀티플레이 동기화를 위한 이동 상태 Enum 및 Replicated 변수 설계

🟧 핵심 요약

  • 대량 에셋 이주 시 발생하는 셰이더 컴파일 크래시는 DerivedDataCache(DDC) 초기화를 통해 해결 가능하다.
  • 모션 매칭 노드가 인식되지 않는 60여 개의 컴파일 에러는 Pose Search 등 필수 플러그인 4종의 활성화 누락이 원인이었다.
  • 에셋 마이그레이션 시에는 외형과 애니메이션뿐만 아니라 이를 구동하는 플레이어 컨트롤러 및 입력 시스템의 의존성 관계를 반드시 고려해야 한다.
  • 향후 본 프로젝트 적용 시에는 마이그레이션된 에셋 리소스를 C++ 코어로 설계한 Enhanced Input 및 리플리케이션 시스템과 유기적으로 결합한다.

'내일배움캠프 Unreal_7기' 카테고리의 다른 글

TIL - 13일차  (0) 2025.12.15