안동민 개발노트

본문 시작

에셋 최적화 및 압축

텍스처·메시·머티리얼·오디오·비디오 에셋의 용량과 런타임 비용을 줄여 로딩·메모리·프레임을 개선합니다.

에셋을 잘 가져오고 정리하는 것만으로는 충분하지 않습니다.

실제 프로젝트 품질은 에셋 최적화(Optimization)에서 갈립니다.

최적화가 부족하면 빌드 용량이 커지고 로딩이 길어지며, 런타임 프레임이 불안정해집니다.

이번 절에서는 성능과 용량을 함께 관리하기 위한 에셋 압축/최적화 기준을 정리합니다.


에셋 최적화의 중요성

최적화되지 않은 에셋은 다음과 같은 문제들을 야기할 수 있습니다.

  • 성능 저하: 과도한 폴리곤 수, 고해상도 텍스처, 비효율적인 재질 등은 GPU와 CPU에 과부하를 주어 프레임 속도를 떨어뜨립니다.
  • 빌드 용량 증가: 불필요한 데이터가 포함된 에셋은 최종 게임 파일의 용량을 크게 늘려 다운로드 시간과 설치 공간을 증가시킵니다.
  • 메모리 사용량 증가: 최적화되지 않은 에셋은 런타임에 더 많은 메모리를 차지하여, 특히 저사양 기기에서 문제가 발생할 수 있습니다.
  • 로드 시간 증가: 에셋의 크기가 크면 게임 로딩 시간이 길어집니다.

텍스처 최적화 및 압축

텍스처는 게임 그래픽의 시각적 품질에 큰 영향을 미치지만, 동시에 가장 많은 메모리를 차지하는 에셋 유형 중 하나입니다.

해상도 관리

  • 적절한 해상도 선택: 모든 텍스처가 최고 해상도일 필요는 없습니다. 화면에 크게 나타나거나 디테일이 중요한 텍스처(캐릭터 얼굴, 주요 배경 요소)에만 고해상도(예: 2048x2048, 4096x4096)를 사용하고, 멀리 있거나 작은 오브젝트에는 저해상도(예: 512x512, 256x256) 텍스처를 사용합니다.

  • 2의 제곱수(Power of Two): 일반적인 밉·스트리밍 텍스처는 256, 512, 1024 같은 크기를 출발점으로 삼습니다. 비거듭제곱 크기도 용도와 설정에 따라 사용할 수 있으므로 지원하는 밉·압축·스트리밍 조건을 확인합니다.

  • 언리얼 에디터 내에서 해상도 조절

    콘텐츠 브라우저에서 최적화할 텍스처 에셋을 더블 클릭하여 텍스처 에디터를 엽니다.

    디테일 패널에서 Maximum Texture Size (최대 텍스처 크기)를 설정하여 에디터 내에서 텍스처의 최대 해상도를 제한할 수 있습니다.

    이는 외부 원본 파일을 줄이는 작업과 다릅니다. 생성되는 텍스처의 최대 크기와 Max In-Game, 밉 수, 대상 플랫폼 설정을 함께 확인합니다.

압축 설정 (Compression Settings)

텍스처 에디터의 디테일 패널에서 Compression Settings (압축 설정)을 조절하여 텍스처의 파일 크기와 메모리 사용량을 최적화할 수 있습니다.

텍스처에 저장한 정보와 설정

색상, 법선, 수치 마스크 등 텍스처의 의미에 맞춰 압축과 sRGB를 선택한다.

설정과 적용 조건
정보설정확인할 조건
색상Default · 보통 sRGB 사용표시할 색을 저장한 텍스처인지 확인합니다.
법선Normalmap노멀 방향 규약과 녹색 채널 반전 필요 여부를 확인합니다.
마스크Masks · sRGB 끔거칠기·금속성 등 채널별 수치를 선형 데이터로 읽습니다.
UIUserInterface2D알파·선명도와 메모리 비용을 함께 확인합니다.
변위VectorDisplacementmap벡터 변위를 읽는 재질과 데이터 형식에 맞춥니다.
색상

Default · 보통 sRGB 사용

표시할 색을 저장한 텍스처인지 확인합니다.

법선

Normalmap

노멀 방향 규약과 녹색 채널 반전 필요 여부를 확인합니다.

마스크

Masks · sRGB 끔

거칠기·금속성 등 채널별 수치를 선형 데이터로 읽습니다.

UI

UserInterface2D

알파·선명도와 메모리 비용을 함께 확인합니다.

변위

VectorDisplacementmap

벡터 변위를 읽는 재질과 데이터 형식에 맞춥니다.

Mip Maps (밉 맵)

Mip Map은 텍스처의 다양한 해상도 버전을 미리 생성하여, 화면에서 텍스처가 차지하는 크기와 샘플링 범위에 맞는 해상도를 사용하는 기술입니다.

이는 텍스처 샘플링 비용을 줄여 GPU 성능을 향상시키고, 작게 보이는 텍스처의 간섭 무늬(모아레)와 깜빡임을 줄여줍니다. 밉 체인 자체의 저장 비용도 있습니다.

  • 텍스처 에디터에서 Mip Gen Settings (밉 생성 설정)을 확인합니다. 기본적으로 대부분의 텍스처는 밉 맵이 생성되도록 설정되어 있습니다.
  • UI 텍스처나 특수 목적의 텍스처처럼 항상 원본 해상도를 유지해야 하는 경우에는 NoMipmaps를 선택할 수 있지만, 성능 비용이 발생할 수 있습니다.

3D 모델(메시) 최적화

3D 모델의 폴리곤(Polygon) 수는 렌더링 성능에 직접적인 영향을 미칩니다.

