File System Module
File System 모듈은 플랫폼 파일 시스템 접근에 대한 내용을 추상화하여 제공합니다.
Module Common Information
Project: Modules/FileSystem
Namespace: Leggiero::FileSystem
Module Interfaces
(없음)
Components
Notes
FileSystemUtility.h 헤더를 통해, 별도의 초기화 과정이 필요 없는 파일 시스템 관련 유틸리티 API 함수들을 이용하실 수 있습니다.
Bundle File Resource Component
게임 어플리케이션에 동봉된 번들 리소스에 대한 접근을 추상화하는 컴퍼넌트입니다.
Type: Leggiero::FileSystem::BundleFileResourceComponent
Component Id: EngineComponentIdType::kBundleFileResource
(12)
Dependencies
(없음)
Overview
게임 어플리케이션에 동봉되어 앱 설치 시 함께 저장되는 번들 리소스에 대한 접근을 추상화합니다.
iOS와 Windows PC 플랫폼의 경우, 번들 리소스는 대상 플랫폼 상의 개별 파일로 존재합니다. 하지만, Android에서는 번들 리소스는 패키징 된 에셋 번들 파일 안에 함께 존재하므로, 번들 리소스를 실제 플랫폼 운영체제 상의 파일로 간주해서는 안 됩니다.
Leggiero에서는 번들 내의 경로에 해당하는 개별 리소스에 대해, 바이너리로 표현되는 내용을 읽을 수 있는 인터페이스를 제공합니다. 당연한 이야기지만, 번들 리소스는 앱의 일부이므로, 논리적으로 앱 실행 시에 쓰기 접근을 할 수는 없습니다.
Non-Portable Interface
iOS와 Windows PC 플랫폼에서는 각 번들 리소스는 실제 파일의 형태로 존재합니다. 최적화를 위해, portable 하지 않은 이런 가정에 의거한 접근 방식을, Leggiero::FileSystem::NPO::INonPortableOptimization_BundleFileResource
인터페이스를 통해 제공합니다.
유저는 컴퍼넌트에, 해당 최적화 요소가 동작하는지를 질의하여 지원 여부를 확인 후, 리소스에 대한 portable 하지 않은 방식의 접근을 수행할 수 있습니다.
Bundle Resource Packing
각 게임 프로젝트의 디렉터리 내의, Bundle 서브디렉터리 내의 내용이 번들 리소스로 앱에 동봉됩니다.
Leggiero는 플랫폼별로 최적화된 별도의 번들 리소스를 패키징 할 수 있는 매커니즘을 제공합니다. Bundle/Base 디렉터리 내의 리소스는 전 플랫폼의 앱에 공통적으로 패키징됩니다. 이때, Bundle/Base 디렉터리가 번들 된 파일 리소스의 가상 경로의 루트 디렉터리로 간주됩니다.
한편, Bundle/Platform 디렉터리 내의 각 플랫폼 디렉터리가, 플랫폼별로 서로 다르게 패키징 되는 리소스를 담을 수 있습니다. 이때, 각 플랫폼 디렉터리(가령 Bundle/Platform/iOS )가 번들 리소스 가상 경로의 루트 디렉터리에 매핑되며, 기본적으로는 Base 리소스 중 같은 가상 경로 상의 리소스를 override 하는 형태로 작동합니다. 단, Android 플랫폼에서는 리소스 overriding이 불가능하며, 동일 가상 경로 상에 서로 다른 리소스가 존재한다면 앱 빌드 과정에서 에러를 발생시킵니다.
File System Path Component
게임 어플리케이션에서 이용할 수 있도록 플랫폼에서 제공하는, 파일 시스템 상의 공간을 추상화하는 컴퍼넌트입니다.
Type: Leggiero::FileSystem::FileSystemPathComponent
Component Id: EngineComponentIdType::kFileSystemPath
(11)
Dependencies
(없음)
Overview
플랫폼에서 어플리케이션이 사용할 수 있는 용도로 제공하는 파일 시스템 상의 공간을, 특성과 용도별로 추상화하여 제공합니다. 아래와 같은 종류의 데이터 디렉터리를 제공합니다:
Name |
Volatility |
Cloud Backup |
---|---|---|
MainData |
X |
Yes |
RawData |
X |
No |
Cache |
cache |
No |
Temp |
temporary |
No |
iOS와 Android의 경우, iCloud와 Google Play를 통해 클라우드에 유저 데이터를 백업할 수 있는 기능을 제공합니다. MainData 경로 내의 파일들은 백업 대상이 되며, 보존되어야 하는 유저 데이터를 저장하는데 사용할 수 있습니다. 단, 클라우드 백업 가능한 데이터의 용량에는 제한이 있으므로, 전체 파일 크기에 신경을 써 주세요.
컴퍼넌트가 반환하는 경로는 C/C++ 라이브러리를 통해 접근 및 조작 가능한 실제 파일 시스템 상의 경로입니다.
Non-Portable Interface
Android 플랫폼에서는 SD 카드 등의 용량이 큰 외부 저장 공간을 사용할 수 있는 경우가 있습니다.
외부 저장소 영역에 대한 접근 기능은 Leggiero::FileSystem::NPO::INonPortableOptimization_BundleFileResource
인터페이스를 통해 제공합니다.