GadeDash

GadeDash

GadeDash - Game Design Data Sheet. 게임 개발에서 시트로 작성한 데이터를 쉽고 편리하게 검증하고 관리할 수 있는 도구.

Run

데이터 시트는 게임 기획의 필수 요소이지만, 입력 값을 잘못 기입하는 실수로 인해 개발이 지연되거나 원인을 찾기 힘든 버그가 발생하는 경우가 종종 일어납니다. 이 프로젝트는 이러한 문제를 미연에 방지하기 위해 데이터 시트를 관리하고 검증할 수 있는 툴을 개발하는 것이 목적입니다.

demo screenshot

기능

  • 비교하기: 같은 이름의 다른 데이터 시트를 서로 비교해서 어디가 변경되었는지 확인
  • 검증하기:
    • 타입 체크: 정의된 타입과 다른 값이 입력되었거나 허용되는 범위를 벗어난 수치를 입력하였는지 체크
    • 시트 관계에 따른 데이터 누락 체크: 연결된 시트에서 참조할 수 없는 값이 있는지 체크하는 기능

TODO

  • 시트 관계도(ERD)
  • 데이터 구조 정의 폼
  • 데이터 변환: 서버와 클라이언트에서 읽어오기 편한 데이터로 변환하는 기능
  • 데이터 암호화: 클라이언트를 쉽게 위변조하는 것을 방지하기 위한 기능
  • 서버/클라이언트 코드 생성: 데이터 타입과 관계도를 이용하여 서버와 클라이언트에서 데이터를 읽어서 사용할 수 있는 코드를 자동으로 생성하는 기능
  • 로컬라이제이션: 텍스트 데이터와 리소스를 언어별로 구분하는 기능
  • 협업 기능: 여러 명이 동시에 데이터를 작업할 수 있는 기능

시트 작성 규칙

  • 시트 이름: A-Z, a-z, 0-9, _
    • 첫 글자는 알파벳이나 언더바로 시작해야 함
    • 첫 글자가 #으로 시작할 경우 무시됨
  • 1번 행. 주석: 실제 데이터로는 사용되지 않으나 데이터 작성에 참고할 수 있는 내용
  • 2번 행. 데이터 이름: A-Z, a-z, 0-9, _
    • 첫 글자는 알파벳이나 언더바로 시작해야 함
    • 비어있거나 첫 글자가 #으로 시작할 경우 해당 열은 무시됨
  • 3번 행. 데이터 타입:

    타입범위사이즈
    index1 ~ 4,294,967,295부호 없는 4바이트 정수 - 해당 시트의 인덱스 키
    group_index1 ~ 4,294,967,295부호 없는 4바이트 정수 - 해당 시트의 인덱스 키가 같은 열끼리 배열로 묶어서 사용
    sbyte-128 ~ 127부호 있는 1바이트 정수
    byte0 ~ 255부호 없는 1바이트 정수
    short-32,768 ~ 32,767부호 있는 2바이트 정수
    ushort0 ~ 65,535부호 없는 2바이트 정수
    int-2,147,483,648 ~ 2,147,483,647부호 있는 4바이트 정수
    uint0 ~ 4,294,967,295부호 없는 4바이트 정수
    long-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807부호 있는 8바이트 정수
    ulong0 ~ 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바이트 소수
    booltrue / 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)를 붙이면 유니크한 값으로 중복을 허용하지 않는다는 의미
  • 4번 행. 참조 타입:

    타입참조
    server서버에서만 사용 (보안을 위해 클라이언트에 숨겨야 할 데이터)
    client클라이언트에서만 사용 (서버에서 로드할 필요가 없는 데이터)
    both서버, 클라이언트에서 모두 사용
    • index 타입이 server이면 해당 시트는 서버에서만 사용하고 client이면 클라이언트에서만 사용함
  • 무시되는 컬럼: 데이터 이름, 데이터 타입, 참조 타입이 생략된 경우 컬럼 값을 데이터로 사용하지 않음
  • 모든 기본 데이터 타입은 대소문자를 구분하지 않음(열거형 값, 배열 타입, 연관 시트 이름 제외)