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 방식도 정해져 있음
UniteSeoul2018
Custom Patch
DownloadHandler를 통해
- Manifest의 version, CRC 참고하여 해당 번들 다운로드 결정할 수 있음
- 사용자가 원하는 JSON과 같은 여러 표준 데이터 포맷을 이용하여 패치 진행 가능
→ 많은 서드 파티 프로그램이 애셋패치를 Binary Diff로 제공함과 동시에 Compression 방식도 다름
UniteSeoul2018
Client Workflow
1)현재 클라이언트에서 CDN에 있는 업데이트 정보와 현재의 정보 비교
- manifest 파일 변경사항 확인
- 해당 애셋 번들에 대한 다운로드 실행
Default vs Custom
Default : 번들 버전이 다를 경우 기존 것을 삭제하고 번들 전체를 다시 다운로드 받음
Custom : 번들 버전이 다를 경우 기존 것과 Diff 해서 번들 다운로드 가능
Custom Patch의 경우 구현하는 로직에 따라 달라짐
하지만 Default인 경우에도 번들을 잘 나누어 관리한다면 충분히 효율적임
Addressable?
Asset을 더 효율적으로 관리하기 위해 Unity에서 제공하는 시스템
AssetBundle을 한 번 래핑하여 개발자의 편의성을 고려함
- 자동 번들 의존성 체크
- 애셋 빌드,배포 단순화
- 개발에 따른 코드 변경 최소화
서드파티(Binary Diff)
대부분 Binary Diff Algorithm를 이용하여 패치 진행함
참고
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' 카테고리의 다른 글
Unity Runtime Fee, 유니티 런타임 요금 부과 (0) | 2023.09.15 |
---|---|
프로젝트 -3[Unity] (0) | 2021.10.30 |
프로젝트 -2 [Unity] (0) | 2021.10.28 |
프로젝트 게임 - 1 [Unity] (2) | 2021.04.29 |
[Unity] particle system 익히기 - 1 (Introduction Particle Systems) (0) | 2020.07.24 |