개요
GameFramework의 데이터 시스템(Data Systems)은 게임 데이터, 설정, 구성 등을 관리하기 위한 강력한 메커니즘을 제공합니다.
이 컴포넌트는 다섯 가지 주요 데이터 관리 하위 시스템으로 구성되며, 각각 게임 데이터의 저장, 접근, 조직화, 지속성을 담당합니다.
다섯 가지 주요 매니저
1.
DataTableManager – 고유 식별자를 가진 행(Row) 단위의 구조화된 데이터 테이블 관리
2.
LocalizationManager – 다국어 텍스트 콘텐츠 관리(키-값 딕셔너리 기반)
3.
ConfigManager – 키-값 기반 게임 설정 값 접근
4.
SettingManager – 사용자 설정 값 저장/로드
5.
DataNodeManager – 계층적 트리 구조의 데이터 노드 관리
공통 패턴
각 시스템은 다른 데이터 타입을 처리하지만 다음과 같은 공통 아키텍처 패턴을 공유합니다.
•
모든 매니저는 GameFrameworkModule을 상속
•
데이터 로드를 위한 DataProvider 패턴 사용
•
플랫폼별 구현을 위한 Helper 인터페이스 활용
•
효율적인 조회를 위한 딕셔너리(Dictionary) 기반 저장
•
타입 안전성(Type-safe) 있는 데이터 접근 메서드 제공
시스템별 상세 설명
1. DataTable System
구조화된 타입 안전 데이터 저장소를 제공하며, 캐릭터 스탯, 아이템 속성, 레벨 설정 등에 주로 사용됩니다.
특징
•
제네릭을 통한 강력한 타입 안전성
•
ID 기반 빠른 데이터 조회
•
행(Row) 필터링, 검색, 정렬 지원
•
문자열/바이너리/리소스에서 데이터 로드 가능
사용 예시
1.
IDataRow 인터페이스를 구현하는 클래스 생성
2.
DataTableManager.CreateDataTable<T>()로 테이블 생성
3.
ParseData 또는 리소스 시스템을 통해 데이터 로드
4.
ID나 조건식으로 행 검색
2. Localization System
다국어 지원을 위해 문자열 딕셔너리를 관리하는 시스템입니다.
특징
•
다중 언어 지원
•
키 기반 문자열 검색
•
플레이스홀더 기반 문자열 포맷팅
•
리소스 시스템과 연계하여 언어 데이터 로드
사용 예시
1.
LocalizationManager.Language로 현재 언어 설정
2.
ReadData로 언어 데이터 로드
3.
GetString으로 번역된 문자열 가져오기
3. Configure System
게임 전역 설정을 키-값 형태로 제공하며, 주로 정적 게임 설정에 사용됩니다.
특징
•
Key-Value 기반 설정 저장
•
bool, int, float, string 등 다양한 타입 지원
•
런타임 수정 가능
•
리소스 시스템과 연동 가능
사용 예시
1.
ReadData로 설정 데이터 로드
2.
HasConfig로 특정 키 존재 여부 확인
3.
Get<Type> 메서드로 값 조회
4.
필요 시 런타임 수정
4. Settings System\
사용자 설정 값을 세션 간 유지하기 위해 설계된 시스템입니다.
특징
•
영구적(파일/플랫폼별) 저장
•
bool, int, float, string, object 타입 지원
•
저장/불러오기 기능 제공
•
Helper를 통한 플랫폼 독립 구현
사용 예시
1.
SetSettingHelper로 플랫폼별 헬퍼 지정
2.
Load로 기존 설정 불러오기
3.
Getter/Setter로 값 조회 및 변경
4.
Save로 변경 사항 저장
5. DataNode System
계층적 트리 구조를 기반으로 데이터를 관리합니다.
특징
•
부모-자식 관계의 트리형 구조
•
경로 기반 노드 접근
•
Variable 시스템을 통한 다양한 데이터 타입 지원
•
동적 노드 생성 및 삭제 가능
사용 예시
1.
GetOrAddNode("Root/Child")로 노드 접근 또는 생성
2.
SetData로 값 설정
3.
GetData로 값 읽기
리소스 시스템 연동
•
SettingManager를 제외한 모든 데이터 시스템은 리소스 시스템과 연계됩니다.
•
데이터 로딩 과정:
1.
SetResourceManager로 리소스 매니저 지정
2.
ReadData(AssetName) 호출
3.
비동기 로드 → 데이터 파싱
4.
로드 성공/실패/진행 상황을 이벤트로 알림
데이터 시스템 비교표
시스템 | 주요 용도 | 구조 | 지속성 | 타입 안전성 | 리소스 연동 |
DataTable | 게임 데이터(아이템, 캐릭터) | 타입 지정 테이블 | 읽기 전용(대개) | 강함(제네릭) | O |
Localization | 다국어 텍스트 | Key-Value | 읽기 전용(대개) | 문자열 기반 | O |
Config | 전역 게임 설정 | Key-Value | 읽기/런타임 | 기본 타입 | O |
Setting | 사용자 설정 | Key-Value | 영구 저장 | 기본+객체 직렬화 | X |
DataNode | 계층적 동적 데이터 | 트리 구조 | 메모리 상 | Variable 기반 | X |