GadeDash
데이터 시트는 게임 기획의 필수 요소이지만, 입력 값을 잘못 기입하는 실수로 인해 개발이 지연되거나 원인을 찾기 힘든 버그가 발생하는 경우가 종종 일어납니다. 이 프로젝트는 이러한 문제를 미연에 방지하기 위해 데이터 시트를 관리하고 검증할 수 있는 툴을 개발하는 것이 목적입니다.
기능
- 비교하기: 같은 이름의 다른 데이터 시트를 서로 비교해서 어디가 변경되었는지 확인
- 검증하기:
- 타입 체크: 정의된 타입과 다른 값이 입력되었거나 허용되는 범위를 벗어난 수치를 입력하였는지 체크
- 시트 관계에 따른 데이터 누락 체크: 연결된 시트에서 참조할 수 없는 값이 있는지 체크하는 기능
TODO
- 시트 관계도(ERD)
- 데이터 구조 정의 폼
- 데이터 변환: 서버와 클라이언트에서 읽어오기 편한 데이터로 변환하는 기능
- 데이터 암호화: 클라이언트를 쉽게 위변조하는 것을 방지하기 위한 기능
- 서버/클라이언트 코드 생성: 데이터 타입과 관계도를 이용하여 서버와 클라이언트에서 데이터를 읽어서 사용할 수 있는 코드를 자동으로 생성하는 기능
- 로컬라이제이션: 텍스트 데이터와 리소스를 언어별로 구분하는 기능
- 협업 기능: 여러 명이 동시에 데이터를 작업할 수 있는 기능
시트 작성 규칙
- 시트 이름: A-Z, a-z, 0-9, _
- 첫 글자는 알파벳이나 언더바로 시작해야 함
- 첫 글자가 #으로 시작할 경우 무시됨
- 1번 행. 주석: 실제 데이터로는 사용되지 않으나 데이터 작성에 참고할 수 있는 내용
- 2번 행. 데이터 이름: A-Z, a-z, 0-9, _
- 첫 글자는 알파벳이나 언더바로 시작해야 함
- 비어있거나 첫 글자가 #으로 시작할 경우 해당 열은 무시됨
3번 행. 데이터 타입:
타입 범위 사이즈 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 타입이 반드시 정의 되어야 함
- index의 경우 값이 유니크해야 함(같은 값을 2개 이상 사용할 수 없음)
- group_index의 경우 같은 값끼리 배열로 묶어서 사용 함
- ref({SHEET_NAME})은 해당 데이터가 SHEET_NAME이라는 시트를 참조한다는 의미
- 타입 이름 뒤에 “?”(Question mark)를 붙이면 NULL 값을 허용한다는 의미
- 타입 이름 뒤에 “!”(Exclamation mark)를 붙이면 유니크한 값으로 중복을 허용하지 않는다는 의미
- 한 시트에는 index 타입이 반드시 정의 되어야 함
4번 행. 참조 타입:
타입 참조 server 서버에서만 사용 (보안을 위해 클라이언트에 숨겨야 할 데이터) client 클라이언트에서만 사용 (서버에서 로드할 필요가 없는 데이터) both 서버, 클라이언트에서 모두 사용 - index 타입이 server이면 해당 시트는 서버에서만 사용하고 client이면 클라이언트에서만 사용함
- 무시되는 컬럼: 데이터 이름, 데이터 타입, 참조 타입이 생략된 경우 컬럼 값을 데이터로 사용하지 않음
- 모든 기본 데이터 타입은 대소문자를 구분하지 않음(열거형 값, 배열 타입, 연관 시트 이름 제외)