brunch

You can make anything
by writing

C.S.Lewis

by 텐투플레이 Sep 14. 2020

게임 로그 시스템 설계 4단계

초심자를 위한 게임 로그 데이터 수집 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단계 - 로그 구조 확정



1단계 - 개체별로 분류


플레이어

캐릭터

재화

아이템

장비

스테이지


먼저 위과 같이 게임내 존재하는 개체들을 나열해서 분류해볼 수 있습니다. 데이터베이스 용어로는 엔티티라고 하는데요. 게임내 어떤 유형이나 무형의 개체들에 대해서 서로 의미적으로 구분을 할 수 있는 정보의 최소단위를 이야기합니다. 이 개체들 사이를 관계도로 그려보시는 것도 로그 설계에 도움이 될 수도 있습니다. 아래는 텐투플레이 개발 초기에 가상의 게임을 가지고서 개체 분류를 진행했던 관계도 입니다. 지금은 보다 더 복잡해졌습니다.




2단계 - 액션별로 분류


플레이어 회원가입, 로그인, 레벨업...

캐릭터 획득, 파괴, 경험치 획득, 레벨업, 랭크업..

재화 획득, 소모

아이템 획득, 소모, 파괴, 구입, 판매…

장비 장착, 해제, 판매, 분해, 업그레이드…

스테이지 진입, 승리, 패배


다음단계는 분류한 개체들에 대해 개체들이 취할 수 있는 행동이나 가질 수 있는 상태값, 개체들의 상호작용에 의해서 변화가 일어날 수 있는 부분들을 생각해서 분류를 나눠볼 수 있습니다. 예를 들어 플레이어라면 취할 수 있는 행동은 회원가입, 로그인, 레벨업, 그외에 아이템을 판매, 스테이지를 플레이하거나 하는 것도 플레이어가 선택적으로 취하는 행동 등이 있습니다. 재화의 경우엔, 재화를 획득하고 소모한 내역이 있고 재화의 총량이 꾸준히 변화를 할 것입니다. 




3단계-  중요도에 따라 데이터를 더하거나 빼기


캐릭터 경험치 / 레벨업 획득처 / 획득한 경험치 / 기존 경험치 / 획득 후 경험치 / 기존 레벨 / 획득 후 레벨

재화 획득또는 사용처 / 액수 / 기존 재화량 / 변동 후 재화량

스테이지 플레이 어떤 캐릭터를 데려갔는가 / 상대로 어떤 캐릭터가 나왔는가


이렇게 액션들을 나열하고 나면 그 다음에는 각 개체별로 좀 더 중요한 정보와 덜 중요한 정보가 무엇인지 고려하여 더하거나 빼는 작업을 하게 됩니다.


기본적으로 로그는 자세하게 남길수록 좋습니다. 그래야 나중에 문제가 생기거나 뭔가를 알고 싶을 때 추적할 수 있는 자료가 많아지기 때문입니다. 


하지만 그렇다고 모든 액션과 상세한 디테일을 기록하기에는 데이터베이스 서버 퍼포먼스 문제 등 여러 한계가 있습니다. 추후 사용 빈도가 높을 만한 데이터가 무엇일지, 없어도 되는 데이터가 무엇일지에 대해 로그 설계 과정에서 고민을 많이 해보시는 게 좋습니다. 예를 들어 스테이지 플레이 내역을 남길 때 적으로 누가 나왔는가, 몬스터 배치가 어떠했는가 등의 정보는 시나리오 모드라면 이미 개발자들은 다 알고 있습니다. 이런 것들은 굳이 로그에 남길 필요는 없겠죠. 반대로 스테이지에서 플레이어가 어떤 캐릭터를 데려갔는지 등은 변동이 있고 사용자가 어떤 캐릭터를 선호하고 어떤 캐릭터를 집중적으로 육성하는지 알 수 있기 때문에 더 자세하게 많이 기록해주는 편이 좋습니다. 




4단계 - 로그 구조 확정


이런식으로 데이터를 더하고 빼는 과정을 거치고 나면 대충 전체적인 로그의 전체적인 구조가 어느정도 그려집니다. 각 개체 위에 어떤 정보들을 더 자세하게 기록할 것인지에 대해서 구조가 확정이 되고 나면 아까 그 예제를 여기에 하나씩 적용해볼 수 있겠죠.


그럼 다음 편에서는 이렇게 만든 로그 구조에 예제를 적용하여 최적화를 해보겠습니다. 




다음편 읽기

초심자를 위한 게임 로그 데이터 수집 3  게임 로그 시스템 최적화하기

초심자를 위한 게임 로그 데이터 수집 4  좋은 게임 로그 시스템을 만들기 위해 알아야 할 3가지



투플레이의 다른 글 읽으러 가기




복잡하고 어려운 로그데이터 수집

텐투플레이 AI에게 맡겨 보세요.


텐투플레이 무료 체험 하기


#SDK만 설치하면 데이터 로깅 끝  

#세상에서 가장 쉬운 게임 유저 분석




작가의 이전글 게임 로그의 기본은 ‘육하원칙’

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari