데이터에 목마른 데이터쟁이.. 민지님의 이야기로 이 서사는 시작합니다. 바로 마인크래프트
마인크래프트란?
•
여러 유저가 합심해서 노는 생존 게임입니다.
•
다양한 모드/플러그인으로 확장성이 높은 게임으로, 지인들끼리 플레이하기도 하지만 사설 서버를 이용하여 온라인으로 놀 수 도 있습니다.
•
현재 우리 4_게임채널에서 열어서 약 한 달동안 게임을 즐겼고, 지정수님이 무료 GCP에 태워서 운영하고 있습니다.
마인크래프트는 어떤 데이터가 있을까?
마인크래프트 디렉토리 구조
minecraft_server/
| └─world/ : 지형정보 등
│ └─ advancements/: 플레이어 업적 기록
| └─data/
│ └─playerdata/
│ └─poi/
│ └─region/
│ └─stats/ : 플레이 개별 통계
│ └─level.dat
│ └─logs/ : 서버에서 집계하는 로그
Plain Text
복사
1. Log데이터
먼저 Log데이터입니다. 흔히 서버가 운영되는 모든 로그가 저장됩니다. 최신 로그는 latest.log에 있으며 시간이 지남에 따라 각 날짜의 버전으로 데이터가 압축되어 저장됩니다.
접속하는 로그가 뜬 모습
[02:28:54] [Server thread/INFO]: <hojongs> ?!
[02:45:00] [Server thread/INFO]: <bossminji> 우와
[12:19:23] [Server thread/INFO]: <integerji> g2g2
[12:19:31] [Server thread/INFO]: <integerji> integerji
[12:31:52] [Server thread/INFO]: <integerji> G2G2
[12:31:54] [Server thread/INFO]: <integerji> ㅎ2ㅎ2
[12:53:50] [Server thread/INFO]: <integerji> integerji
[14:24:45] [Server thread/INFO]: <bellepoque7> 하잇
[14:25:01] [Server thread/INFO]: <bellepoque7> 아리가또
[14:25:09] [Server thread/INFO]: <integerji> 오
[14:25:13] [Server thread/INFO]: <bellepoque7> 이름어캐ㅂ바까용
[14:25:18] [Server thread/INFO]: <integerji> 저두 마크 초보라 잘 모르곘어요
[14:25:24] [Server thread/INFO]: <integerji> 방금 채팅 치는거 알았어요
[14:25:27] [Server thread/INFO]: <bellepoque7> ㅋㅋㅋㅋ
[14:25:32] [Server thread/INFO]: <bellepoque7> 마이크안되나이거
[14:25:33] [Server thread/INFO]: <integerji> 디코 되면 고고
[14:25:45] [Server thread/INFO]: <integerji> 따라오세요 집으로
[14:26:23] [Server thread/INFO]: <bellepoque7> 디코갈게욤
[14:45:34] [Server thread/INFO]: <integerji> -
[16:22:22] [Server thread/INFO]: <integerji> 자ㅣㄹ자요
[16:22:24] [Server thread/INFO]: <integerji> 잘자요
[16:22:34] [Server thread/INFO]: <gogogonini> 잘자여
[17:54:08] [Server thread/INFO]: <integerji> g2g2
Plain Text
복사
•
재밌는건 이 로그에 인게임 내 채팅도 저장되기 때문에 데이터를 뜯어서 “요약”할 수 있겠다는 생각이 들었습니다.
•
Day1 가 지나갈수록 로그가 매우 길어졌는데, LLM의 context Lenght로 처음의 개요를 인식하지 못하고 날이 갈수록 창의적이게 대답하는 모습
2. 통계데이터
•
stats라는 파일로 데이터가 쌓여있습니다. 이는 Snapshot으로 JSON형태로 저장하는데 이를 가공하여 다음과 같이 만들었습니다.
3. 나가며
개인적으로 데이터가 없던 차에 아예 서버를 운영하면서 데이터를 보자라는 목적을 달성해서 재밌었습니다. 하지만 운영하면서 시계열 데이터를 수집하기 위해 cron같은 걸로 데이터 저장을 batch processing을 못한게 아쉬웠습니다. 그래서 시즌1 제대로 시작해볼껍니당 오늘부터 