NineChronicles
NineChronicles copied to clipboard
Game data structure refactoring proposal
@Namyujeong 님과 논의했던 데이터 구조 변경 제안입니다.
Issue보드로 논의가 먼저 필요할 것 같아서 PR은 올리지 않았습니다. 데이터 구조는 https://github.com/YongHee-Kim/NineChronicles/tree/development/tables 에서 보실 수 있습니다.
제안 드리는 GameDataManager.jl대략적인 구조와 작업 흐름은 아래와 같습니다.
[1] 데이터 변환에 대한 모든 사항은 Config.json에 기입합니다
- XLSXasJSON의 모든 기능을 사용할 수 있습니다.
- Xlsx 파일명, 사용할 Sheet명, Output 파일명등을 자유자재로 지정할 수 있습니다.
[2] 기획자는 모든 데이터를 엑셀로 작업합니다. 데이터링크
- XLSX 데이터는 Git에 올려도 되는데, OneDrive나 GoogleDrive의 NetworkDrive 기능으로 작업하면 공동 작업에 훨씬 수월합니다.
- 메모나 주석등 엑셀의 모든 기능을 활용할 수 있습니다
- 행 전체(중간은 안되고 시작점을 밀 수 있음) 혹은 열 전체를 주석으로 사용할 수 있습니다. 또한 Config.json에서 정의 안된 시트는 추출이 되지 않기 때문에 필요한만큼 시트를 추가하여 밸런싱작업을 수행할 수 있습니다.

[3] 자동으로 Localize Key를 발급하고, 별도의 Localize 데이터를 뽑아줍니다.
- Config에서 localize에서 사용할 Key 컬럼값을 기입하면(비워두면 RowNumber 사용) 컬럼이 "$"로 시작하는 모든 데이터를 자동으로 Localize 해줍니다. 원본데이터 로컬라이즈데이터
[4] 기타 사항
- GameDataManager.jl의 기본적인 사용 방법은 아래와 같습니다.

# 1. Julia REPL을 엽니다. (VSCode 추천)
julia>using GameDataManager
julia>init_project("경로") # Config.json이 있는 위치
julia>xl() # 모든파일 추출
julia>xl("items") # Items.xlsx 만 출력
- GameDataMangaer는 메뉴얼과 자동화 테스트를 추가하여 JuliaHub에 등록할 예정입니다.
- lokalise등 유료서비스에서는 현재 구현된 기능처럼 {"UniqueKey": "value"} 쌍만 있으면 언어별 데이터 관리나 중복처리등을 해주는데, 만약 {"UniqueKey": {"kor": "value", "en": "value"} 하는식으로 국가별로 입력하는 기능이 필요하면 데이터 구조만 설계하면 기능을 추가 할 수 있습니다.
- CSV -> JSON 으로의 단계적 마이그레이션을 위해 Config.json에 "out" 확장자를 ".csv"로 입력하면 현재 사용하고 있는 .csv와 똑같은 모양으로 출력되는 기능을 추가할 수 있습니다.
- JSONPointer를 사용하기 때문에, Nested structure로 데이터의 가독성을 높이고 컬럼명을 깔끔하게 만들 수 있습니다. 적용예시
궁금하거나 나누고 싶은 이야기가 있으면 편히 말씀해주세요 감사합니다.