Packaging?
Unreal에서는 프로젝트를 사용자에게 배포하기 전, 패키지를 생성함
Package = Source Code + Target Platform
프로젝트 소스코드 컴파일
필수 컨텐츠를 타겟 플랫폼에 맞추어 변환(Cook)
컴파일된 코드와 컨텐츠를 묶어 배포 가능한 파일 생성
언리얼 서밋 온라인 2021
Cooking?
Chunk를 만드는 과정
게임에 대한 변경 작업이 거쳐 컨텐츠를 생성한 후, 패키징 과정 없이 Target Platform에 대한 Chunk를 생성
UnrealPak 프로그램 활용
Chunk?
Unreal에서는 Asset을 Chunk 단위로 사용자에게 제공함
Chunk = Asset1 + Asset2 + Asset3 …
Chunk는 쿠킹 프로세스를 통해 활용되는 Asset Collection임
Unreal에서 엔진에서 패키징과정을 거치면서
각 청크는 .pak 파일로 생성됨
pak 파일을 압축
pak 을 HTTP Chunk Install Data로 쪼갬
Unreal에서 지원하는 패치 방법
- Original 파일 또는 이전 패치의 파일을 가지면서 신규 컨텐츠에 포인터 추가
→ Project Launcher 이용 또는 Chunk Downloader
- 바이너리 패치를 이용하여 Original 컨텐츠 변경
→ 서드 파티 프로그램 이용
Project Launcher 이용
버전을 지정하여 이전에 배포되었던 클라이언트에 패치 작업을 수행함
- 릴리즈된 쿠킹 컨텐츠를 유지해야함(UnrealPak Tool이 패치 패키지 파일에 어떤 컨텐츠를 포함할 지 결정)
- Runtime에서 기존,신규 PAK 파일을 마운트하고, 패치 파일에 더 높은 우선순위를 지정하여 먼저 로드시킴
위와 같은 방식은 이전에 있던 모든 파일을 유지하고 게임에서 새로운 파일만 가리키는 형식이므로 많은 데이터 스토리지를 사용함
→ 그렇기 때문에 Target Platform 별로 패치를 진행함
ChunkDownloader 플러그인 (4.26 +)
Unreal에서 지원하는 소규모 파일을 다수 전달해야 하는 게임에 일반적으로 사용하는 Built-in 패치 솔루션
파일 교체 방식을 이용
Manifest 파일 이용
Manifest : 사용자가 다운로드해야 하는 모든 파일의 목록과 각각의 예상 파일 크기가 포함된 텍스트 파일
Manifest 구성
- $NUM_ENTRIES : 추적하는 패키징 파일의 수
- $BUILD_ID : 매니페스트 파일을 배치한 폴더 이름 → 보통 CDN base URL
- 1)파일 이름
- 2)파일 크기 : Byte 단위
- 3)버전 : 임의의 스트링
- 4)인덱스 : Chunk Index와 일치
- 5)매니페스트 파일이 배치되는 위치에 대해 상대적인 파일 경로
- 클라이언트에서 캐싱된 Manifest 파일 Load
- CDN에 있는 Manifest 파일과 비교
- 최신 Manifest 파일 기준으로 pak 리스트를 캐싱된 Manifest와 비교하여 추가 혹은 업데이트된 컨텐츠 다운로드 진행
'Game Development, 게임개발' 카테고리의 다른 글
C#에 대한 모든 특징, The features of C# (0) | 2021.06.05 |
---|---|
객체지향적으로 생각하기, Object-Oriented Thinking (0) | 2021.04.07 |
게임을 만들 수 있는 무료 소프트웨어와 도구들, Free Game Development Software And Tools (0) | 2021.03.26 |
읽기 시작한 책, Introduction to GAME DESIGN, PROTOTYPING, and DEVELOPMENT , Jeremy Gibson (0) | 2021.03.26 |
Object Pooling, 오브젝트 풀링, 디자인 패턴 [Game Development] (0) | 2021.03.26 |