초심자를 위한 게임 로그 데이터 수집 2
* 본 내용은 텐투플레이 웨비나의 ‘게임 로그데이터 수집하기’를 요약 및 정리한 글입니다. 풀영상은 이곳에서 보실 수 있습니다.
초심자를 위한 게임 로그 데이터 수집 1 게임 로그의 기본은 ‘육하원칙’
지난 글에서는 로그를 구성하는 기본원칙, 육하원칙에 대해 알아보았습니다. 여기까지는 로그를 구축하는 게 어렵지 않고 간단해보이지만 실제로 로깅을 구현을 하다보면은 마냥 간단하지만은 않습니다. 게임을 하다보면 다음과 같이 스테이지 승리와 같은 하나의 행동에서 여러 상황이 파생됩니다. 이 복잡한 내용을 어떻게 로그로 남길 수 있을까요?
[예제]
플레이어 XXX가 캐릭터 AAA, BBB, CCC를 데리고
스테이지 1-10 센마이 평원 유적에 입장하면서 스태미나를 20 지불했고,
몬스터 고블린 전사 2마리, 고블린 대장 1마리와
자동전투 기능을 이용해서 3분 동안 싸운 끝에 승리,
스테이지 클리어 보상으로 1000 골드와 경험치 500을 획득했다.
이 때 얻은 경험치로 캐릭터 AAA의 레벨이 5에서 6으로 상승했다.
캐릭터의 레벨이 상승하면서 플레이어의 종합 레벨도 4에서 5로 상승했다.
[플레이어 종합 레벨 5 달성] 퀘스트 보상으로 20 다이아몬드를 획득했다.
그리고...
또...
이걸 육하원칙에 따라 쪼개서 하나로 기록하기에는 양이 너무 방대합니다. 그렇게 남긴다고 하더라도 나중에 해석하는데 문제가 생길 수 있습니다. 나중에 효율적 분석이 가능하도록 로그 단위나 로그의 용도 등에 대해 깊이 고려해서 로그를 설계할 필요가 있습니다.
게임마다 보유하고 있는 콘텐츠의 종류나 양도 다 다르고, 분석하는 입장에서 무엇을 중점적으로 보는지 다 다르기 때문에 설계에 정답은 없습니다. 하지만 일반적으로 적용해볼 만한 로그 시스템 설계 4단계를 설명해보겠습니다.
로그 시스템 설계 4단계
1단계 - 개체별로 분류
2단계 - 액션별로 분류
3단계- 중요도에 따라 데이터를 더하거나 빼기
4단계 - 로그 구조 확정
플레이어
캐릭터
재화
아이템
장비
스테이지
…
먼저 위과 같이 게임내 존재하는 개체들을 나열해서 분류해볼 수 있습니다. 데이터베이스 용어로는 엔티티라고 하는데요. 게임내 어떤 유형이나 무형의 개체들에 대해서 서로 의미적으로 구분을 할 수 있는 정보의 최소단위를 이야기합니다. 이 개체들 사이를 관계도로 그려보시는 것도 로그 설계에 도움이 될 수도 있습니다. 아래는 텐투플레이 개발 초기에 가상의 게임을 가지고서 개체 분류를 진행했던 관계도 입니다. 지금은 보다 더 복잡해졌습니다.
플레이어 회원가입, 로그인, 레벨업...
캐릭터 획득, 파괴, 경험치 획득, 레벨업, 랭크업..
재화 획득, 소모
아이템 획득, 소모, 파괴, 구입, 판매…
장비 장착, 해제, 판매, 분해, 업그레이드…
스테이지 진입, 승리, 패배
…
다음단계는 분류한 개체들에 대해 개체들이 취할 수 있는 행동이나 가질 수 있는 상태값, 개체들의 상호작용에 의해서 변화가 일어날 수 있는 부분들을 생각해서 분류를 나눠볼 수 있습니다. 예를 들어 플레이어라면 취할 수 있는 행동은 회원가입, 로그인, 레벨업, 그외에 아이템을 판매, 스테이지를 플레이하거나 하는 것도 플레이어가 선택적으로 취하는 행동 등이 있습니다. 재화의 경우엔, 재화를 획득하고 소모한 내역이 있고 재화의 총량이 꾸준히 변화를 할 것입니다.
캐릭터 경험치 / 레벨업 획득처 / 획득한 경험치 / 기존 경험치 / 획득 후 경험치 / 기존 레벨 / 획득 후 레벨
재화 획득또는 사용처 / 액수 / 기존 재화량 / 변동 후 재화량
스테이지 플레이 어떤 캐릭터를 데려갔는가 / 상대로 어떤 캐릭터가 나왔는가
이렇게 액션들을 나열하고 나면 그 다음에는 각 개체별로 좀 더 중요한 정보와 덜 중요한 정보가 무엇인지 고려하여 더하거나 빼는 작업을 하게 됩니다.
기본적으로 로그는 자세하게 남길수록 좋습니다. 그래야 나중에 문제가 생기거나 뭔가를 알고 싶을 때 추적할 수 있는 자료가 많아지기 때문입니다.
하지만 그렇다고 모든 액션과 상세한 디테일을 기록하기에는 데이터베이스 서버 퍼포먼스 문제 등 여러 한계가 있습니다. 추후 사용 빈도가 높을 만한 데이터가 무엇일지, 없어도 되는 데이터가 무엇일지에 대해 로그 설계 과정에서 고민을 많이 해보시는 게 좋습니다. 예를 들어 스테이지 플레이 내역을 남길 때 적으로 누가 나왔는가, 몬스터 배치가 어떠했는가 등의 정보는 시나리오 모드라면 이미 개발자들은 다 알고 있습니다. 이런 것들은 굳이 로그에 남길 필요는 없겠죠. 반대로 스테이지에서 플레이어가 어떤 캐릭터를 데려갔는지 등은 변동이 있고 사용자가 어떤 캐릭터를 선호하고 어떤 캐릭터를 집중적으로 육성하는지 알 수 있기 때문에 더 자세하게 많이 기록해주는 편이 좋습니다.
이런식으로 데이터를 더하고 빼는 과정을 거치고 나면 대충 전체적인 로그의 전체적인 구조가 어느정도 그려집니다. 각 개체 위에 어떤 정보들을 더 자세하게 기록할 것인지에 대해서 구조가 확정이 되고 나면 아까 그 예제를 여기에 하나씩 적용해볼 수 있겠죠.
그럼 다음 편에서는 이렇게 만든 로그 구조에 예제를 적용하여 최적화를 해보겠습니다.
초심자를 위한 게임 로그 데이터 수집 3 게임 로그 시스템 최적화하기
초심자를 위한 게임 로그 데이터 수집 4 좋은 게임 로그 시스템을 만들기 위해 알아야 할 3가지
#SDK만 설치하면 데이터 로깅 끝
#세상에서 가장 쉬운 게임 유저 분석