Box and Whisker

Optimize the World

Google Analytics로 게임 분석하기 2

이 글에서는 게임 내에서 발생하는 각종 사건을 어떻게 Google Analytics(이하 GA)에 매핑할 것인지를 설명한다.

개요는 Google Analytics로 게임 분석하기를 참고하기 바란다.

게임의 주요 요소에 URL 부여하기

어떤 시스템이건 해당 시스템이 어떤 목적으로 만들어졌는지 또 어떻게 작동하는지를 이해하고 그 결에 맞게(결을 거스르는 것이 아니라) 사용하면 적은 노력으로 최대한의 가치를 뽑아낼 수 있다.

GA는 애초에 웹 로그를 수집하고 분석하는 시스템으로 시작하였다. 따라서 어떻게 하면 게임 로그를 웹 로그 형태로 잘 바꿔서 GA 수집 API에 제공할 것인지를 잘 정하는 것이 가장 중요하다.

웹 로그란 사용자가 웹사이트를 이용하며 겪은 주요 상태 변화(state transition)들을 시간 순으로 기록한 것이라고 정의할 수 있다. 웹 브라우저에서 일어나는 가장 중요한 상태는 현재 페이지의 주소(URL)이고, 현재 페이지가 바뀌는 것이 가장 중요한 상태 변화이다. 웹 로그에는 시간의 흐름에 따른 URL 변경 이력들이 기록되어 있고, 이것이 가장 중요한 결이다.

따라서 게임 로그를 웹 로그에 대응시키기 위한 첫 단계는 플레이어 입장에서 봤을 때 게임의 주요 상태가 무엇인지 따져보고, 각 상태에 적절한 URL을 부여하는 것이다.

예를 들어 총 여러개의 스테이지로 구성된 퍼즐게임이고, 1) 각 스테이지 입장시 옵션을 선택하는 화면, 2) 플레이 중인 화면, 3) 스테이지 종료 화면(승/패)으로 구성된다면 아래와 같은 형식으로 URL을 부여할 수 있다:

다음은 간략한 부연:

퍼즐 게임은 비교적 직관적으로 URL을 부여할 수 있는데, 다른 장르라면 어떨까? MMORPG, FPS, 레이싱 등의 장르라면? 무엇을 분석하고자 하는지, 게임의 특성이 어떠한지에 따라 다르겠지만 몇 가지 예시를 적어보겠다:

그 밖에 상점이나 설정 화면 등에도 URL을 부여할 수 있을텐데 이런 부분은 대체로 직관적이기 때문에 설명을 생략한다.

사용자와 클라이언트

URL을 부여하는 작업을 했으면 1) 언제, 2) 어떠한 상태 변화가 일어났는지를 기록할 준비가 된 것이다. 로그를 전송하는 시점이 언제에 해당하고, 각 로그에서 전송하는 URL이 어떠한 상태 변화인지를 알려준다.

그 다음에 정해야하는 것은 누가이다.

전통적인 웹 로그에서는 클라이언트의 IP 주소를 이용하여 “누가”를 기록했으나 이 방법은 동적 IP나 사실 IP 사용이 늘어나면서 더이상 사용자 식별에 접합하지 않게 되었다. 다만 물리적인 접속 지역을 추정하기 위한 정보로는 여전히 유용하다.

GA를 비롯한 대부분의 웹 로그 분석 시스템은 IP 대신 쿠키를 활용한다. GA에서는 이를 cid(Client ID의 줄임말)라고 부른다.

다만 쿠키라는 것은 특정 디바이스(컴퓨터나 휴대폰 등)의 특정 브라우저(사파리, 파이어폭스, 크롬, …)에 종속되는 것이라서 한 사용자가 세 개의 디바이스를 사용하고 각 디바이스에 평균 두 개의 브라우저가 있다면 해당 사용자에게는 최대 6개의 cid가 부여된다. 실제 사람은 한 명이지만 GA에서는 여섯 명의 서로 다른 사용자로 인식하게 된다는 뜻이다.

이 문제를 해결하기 위한 방편으로 2013년에 uid(User ID의 줄임말)라는 개념이 도입되었다. GA에서 자동으로 발급하는 cid와 달리 uid는 각 웹사이트 운영자가 발급하여 GA에 제공해야만 한다. 사용자가 로그인을 한 경우 사용자 ID를 해시하여 uid를 생성하여 이를 GA에 전송하면 GA에서 이를 인식하여 한 명의 사용자(uid 기준)가 몇 개의 장치 혹은 브라우저를 사용하는지(cid 기준) 분석해준다.

이제 uidcid라는 개념 및 각각의 목적에 대해 알았으니 이를 게임과 어떻게 엮어서 활용할지를 고민하면 된다.

보통은 단순하게 사용자 ID의 해시값을 cid에 대응하여 사용하면 별 문제가 없다.

다만 게임이 크로스 디바이스를 지원하고(Unity로 만들었다거나), 한 명의 사용자가 여러 디바이스에서 게임을 어떤 패턴으로 즐기는지 궁금하다면 각 디바이스에서 생성한 ID(iOS라면 identifierForVendor, Android라면 Settings.Secure.ANDROID_ID)를 cid로, 사용자의 로그인 ID를 uid로 사용하면 될 것이다.

한 명의 사용자가 여러 계정을 만들 수 있고, 각 계정에 캐릭터가 여러개 속하는 경우라면? 상황에 따라 다르겠으나, ciduid에 커스텀 차원(custom dimension)을 추가로 조합하여 사용하면 원하는 정보를 잘 기록할 수 있다.

어떤 분석이 가능한가

위와 같은 사항들을 고려하여 URL, uid, cid를 설계하여 GA의 Collecting API(Measurement Protocol)로 보내면 몇 시간 후부터 상당히 유용한 정보들을 볼 수 있게 된다. 다음은 몇 가지 예시:

점수, 아이템, 난이도

다음 글인 Google Analytics로 게임 분석하기 3에서는 1) 실제 게임을 분석하는 사례, 2) 사용자 정의 이벤트, 사용자 정의 차원, 사용자 정의 지표 등을 활용하여 게임 모드(난이도 선택), 점수 기록, 플레이어 사망 원인 등 게임에 특화된 각종 정보들을 GA에 기록하고 분석하는 방법을 설명한다.