icon안동민 개발노트

에셋 최적화 및 압축


 언리얼 엔진 프로젝트에서 에셋 최적화와 압축은 게임 성능 향상의 핵심입니다.

 이 가이드에서는 다양한 에셋 유형별 최적화 전략과 압축 기법을 상세히 살펴보겠습니다.

텍스처 최적화

 해상도 및 형식 최적화

  • 적절한 해상도 선택 : 필요 이상으로 큰 텍스처 지양
  • 압축 형식 활용 : BC7(고품질), BC1-BC3(일반), ASTC(모바일)

 설정 예시

Texture Settings:
- Compression Settings: BC7 (PC/Console) or ASTC (Mobile)
- MIP Gen Settings: FromTextureGroup
- Texture Group: World (또는 용도에 맞는 그룹)

 MIP 맵 최적화

  • MIP 레벨 조정으로 원거리 렌더링 성능 향상
  • 스트리밍 MIP 사용으로 메모리 사용량 감소

메시 최적화

 폴리곤 수 감소

  • 불필요한 디테일 제거
  • Mesh Decimation 도구 활용

 LOD (Level of Detail) 시스템 구현

Static Mesh Editor:
- LOD Group: SmallProp
- LOD Settings:
  LOD 0: 100% triangles
  LOD 1: 50% triangles
  LOD 2: 25% triangles

 콜리전 최적화

  • 단순화된 콜리전 사용
  • 원거리 오브젝트의 콜리전 비활성화

애니메이션 최적화

 애니메이션 압축

Animation Compression Settings:
- Compression Scheme: Automatic
- Allow Anim Compression: True

 본 개수 감소

  • 불필요한 본 제거
  • 원거리 캐릭터용 간소화된 스켈레톤 사용

사운드 최적화

 오디오 압축

Sound Settings:
- Compression Quality: 70-80%
- Sound Class: Appropriate class (e.g., SFX, Music)

 스트리밍 및 캐싱

  • 대용량 오디오 파일 스트리밍 설정
  • 자주 사용되는 사운드 메모리 캐싱

머티리얼 최적화

 복잡도 감소

  • 불필요한 노드 제거
  • 미리 계산된 텍스처 활용 (예 : 베이크된 라이팅 맵)

 인스턴스 활용

  • 머티리얼 인스턴스로 성능 향상 및 메모리 절약
Material Editor:
- Usage: Use Material Instances

임포트 설정 최적화

 자동화된 임포트 설정

Project Settings > Import Settings:
- Auto Generate Collision: True (for static meshes)
- Create Physics Asset: True (for skeletal meshes)

 에셋별 임포트 설정 조정

  • 텍스처 : 용도에 맞는 압축 설정
  • 메시 : 적절한 LOD 설정 및 콜리전 생성

스트리밍 시스템 활용

 레벨 스트리밍

  • 대규모 월드를 섹션으로 분할
  • 동적 로딩/언로딩으로 메모리 사용 최적화
World Settings:
- Enable World Composition: True

 텍스처 스트리밍

Project Settings > Textures:
- Texture Streaming: True
- Pool Size: Adjust based on target platform (e.g., 1000 for PC, 512 for mobile)

플랫폼별 최적화 고려사항

 모바일 최적화

  • 낮은 해상도 텍스처 사용
  • 단순화된 셰이더 및 라이팅
  • 메모리 사용량 최소화

 콘솔 최적화

  • 하드웨어 특화 압축 형식 활용
  • 플랫폼별 성능 프로파일링 및 조정

대규모 오픈 월드 게임 최적화

 월드 분할 및 스트리밍

  • World Composition 시스템 활용
  • 동적 로딩 거리 최적화

 프로시저럴 생성 기법 활용

  • 반복적인 환경 요소의 동적 생성
  • 메모리 사용량 감소 및 다양성 증가

성능과 시각적 품질 균형

 점진적 LOD 시스템

  • 부드러운 LOD 전환으로 시각적 팝인 현상 감소
Static Mesh Editor:
- LOD Settings > Apply Chain Reduction

 선택적 고품질 렌더링

  • 플레이어 근처 또는 중요 오브젝트에 고품질 설정 적용
  • 원거리 또는 덜 중요한 요소는 낮은 품질 설정 사용

최적화가 게임 성능에 미치는 영향

 로딩 시간 감소

  • 에셋 크기 축소로 디스크 I/O 감소
  • 스트리밍 시스템으로 초기 로딩 시간 단축

 메모리 사용량 최적화

  • 압축 및 LOD로 런타임 메모리 사용량 감소
  • 불필요한 에셋 언로드로 메모리 관리 효율화

 프레임 레이트 향상

  • 최적화된 에셋으로 GPU/CPU 부하 감소
  • 일관된 60+ FPS 유지 가능

실제 적용 예시 : 오픈 월드 RPG 최적화

  1. 월드 분할 및 스트리밍 설정
World Settings:
- Enable World Composition: True
- Streaming Distance: Adjust based on view distance (e.g., 10000 units)
  1. 지형 최적화
Landscape Settings:
- Component Size: 32x32
- Number of Components: Adjust based on world size
- LOD Distribution: Set larger LOD ratios for distant areas
  1. 식물 및 소품 최적화
Foliage Tool:
- Enable Instance Culling: True
- Use Culling Distance: True, set appropriate distances
  1. 캐릭터 LOD 설정
Skeletal Mesh Editor:
- LOD Settings:
   LOD 0: 100% triangles (0-1000 units)
   LOD 1: 50% triangles (1000-5000 units)
   LOD 2: 25% triangles (5000+ units)
  1. 텍스처 스트리밍 최적화
Project Settings > Textures:
- Texture Streaming: True
- Pool Size: 2000 (adjust based on available memory)
- Streaming Delay: 1 (balance between stutter and pop-in)
  1. 라이팅 최적화
Light Source Settings:
- Use Dynamic Indirect Lighting: False
- Precomputed Visibility: True
- Build Lighting Only for Visible Levels: True

 에셋 최적화 및 압축은 게임 개발에서 지속적인 과정입니다.

 초기 개발 단계부터 최적화를 고려하면 후반 작업의 부담을 크게 줄일 수 있습니다.

 성능과 시각적 품질 사이의 균형을 찾는 것이 핵심입니다.

 최신 하드웨어의 성능을 최대한 활용하면서 다양한 사양의 디바이스에서 일관된 경험을 제공할 수 있도록 해야 합니다.