본문 바로가기

언리얼러닝/최적화

Unreal 프로젝트 에셋 대량 편집 최적화

 

언리얼에서 프로젝트 에셋의 용량을 한번에 줄일수 있는 방법이 있을까

 
 
 
 

언리얼 엔진에서 프로젝트 에셋의 용량을 한 번에 줄이는 것은 몇 가지 접근 방식과 도구를 조합하여 이루어질 수 있습니다. 특히 에디터 내에서 대량으로 설정을 변경하거나, 프로젝트 전체의 빌드(쿠킹) 프로세스를 최적화하는 방법들이 있습니다.

가장 효과적인 방법들을 단계별로 정리해 드리겠습니다.

1. Property Matrix (프로퍼티 매트릭스)를 이용한 대량 편집

가장 강력하고 직접적인 방법으로, 특정 유형의 에셋(텍스처, 스태틱 메쉬 등)의 속성을 일괄적으로 변경하여 용량을 줄이는 것입니다.

  1. 에셋 선택: 콘텐츠 브라우저에서 최적화하려는 에셋들을 모두 선택합니다 (Ctrl + A 또는 Shift + 클릭). 특정 폴더 내의 모든 에셋을 선택할 수도 있습니다.
  2. Property Matrix 열기: 선택된 에셋 중 아무 에셋이나 우클릭 -> Asset Actions -> Bulk Edit via Property Matrix를 선택합니다.
  3. 속성 일괄 변경: Property Matrix 창이 열리면, 선택된 모든 에셋의 공통 속성들이 오른쪽에 표시됩니다. 여기서 다음과 같은 중요한 속성들을 조절할 수 있습니다.
    • 텍스처 (Textures):
      • Maximum Texture Size: 이 값을 조절하여 모든 선택된 텍스처의 최대 해상도를 제한할 수 있습니다. 예를 들어, 4096 (4K)로 설정되어 있다면 2048 (2K)나 1024 (1K) 등으로 낮춥니다.
      • LOD Bias: 텍스처의 MipMap 레벨을 강제로 높여 해상도를 낮춥니다. (0은 기본, 1은 한 단계 낮춤)
      • Compression Settings: 텍스처의 압축 포맷을 Default 외에 DXT1 (RGB만) 또는 ASTC (모바일) 등 더 효율적인 포맷으로 변경할 수 있습니다. (품질 저하 가능성 있음)
      • Never Stream: 이 옵션이 활성화되어 있다면, 항상 모든 MipMap이 메모리에 로드되어 VRAM을 많이 차지합니다. 필요 없는 경우 이 옵션을 비활성화합니다.
    • 스태틱 메쉬 (Static Meshes):
      • LOD Settings:
        • Number of LODs: 적절한 LOD 수를 설정합니다.
        • LOD0 항목을 펼쳐 Reduction Settings의 Percent Triangles 또는 Max Triangles를 조절하여 기본 LOD0의 폴리곤 수를 줄입니다.
        • Apply Changes (또는 Apply Chain Reduction): 변경 사항을 적용합니다.
      • Nanite Settings (UE5):
        • Enable Nanite: Nanite를 일괄 활성화하여 고폴리곤 메쉬를 효율적으로 처리할 수 있습니다. 단, 모든 메쉬에 적합한 것은 아니므로 신중하게 적용합니다.
    • 애니메이션 (Animations):
      • Animation Compression Settings: 애니메이션 에셋을 선택한 후 Animation Compression 섹션에서 다양한 압축 코덱을 적용하여 파일 크기와 메모리 사용량을 줄일 수 있습니다. (예: ACL 플러그인 활용)

장점: 직접적이고 강력하게 에셋의 용량을 줄일 수 있습니다.

2. 프로젝트 세팅 (Project Settings) 최적화

