Version: 2023.2
언어: 한국어
에셋 번들 워크플로
에셋 번들 종속성

에셋 번들을 위한 에셋 준비

에셋 번들을 정의할 경우 알아 두어야 할 몇 가지 규칙이 있습니다.

  • 씬과 에셋은 동일한 에셋 번들에 함께 포함될 수 없습니다. 개별 에셋 번들은 씬 또는 에셋 중 하나만 포함할 수 있습니다.
  • 특정 씬 또는 에셋은 둘 이상의 에셋 번들에 할당될 수 없습니다.
  • 에셋 번들은 스크립트 에셋을 포함할 수 없습니다.
  • StreamingAssets 폴더 내 파일은 에셋 번들에 추가할 수 없습니다.
  • 에셋 번들의 이름은 출력 폴더의 이름과 일치할 수 없습니다.
  • 에셋 번들은 해당 에셋 번들이 빌드된 특정 플랫폼에만 로드할 수 있습니다.
  • 에디터는 빌드 설정에서 선택한 현재 플랫폼에 관계 없이 모든 에셋 번들을 로드할 수 있습니다. 하지만 에셋 번들 내의 개별 에셋이 에디터의 플랫폼에서 지원되지 않는 플랫폼별 포맷을 사용하는 경우 로드 또는 렌더링이 제대로 이루어지지 않을 수 있습니다. 예를 들어, Android 셰이더는 Windows 에디터에서 마젠타로 렌더링될 수 있습니다.

이러한 규칙 외에는 원하는 번들에 자유롭게 에셋을 할당할 수 있습니다. 하지만 번들을 설정할 때 고려해야 할 몇 가지 전략이 있습니다.

논리적 엔티티 그룹화(Logical Entity Grouping)

논리적 엔티티 그룹화는 각 프로젝트의 에셋 번들에 들어갈 내용을 구성하는 방법을 결정할 때 사용할 수 있는 전략입니다. 원칙은 각 콘텐츠가 나타내는 프로젝트의 기능적 부분을 기준으로 결정해야 한다는 것입니다. 여기에는 사용자 인터페이스, 캐릭터, 환경 및 애플리케이션의 수명 주기 동안 자주 나타날 수 있는 기타 모든 섹션이 포함됩니다.

예제

  • 사용자 인터페이스 화면의 모든 텍스처 및 레이아웃 데이터 번들링
  • 문자/문자 집합의 모든 모델 및 애니메이션 번들링
  • 여러 레벨에서 공유되는 배경 조각의 텍스처 및 모델 번들링

논리적 엔티티 그룹을 기준으로 에셋 번들을 구성하면 사용자가 변경되지 않은 대량의 추가 에셋을 다시 다운로드할 필요 없이 프로젝트에 작은 변경 사항을 더 쉽게 적용할 수 있으므로 DLC(다운로드 가능한 콘텐츠)에 매우 적합합니다.

이 전략을 올바르게 이행하는 데 가장 중요한 비결은 에셋을 각 번들에 할당하는 개발자가 각 에셋이 프로젝트에서 사용될 시기와 위치를 정확히 알아야 한다는 것입니다.

타입 그룹화(Type Grouping)

타입 그룹화 전략에서는 오디오 트랙이나 언어 현지화 파일 등 타입이 비슷한 에셋을 하나의 에셋 번들에 할당합니다.

타입 그룹화는 거의 변경되지 않는 에셋 번들을 설정하는 데 유용할 수 있습니다. 이러한 방식으로 에셋 번들을 그룹화하면 증분 빌드 시 변경되거나 배포해야 하는 에셋 번들의 수가 줄어들 수 있습니다. 단점은 런타임 시 모든 종속 오브젝트를 함께 어셈블하기 위해 더 많은 에셋 번들을 다운로드하고 로드해야 할 수 있다는 것입니다.

동시 콘텐츠 그룹화(Concurrent Content Grouping)

동시 콘텐츠 그룹화는 동시에 로드되고 사용될 에셋을 하나의 번들로 묶는 개념입니다. 이 번들 타입은 각 레벨의 캐릭터, 텍스처, 음악 등이 완전히 다른 레벨 기반 게임에 사용되는 번들 타입이라고 생각할 수 있습니다. 이런 에셋 번들 중 하나에 있는 에셋이 해당 번들의 나머지 에셋이 사용되는 시간에만 동시에 사용된다고 100% 확신할 수 있기를 원합니다. 동시 콘텐츠 그룹화 번들에 포함된 에셋 하나에 종속성이 있으면 로드 시간이 크게 증가합니다. 해당 에셋의 전체 번들을 다운로드해야 하기 때문입니다.

동시 콘텐츠 그룹화의 가장 일반적인 이용 사례는 씬 기반 번들입니다. 이 할당 전략에서는 각 씬 번들에 해당 씬 종속성이 모두 포함되거나 대부분 포함됩니다.

참고: 씬이 포함된 에셋 번들을 빌드할 때 에셋이 다른 에셋 번들에 명시적으로 할당되지 않는 한, 해당 씬에서 참조하는 모든 에셋도 자동으로 에셋 번들에 포함됩니다. 이는 동시 콘텐츠 그룹화를 수행할 때 편리하지만, 참조된 에셋이 별도의 에셋 번들로 빌드하는 다른 씬에서도 사용되는 경우 중복 에셋에 주의해야 합니다.

추가 팁

프로젝트는 필요에 따라 이러한 전략을 혼합하여 사용할 수 있으며, 그렇게 해야 합니다. 주어진 시나리오에 맞는 최적의 에셋 할당 전략을 사용하면 프로젝트의 효율성이 매우 높아집니다.

예를 들어. 한 프로젝트에서 다양한 플랫폼의 사용자 인터페이스(UI) 요소를 자체적인 플랫폼 UI 관련 번들로 그룹화하지만 대화식 콘텐츠는 레벨/씬별로 그룹화하기로 결정할 수 있습니다.

어떤 전략을 따르든 관계없이, 아래의 추가 팁을 항상 염두에 두는 것이 좋습니다.

  • 자주 업데이트되는 오브젝트는 변경 빈도가 낮은 오브젝트와 다른 별개의 에셋 번들로 나누십시오.
  • 동시에 로드될 가능성이 큰 오브젝트(모델, 텍스처 및 애니메이션 등)를 그룹화하십시오.
  • 완전히 다른 에셋 번들의 에셋 하나에 종속된 여러 에셋 번들에 오브젝트 여러 개 있는 경우, 별도의 에셋 번들로 종속성을 옮기십시오. 여러 에셋 번들이 다른 에셋 번들의 동일한 에셋 그룹을 참조하는 경우, 이런 종속성을 공용 에셋 번들로 모아서 중복을 줄이면 효과적일 수 있습니다.
  • SD 또는 HD 에셋처럼 두 오브젝트 집합이 동시에 로드될 가능성이 거의 없는 경우, 각 에셋이 서로 다른 에셋 번들에 포함되도록 하십시오.
  • 동시에 로드되는 경우가 드문 오브젝트가 에셋 번들의 50% 미만인 경우 번들을 분할하는 방법을 고려하십시오.
  • 작지만 콘텐츠가 동시에 로드되는 경우가 많은 에셋 번들을 합치는 방법을 고려하십시오.
  • 오브젝트 그룹이 단순히 같은 오브젝트의 다른 버전에 불과할 경우, 에셋 번들 배리언트를 고려하십시오.
에셋 번들 워크플로
에셋 번들 종속성