Company
교육 철학

Resource Updating(리소스 업데이트)

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 피드백 제공
실패 시 재시도 또는 대체 서버 제공