데이터 시트는 게임 기획의 필수 요소이지만, 입력 값을 잘못 기입하는 실수로 인해 개발이 지연되거나 원인을 찾기 힘든 버그가 발생하는 경우가 종종 일어납니다. 이 프로젝트는 이러한 문제를 미연에 방지하기 위해 데이터 시트를 관리하고 검증할 수 있는 툴을 개발하는 것이 목적입니다.
- 비교하기: 같은 이름의 다른 데이터 시트를 서로 비교해서 어디가 변경되었는지 확인
- 검증하기:
- 타입 체크: 정의된 타입과 다른 값이 입력되었거나 허용되는 범위를 벗어난 수치를 입력하였는지 체크
- 시트 관계에 따른 데이터 누락 체크: 연결된 시트에서 참조할 수 없는 값이 있는지 체크하는 기능
- 시트 관계도(ERD)
- 데이터 구조 정의 폼
- 데이터 변환: 서버와 클라이언트에서 읽어오기 편한 데이터로 변환하는 기능
- 데이터 암호화: 클라이언트를 쉽게 위변조하는 것을 방지하기 위한 기능
- 서버/클라이언트 코드 생성: 데이터 타입과 관계도를 이용하여 서버와 클라이언트에서 데이터를 읽어서 사용할 수 있는 코드를 자동으로 생성하는 기능
- 로컬라이제이션: 텍스트 데이터와 리소스를 언어별로 구분하는 기능
- 협업 기능: 여러 명이 동시에 데이터를 작업할 수 있는 기능
-
시트 이름: A-Z, a-z, 0-9, _
- 괄호로 묶인 것은 그룹으로 분류 함
- 첫 글자는 알파벳이나 언더바로 시작해야 함
- 첫 글자가 #으로 시작할 경우 무시됨
- ex. (Character)Player, (Character)Monster
-
1번 행. 데이터 이름: A-Z, a-z, 0-9, _
- 첫 글자는 알파벳이나 언더바로 시작해야 함
- 비어있거나 첫 글자가 #으로 시작할 경우 해당 열은 무시됨
- ex. id, name, value
-
2번 행. 참조/데이터 타입:
-
[]로 묶인 부분은 참조 타입
-
참조 타입 뒤가 데이터 타입
-
ex. [b]index, [c]enum(IDLE,ATTACK,WALK,RUN,HIT,DIE), [s]time
-
참조 타입
타입 참조 s 서버에서만 사용 (보안을 위해 클라이언트에 숨겨야 할 데이터) c 클라이언트에서만 사용 (서버에서 로드할 필요가 없는 데이터) b 서버, 클라이언트에서 모두 사용 index 타입이 [s]이면 해당 시트는 서버에서만 사용하고 [c]이면 클라이언트에서만 사용함
- 데이터 타입
타입 범위 사이즈 index 1 ~ 4,294,967,295 부호 없는 4바이트 정수 - 해당 시트의 인덱스 키 group_index 1 ~ 4,294,967,295 부호 없는 4바이트 정수 - 해당 시트의 인덱스 키가 같은 열끼리 배열로 묶어서 사용 sbyte -128 ~ 127 부호 있는 1바이트 정수 byte 0 ~ 255 부호 없는 1바이트 정수 short -32,768 ~ 32,767 부호 있는 2바이트 정수 ushort 0 ~ 65,535 부호 없는 2바이트 정수 int -2,147,483,648 ~ 2,147,483,647 부호 있는 4바이트 정수 uint 0 ~ 4,294,967,295 부호 없는 4바이트 정수 long -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 부호 있는 8바이트 정수 ulong 0 ~ 18,446,744,073,709,551,615 부호 없는 8바이트 정수 float ±1.5 x 10^−45 ~ ±3.4 x 10^38 부동 소수점 형식의 4바이트 소수 double ±5.0 × 10^−324 ~ ±1.7 × 10^308 부동 소수점 형식의 8바이트 소수 bool true / false 참 / 거짓 string 문자열 문자열 date 문자열 포멧: YYYY-MM-DD 문자열 - 날짜 time 문자열 포멧: HH:mm:ss 문자열 - 시간 datetime 문자열 포멧: YYYY-MM-DD HH:mm:ss 문자열 - 날짜 시간 enum({VALUE_1,...VALUE_n}) 지정한 값(VALUE_1,...VALUE_n)만 입력 가능한 열거형 타입 열거형 타입 - 지정된 값 array<{TYPE}> TYPE으로 지정한 배열 지정한 TYPE 크기의 컬럼 수 만큼 크기를 가짐 ref({SHEET_NAME}) 연관 시트의 index 값 범위로 참조 연관 시트에서 index의 타입 ref({SHEET_NAME}:group) 연관 시트의 group_index 값 범위로 참조 연관 시트에서 group_index의 타입 한 시트에는 index 타입이 반드시 1개만 정의 되어야 함
- index 타입 컬럼은 파싱 대상 컬럼 중 가장 먼저 정의 되어야 함
- index의 경우 값이 유니크해야 함(같은 값을 2개 이상 사용할 수 없음)
- group_index의 경우 같은 값끼리 배열로 묶어서 사용 함
ref({SHEET_NAME})은 해당 데이터가 SHEET_NAME이라는 시트를 참조한다는 의미
타입 이름 뒤에 "?"(Question mark)를 붙이면 NULL 값을 허용한다는 의미
타입 이름 뒤에 "!"(Exclamation mark)를 붙이면 유니크한 값으로 중복을 허용하지 않는다는 의미
모든 기본 데이터 타입은 대소문자를 구분하지 않음(열거형 값, 배열 타입, 연관 시트 이름 제외)
index 값이 비어 있거나 #으로 시작하는 행은 파싱 대상에서 제외함
-
-
무시되는 컬럼: 데이터 이름, 데이터 타입, 참조 타입이 생략된 경우 컬럼 값을 데이터로 사용하지 않음
