Game Development, 게임개발/개발

유니티 애셋 배포 플로우, Unity Work Flow

게임이 더 좋아 2023. 8. 2. 17:51
반응형
728x170

 

Unity Asset Workflow

 

AssetBundle?

모델, 텍스처, 프리팹, 오디오클립, 씬 등의 애셋의 묶음, 파일 아카이브

애셋번들을 이용하여 런타임에서 애셋 로드 후 사용 가능(런타임 메모리 최적화)

타겟 플랫폼에 맞게 애셋 최적화 가능

 

 

AssetBundle 형태

  • bundle : 에셋번들 파일
  • bundle.manifest : 포함된 Asset Meta info, Dependency, Hash, CRC 등 정보들을 나타내는 파일

 

AssetBundle의 개수?

너무 많음

→ 메모리 사용량 증가, 로딩 시간 증가, 대용량 다운로드

너무 적음

→ 빌드 시간 증가, 개발 과정 복잡, 다운로드 시간 증가

 

 

AssetBundle 이 갖는 Manifest?

순환 중복 검사(CRC) 데이터 등과 같은 번들에 대한 정보를 포함

(포함된 에셋, 종속성, 그리고 메타 정보)

번들의 Manifest에 접근하여 여러가지 정보를 이용하여 커스텀 다운로더 설정 가능

CRC는 애셋 번들의 무결성 및 보안을 체크하는데 사용함

로컬의 CRC 값과 서버의 CRC 값이 일치하지 않으면 에셋은 로드되지 않음

 

 

AssetBundle이 패치하는 방식

Default :

  • 현재 다운로드 된 에셋 번들과 각각의 버전 정보 리스트 또는 Hash128 값
  • 서버에 있는 에셋 번들과 각각의 버전 정보 리스트 또는 Hash128 값

1)버전 정보 또는 Hash128 값이 다른 번들, 2)새로 생겨난 번들, 3)사라진 번들, 4)수정된 번들에 대해서 다시 CDN을 기준으로 다운 받게 됨

Unity에서는 Diff 패치를 Built-in으로 제공하지 않으며 Compression 방식도 정해져 있음

 

Custom Patch

DownloadHandler를 통해

  • Manifest의 version, CRC 참고하여 해당 번들 다운로드 결정할 수 있음
  • 사용자가 원하는 JSON과 같은 여러 표준 데이터 포맷을 이용하여 패치 진행 가능

→ 많은 서드 파티 프로그램이 애셋패치를 Binary Diff로 제공함과 동시에 Compression 방식도 다름

 

 

Addressable?

Asset을 더 효율적으로 관리하기 위해 Unity에서 제공하는 시스템

AssetBundle을 한 번 래핑하여 개발자의 편의성을 고려함

  • 번들 의존성
  • 애셋 빌드,배포 단순화
  • 개발에 따른 코드 변경 최소화

 

 

서드파티(Binary Diff)

대부분 Binary Diff를 이용하여 패치 진행함

 

 


 

참고

 

https://www.youtube.com/watch?v=Lx61ZEKEvnQ

https://www.youtube.com/watch?v=Z9LrkQUDzJw

https://www.youtube.com/watch?v=Lx61ZEKEvnQ

https://www.youtube.com/watch?v=yoBzTpJYN44

https://www.youtube.com/watch?v=EP3pvPAcHSo&t=2425s

https://learn.unity.com/tutorial/assets-resources-and-assetbundles#5c7f8528edbc2a002053b5a9

 

 

반응형
그리드형