프로젝트 전체에 적용되는 설정을 변경하여 전반적인 에셋 용량을 줄일 수 있습니다.

  1. Edit -> Project Settings 열기.
  2. Engine -> Rendering:
    • Texture Streaming: PoolSize를 조절하여 텍스처 스트리밍 풀의 크기를 제어합니다. (너무 줄이면 텍스처 품질 저하)
    • Virtual Textures: Enable Virtual Textures를 활성화하여 대형 텍스처를 효율적으로 관리합니다.
    • Generate Mesh Distance Fields: 필요하지 않다면 이 옵션을 끄면, 메쉬의 SDF 데이터 생성 및 관련 VRAM 소모를 줄일 수 있습니다.
    • Mobile 섹션 (모바일 프로젝트의 경우): 모바일 전용 텍스처 압축 설정(Texture Compression Quality) 및 기타 렌더링 품질 설정을 조절할 수 있습니다.
  3. Engine -> Cooking (쿠킹 설정):
    • 언리얼 엔진은 게임을 빌드(패키징)할 때 에셋을 "쿠킹"하여 플랫폼에 최적화된 형식으로 변환합니다. 쿠킹 설정을 통해 불필요한 데이터를 제거하고 압축률을 높일 수 있습니다.
    • Exclude directories from cook: 쿠킹에서 제외할 폴더를 지정합니다. 개발용 에셋, 미사용 에셋 등이 있다면 제외하여 최종 빌드 크기를 줄일 수 있습니다.
    • Cook only maps used in builds: 빌드에 포함된 맵에서만 사용되는 에셋을 쿠킹하도록 하여 불필요한 에셋을 제외합니다.
    • Compression Quality: 전반적인 압축 품질을 조절합니다.
  4. Engine -> Packaging:
    • List of Maps to include in a packaged build: 프로젝트에 포함될 맵만 명시적으로 지정하여 불필요한 맵과 해당 맵의 에셋이 빌드에 포함되지 않도록 합니다.
    • Exclude editor content: 에디터 전용 콘텐츠가 패키징에 포함되지 않도록 합니다. (기본적으로 활성화되어 있어야 함)
    • Exclude content from the build: 특정 콘텐츠를 빌드에서 영구적으로 제외할 수 있습니다.

장점: 프로젝트 전체에 광범위하게 영향을 미치며, 빌드된 게임의 크기를 줄이는 데 효과적입니다.

3. 사용하지 않는 에셋 정리 (가장 확실한 방법 중 하나)

아무리 에셋을 최적화해도 사용하지 않는 에셋이 많으면 소용이 없습니다.

  1. Content Browser에서 Audit 기능 사용:
    • 콘텐츠 브라우저에서 View Options -> Show Asset Audit를 활성화합니다.
    • Tools -> Audit -> Size Map 또는 Reference Viewer를 사용하여 에셋의 크기와 참조 관계를 분석합니다.
    • Reference Viewer: 특정 에셋이 어디에서 참조되고 있는지 확인하여, 참조되지 않는 에셋을 찾아 제거하는 데 유용합니다.
  2. Fix Up Redirectors in Folder:
    • 에셋을 이동하거나 삭제했을 때 생기는 "리디렉터"를 정리하여 프로젝트의 깔끔함을 유지하고 잠재적인 빌드 문제를 예방합니다. 콘텐츠 브라우저에서 폴더를 우클릭하여 이 기능을 사용할 수 있습니다.
  3. Delete Unused Assets (플러그인 또는 수동):
    • 언리얼 엔진 자체에는 사용하지 않는 모든 에셋을 한 번에 삭제하는 직접적인 버튼은 없습니다. 하지만 에셋 감사 도구를 사용하여 수동으로 정리하거나, Marketplace의 "Asset Cleaner"와 같은 유료 플러그인을 사용하여 자동으로 사용하지 않는 에셋을 찾아 삭제하는 데 도움을 받을 수 있습니다. (단, 플러그인 사용 시에는 반드시 백업 후 신중하게 진행해야 합니다.)

장점: 불필요한 에셋을 제거하여 디스크 용량과 빌드 크기를 직접적으로 줄입니다.

4. 기타 최적화 팁

  • 엔진 스케일러빌리티 설정 (Engine Scalability Settings): Settings -> Engine Scalability Settings에서 에디터의 퀄리티를 조절할 수 있습니다. 이것은 최종 게임의 성능을 직접적으로 바꾸지는 않지만, 에디터 작업 시의 쾌적함을 위해 유용하며, 일부 설정은 패키징에도 영향을 줄 수 있습니다.
  • 플러그인 관리: Edit -> Plugins에서 사용하지 않는 플러그인은 비활성화하여 엔진의 메모리 footprint를 줄입니다.
  • 소스 컨트롤 (Source Control) 활용: 에셋 최적화는 되돌리기 어려운 변경을 포함할 수 있으므로, Git이나 Perforce와 같은 소스 컨트롤 시스템을 사용하여 작업 내용을 기록하고 필요시 롤백할 수 있도록 합니다.

이러한 방법들을 조합하여 프로젝트의 에셋 용량을 효과적으로 줄일 수 있습니다. 가장 중요한 것은 **어떤 에셋이 가장 큰 용량을 차지하는지 분석하는 것(Profiler, memreport 등)**부터 시작하여, 그에 맞춰 가장 효과적인 최적화 방법을 적용하는 것입니다.