1. 개요 (Overview)
•
*리소스 업데이트(Resource Updating)**는 게임 실행 중 원격 서버에서 리소스를 확인(Check), 검증(Verify), 다운로드(Download), **적용(Apply)**하는 기능을 제공하는 서브시스템입니다.
이 기능 덕분에 전체 앱을 다시 배포하지 않고도 새로운 콘텐츠나 패치를 플레이어에게 제공할 수 있습니다.
주요 기능
•
버전 리스트 관리 (Version List Management)
•
리소스 검증 (Resource Verification)
•
리소스 확인 (Resource Checking)
•
리소스 다운로드 (Resource Downloading)
•
리소스 적용 (Resource Application)
2. 핵심 구성 요소 (Key Components)
구성요소 | 설명 |
VersionListProcessor | 원격, 읽기 전용, 읽기-쓰기 영역의 버전 리스트를 처리 |
ResourceChecker | 현재 리소스 상태를 점검하고 업데이트가 필요한 목록 생성 |
ResourceUpdater | 리소스를 다운로드하고 게임에 적용 |
Utility.Encryption | 해시 코드와 데이터 무결성 검증 |
DownloadManager | 원격 서버로부터 파일 다운로드 관리 |
FileSystemManager | 파일 시스템 단위의 리소스 저장/관리 |
Event System | 업데이트 진행 상황 및 완료 이벤트 발행 |
3. 버전 리스트 관리 (Version List Management)
버전 리스트에는 다음과 같은 정보가 포함됩니다.
•
리소스 이름, 파일 경로
•
버전 번호
•
크기
•
해시 코드
버전 리스트 종류:
1.
Remote Version List — 서버에서 내려받은 최신 정보
2.
Read-Only Version List — 읽기 전용 영역의 리소스 정보
3.
Read-Write Version List — 쓰기 가능한 영역의 리소스 정보
4. 리소스 확인 (Resource Checking)
리소스의 상태는 다음 중 하나가 될 수 있습니다.
•
StorageInReadOnly — 읽기 전용에 있고 최신
•
StorageInReadWrite — 읽기-쓰기 영역에 있고 최신
•
Update — 업데이트 필요
•
Unavailable — 없음
•
Disuse — 사용하지 않음
5. 리소스 업데이트 (Resource Updating)
업데이트 과정은 다음과 같습니다.
1.
CheckResources 호출 → 업데이트 필요 목록 생성
2.
UpdateResources 호출 → 개별 리소스 다운로드 시작
3.
다운로드 완료 시 무결성 검증
4.
리소스 적용
6. 리소스 다운로드 (Resource Download)
•
DownloadManager를 사용
•
다운로드 시 경로와 URL 기반으로 작업 생성
•
다운로드 완료 후 검증 및 적용
7. 리소스 적용 (Resource Application)
•
리소스 패키지에서 추출 후 지정된 파일 시스템에 저장
•
적용 시 압축 해제 및 해시 검증 포함
8. 데이터 구조 (Data Structures)
UpdateInfo
•
ResourceName, FileSystemName, LoadType
•
Length, HashCode, CompressedLength, CompressedHashCode
•
ResourcePath, Downloading, RetryCount
ApplyInfo
•
ResourceName, FileSystemName, LoadType
•
Offset, Length, HashCode, CompressedLength, CompressedHashCode
•
ResourcePath
9. 이벤트 (Events)
이벤트 | 설명 |
ResourceApplyStart | 리소스 적용 시작 |
ResourceApplySuccess | 리소스 적용 성공 |
ResourceApplyFailure | 리소스 적용 실패 |
ResourceApplyComplete | 패키지 내 모든 리소스 적용 완료 |
ResourceUpdateStart | 리소스 업데이트 시작 |
ResourceUpdateChanged | 진행률 변경 |
ResourceUpdateSuccess | 업데이트 성공 |
ResourceUpdateFailure | 업데이트 실패 |
ResourceUpdateComplete | 리소스 그룹 업데이트 완료 |
ResourceUpdateAllComplete | 모든 리소스 업데이트 완료 |
10. 사용 예시 (Usage)
// 리소스 체크
m_ResourceManager.CheckResources(false, OnCheckResourcesComplete);
// 업데이트
m_ResourceManager.UpdateResources(OnUpdateResourcesComplete);
m_ResourceManager.UpdateResources("Group1", OnUpdateResourcesComplete);
// 리소스 적용
m_ResourceManager.ApplyResources("ResourcePackage.dat", OnApplyResourcesComplete);
C#
복사
11. 그림 구조 예시
[Remote Server]
↓ (Version List Download)
[VersionListProcessor]
↓
[ResourceChecker] --- 상태 판별 ---> (Update / No Update)
↓
[ResourceUpdater]
↓ (DownloadManager)
↓ (검증/적용)
[FileSystemManager]
Plain Text
복사
•
리소스를 그룹별로 나눠서 효율적으로 업데이트
•
플레이 중에도 업데이트 가능하게 설계
•
대규모 업데이트는 리소스 패키지 방식 사용
•
이벤트 핸들러를 등록해 UI 피드백 제공
•
실패 시 재시도 또는 대체 서버 제공