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
'Game Development, 게임개발 > 개발' 카테고리의 다른 글
로그캣 사용하기, 안드로이드에서 환경변수 설정하기 [Unity] (0) | 2022.06.12 |
---|---|
Unity 에서의 MVC 패턴 (0) | 2022.06.12 |
백그라운드에서 실행 [Unity] (0) | 2022.06.12 |
유니티 플레이 중 Recomplie 막는 방법 [Unity] (0) | 2022.06.12 |
구글 애드몹, GoogleAdmob id 빌드할 때마다 사라짐 [유니티, Unity] (0) | 2022.06.12 |