ChunkDownloader은 이전의 HTTPChunkInstaller을 개선한 버전으로 Battle Breakers라는 게임에서 사용되었다.
ChunkDownloader은 pak파일로 만들고자 하는 어셋들을 PrimaryAssetLabel을 통해 생성할 수 있다.
하나의 PrimaryAssetLabel은 하나의 Pak파일을 생성하게 된다.
게임 프로젝트을 패키징하면 엔진은 기본적으로 청크ID을 0으로 하는 하나의 청크 그룹을 생성한다. 따라서 일부 어셋들을 별도의 청크 그룹으로 생성하고자 한다면 데이터 어셋(PrimaryAssetLabel)을 생성하고 그곳에 별도의 청크ID을 설정해 주면 프로젝트을 패키징시에 해당 파일이 존재하는 폴더의 모든 어셋들을 하나의 청크로 그룹화하여 Pak파일로 생성해 준다.
블루프린트에서는 uint64을 표현할 수 없다. 따라서 C++에서 uint64타입의 변수을 노출 시켜도 블루프린트에서는 참조할 수 없다.
ChunkDownloader에서는 GetChunkStatus라는 메서드을 이용해서 해당 청크가 마운트 되어 있는지을 검사할 수 있다. 따라서 패치 과정의 마지막에 가지고 있는 청크ID 리스트을 이용해 청크들이 제대로 마운트 되어 있는지을 검사하는 기능을 추가해 주면 좋을 것이다.
FChunkDownloader::GetChunkStatus(int32 ChunkId)
FChunkDownloader::GetChunkStatus() 함수가 반환하는 EChunkStatus에 대해~
EChunkStatus은 해당 청크의 상태을 나타내는 enum이다.
enum class EChunkStatus
{
Mounted, // 청크가 마운트되어 있어 언제나 사용 가능 상태
Cached, // 청크가 다운로드가 완료되어 있지만 마운트 되어 있지는 않은 상태
Downloading, // 청크를 현재 다운로드 중인 상태
Partial, // 청크의 일부분만 캐시되어 있는 다운로드가 보류(중지)된 상태
Remote, // 로컬에 다운로드되어 캐시된게 없지만 해당 청크을 원격으로 사용하는 상태
Unknown, // no paks are included in this chunk, can consider it either an error or fully mounted depending
};
ChunkDownloader은 게임이 실행중인 RunTime에서도 패치 서버로 부터 청크을 다운 받은 후 마운트하여 액터을 스폰시킬 수 있다.
'개발일지' 카테고리의 다른 글
2022/11/24 개발 일지 (0) | 2022.11.24 |
---|---|
2022/11/23 개발 일지 (0) | 2022.11.23 |
2022/11/21 개발 일지 (0) | 2022.11.21 |
2022/11/20 개발 일지 (0) | 2022.11.20 |
2022/11/18 개발 일지 (0) | 2022.11.18 |