폴리곤 수 감소 (Poly Count Reduction)

  • 필요한 만큼만 디테일: 화면에 크게 나타나지 않거나 중요하지 않은 오브젝트는 폴리곤 수를 줄여야 합니다. 너무 많은 폴리곤은 불필요한 GPU 부하를 유발합니다.
  • 외부 3D 프로그램에서 최적화: 3D 모델링 소프트웨어(블렌더, 3ds Max, 마야 등)에서 모델을 익스포트하기 전에 폴리곤 수를 최적화합니다.
  • 언리얼 엔진의 메시 감소(Mesh Reduction): 스태틱 메시 에디터에서 리덕션 툴(Reduction Tool)을 사용하여 모델의 폴리곤 수를 줄일 수 있습니다. (프로그레시브 메시, 리덕션 설정 등)

LOD (Level of Detail) 그룹 설정

일반 스태틱 메시의 LOD (Level of Detail)는 주로 화면상 크기를 기준으로 다른 상세도의 메시를 선택합니다. Nanite의 가상화 지오메트리 경로는 별도로 판단합니다.

가까이서는 고품질 모델을, 멀리서는 저품질 모델을 사용하여 성능을 최적화합니다.

LOD 그룹 생성
  • 스태틱 메시 에디터에서 Details (디테일) 패널의 LOD Settings (LOD 설정) 섹션을 찾습니다.
  • Num LODs (LOD 수)를 조절하여 원하는 LOD 레벨 수를 설정합니다. (예: 3이면 LOD 0, 1, 2의 세 단계이며 원본은 LOD 0)
  • LOD 그룹 또는 각 단계의 Reduction Settings를 설정하고 Apply Changes로 적용합니다. 실제 옵션은 버전과 메시 설정에 따라 확인합니다.
LOD 거리 설정
  • 각 LOD 레벨 옆에 있는 스크린 사이즈(Screen Size) 값을 조절하여, 해당 LOD가 사용될 정규화한 화면상 크기를 지정합니다. 이 값이 작을수록 더 멀리서 낮은 LOD가 사용됩니다.
  • 팁: LOD는 특히 배경 오브젝트나 반복되는 오브젝트에 적용할 때 성능 개선 효과가 큽니다.

UV 맵 최적화

  • UV 용도 구분: 색상 텍스처 UV는 의도적으로 겹치거나 타일링할 수 있습니다. 베이크 조명용 라이트맵 UV는 별도 채널에 겹치지 않는 영역과 충분한 간격이 필요합니다.
  • UV 공간 활용: UV 공간을 최대한 효율적으로 사용하여 텍스처 해상도를 낭비하지 않도록 합니다.

재질(Material) 최적화

재질은 오브젝트의 시각적 속성을 정의하며, 복잡한 재질은 렌더링 성능에 큰 영향을 미칠 수 있습니다.

  • 재질 인스턴스(Material Instance) 활용
    • 하나의 마스터 재질(Master Material)을 생성하고, 여기서 파생된 재질 인스턴스를 사용하여 색상, 텍스처, 수치 등만 변경합니다.
    • 스칼라·벡터 등 일반 파라미터 변경은 셰이더를 다시 컴파일하지 않아 반복 작업에 유리합니다. Static Switch 등은 별도 셰이더 변형을 만들 수 있고, 인스턴스 사용만으로 드로우 콜이 줄어드는 것은 아닙니다.
  • 출력 경로의 계산 줄이기: 실제 출력에 연결된 비싼 연산과 텍스처 샘플을 점검합니다. 연결되지 않은 노드 삭제는 그래프 정리에는 유용하지만, 그것만으로 실행 셰이더가 빨라진다고 볼 수는 없습니다.
  • 명확한 노드 그룹화: 복잡한 재질은 함수(Function)나 그룹(Group)으로 노드를 묶어 가독성을 높이고 재사용성을 확보합니다.
  • 최소한의 명령 수: 모바일 등 저사양 플랫폼을 목표로 한다면, 재질의 셰이더 명령(Shader Instruction) 수를 최소화하도록 노력해야 합니다. 재질 에디터의 통계(Stats) 패널에서 명령 수를 확인할 수 있습니다.

최적화는 단일 수치가 아니라 텍스처, 메시, 재질, 오디오가 각자 다른 병목을 만드는지 확인하는 과정입니다.


사운드(Audio) 및 비디오(Video) 에셋 최적화

  • 사운드 압축·로딩 정책: 편집용 원본 품질을 보존하고, Sound Wave의 압축 품질·스트리밍·대상 플랫폼 코덱을 점검합니다. 외부 파일을 OGG로 바꾸는 것만으로 게임 내 메모리나 디코딩 비용이 정해지지는 않습니다.
  • 사운드 어테뉴에이션(Attenuation): 사운드가 들리는 범위와 볼륨 감쇠를 설정하여, 멀리 있는 사운드는 들리지 않거나 작게 들리도록 하여 공간감을 조절합니다. 들리지 않는 음원의 실제 처리 비용은 가상화·동시 재생 제한 정책도 함께 확인합니다.
  • 비디오 코덱 및 해상도: 게임 내에서 사용되는 비디오 파일은 대상 플랫폼과 Media Player 플러그인이 지원하는 코덱·컨테이너를 먼저 확인합니다. 그 안에서 해상도·비트레이트와 디코딩 비용을 비교합니다.

에셋 최적화 및 압축은 목표 플랫폼 기준으로 반복 점검해야 하는 영역입니다.

텍스처 해상도, 압축 형식, 메시 LOD, 머티리얼 비용을 함께 확인합니다.