게임 데이터 관리
- ⭐ Game Programming
- 2021. 8. 12.
게임 데이터 관리
- 여러 프로젝트들을 경험 하면서 게임데이터를 관리했던 방법에 대해 기록해 두고자한다.
- 자세한 구현 방식보다는 데이터 관리하는 전체적인 구조에 대해 이야기 해보자.
0. 엑셀
이제껏 경험해온 모든 프로젝트는 데이터 관리를 엑셀로 하였다.
아무래도 기획자분들이 가장 다루기 편하고 보편적인 프로그램이 엑셀일 테니까
그리고 별도의 데이터 테이블 툴을 만들기엔 프로그래머의 유지보수가 들어가야되기 때문이 아닐까?
이제 엑셀 데이터를 어떤 포멧으로 추출하여 게임에서 읽어 들일 것인가가 중요하다.
1. Text File
Text 파일 포멧은 csv, xml, lua, json 등 여러 형태가 있다.
파일 포멧별로 저마다의 문법이 있고, 저마다의 장단점이 있겠지만,
결국, 어떤 파일 포멧이든 엑셀 데이터를 각 형태로 맞추어 추출해야한다.
경험했던 프로젝트들은 엑셀에서 Text 파일로 추출하기 위해
액셀 매크로(VBA)를 사용하여 추출하거나,
파이썬으로 엑셀 정보를 긁어와 Text파일로 추출하는 방식으로 하였다.
텍스트 파일 형태의 데이터 관리 장점은 텍스트 파일을 직접 열어
데이터를 눈으로 확인하기 쉽다는 점이다.
단점은 일반 유저들도 확인하기 쉽다는 점이다. (데이터 유출)
그래서 대부분의 게임들은 텍스트 파일 형태의 데이터를 사용하지 않는다.
2. DataBase
엑셀테이블의 데이터를 sql문으로 변경하여 DataBase에 입력하는 형태가 있었고,
일부 프로젝트에서는 자체툴을 이용해데이터 베이스안에서 데이터를 관리하는 형태도 있었다.
이형태의 장점은 게임 데이터를 클라이언트 파일 언팩을 통한 유출을 막을수 있다.
또한 자체툴을 이용해 여러 작업자가 동시에 데이터 관리가 가능하다는 점이다.
다른사람이 작업한 데이터가 바로바로 DataBase에 적용되기 때문이다
그러나 단점은 모든 데이터를 서버로부터 받아야한다. 패킷량이 많아지는 구조가 될 수 있다.
3. Binary File
가장 일반적인 형태이지 않을까?
개발단계에서는 TextFile로 읽어들이다가 직렬화(Serialization)을 통해 Binary File로 저장하고
서비스버전에서는 Binary File을 읽는 형태으로 사용된다.
장점은 역시 빠르고 보완이 뛰어나다는 점이다.
단점은 구조변경시 버전이 맞지 않는 파일을 Deserialization 하게되면 크래시가 발생할 수 있다.
그래서 항상구조에 맞는 파일을 읽어들일수 있도록 데이터 파일을 바로바로 업데이트 해줘야한다.