Google Analytics로 게임 분석하기 2
이 글에서는 게임 내에서 발생하는 각종 사건을 어떻게 Google Analytics(이하 GA)에 매핑할 것인지를 설명한다.
개요는 Google Analytics로 게임 분석하기를 참고하기 바란다.
게임의 주요 요소에 URL 부여하기
어떤 시스템이건 해당 시스템이 어떤 목적으로 만들어졌는지 또 어떻게 작동하는지를 이해하고 그 결에 맞게(결을 거스르는 것이 아니라) 사용하면 적은 노력으로 최대한의 가치를 뽑아낼 수 있다.
GA는 애초에 웹 로그를 수집하고 분석하는 시스템으로 시작하였다. 따라서 어떻게 하면 게임 로그를 웹 로그 형태로 잘 바꿔서 GA 수집 API에 제공할 것인지를 잘 정하는 것이 가장 중요하다.
웹 로그란 사용자가 웹사이트를 이용하며 겪은 주요 상태 변화(state transition)들을 시간 순으로 기록한 것이라고 정의할 수 있다. 웹 브라우저에서 일어나는 가장 중요한 상태는 현재 페이지의 주소(URL)이고, 현재 페이지가 바뀌는 것이 가장 중요한 상태 변화이다. 웹 로그에는 시간의 흐름에 따른 URL 변경 이력들이 기록되어 있고, 이것이 가장 중요한 결이다.
따라서 게임 로그를 웹 로그에 대응시키기 위한 첫 단계는 플레이어 입장에서 봤을 때 게임의 주요 상태가 무엇인지 따져보고, 각 상태에 적절한 URL을 부여하는 것이다.
예를 들어 총 여러개의 스테이지로 구성된 퍼즐게임이고, 1) 각 스테이지 입장시 옵션을 선택하는 화면, 2) 플레이 중인 화면, 3) 스테이지 종료 화면(승/패)으로 구성된다면 아래와 같은 형식으로 URL을 부여할 수 있다:
/main
/stage001/options
/stage001/playing
/stage001/win
/stage001/lose
다음은 간략한 부연:
- 게임의 첫 화면에는
/main
이라는 주소를 부여하였다. stage1
이라고 쓰지 않고stage001
이라고 쓴 이유는 GA 인터페이스에서 URL로 정렬을 하였을 때stage1
->stage10
->stage2
와 같이 이상한 순서로 정렬되는 것을 방지하기 위한 트릭이다. GA 인터페이스 뿐 아니라 Reporting API를 활용하여 데이터를 Python이나 R에서 다루고자 할 때에도 유용하다.- 경로 구분자
/
를 사용하여 위계구조를 표현하고 있다. 이는 일반적인 웹 사이트에서 URL을 설계할 때 장려되는 방식이다. GA에서는/
문자를 기준으로 자동으로 URL을 묶어 주기 때문에(Behavior -> Content Drill-down) 대단히 유용하게 활용할 수 있다.
퍼즐 게임은 비교적 직관적으로 URL을 부여할 수 있는데, 다른 장르라면 어떨까? MMORPG, FPS, 레이싱 등의 장르라면? 무엇을 분석하고자 하는지, 게임의 특성이 어떠한지에 따라 다르겠지만 몇 가지 예시를 적어보겠다:
- MMORPG: 필드, 주요 NPC, 인던, 포탈 등에 URL을 부여할 수 있다. 필드가 넓다면
/field_a/01-14
등과 같이 특정 청크 단위로 좌표(x:1,y:14)를 지정하는 등의 트릭을 쓸 수 있을 것이다. - FPS:
/zombie/map03
과 같이 모드와 맵 등을 담으면 유용할 것. (좀비 모드, 3번 맵) - Racing: FPS와 유사하다. 단 추가적으로 각 lap에 대하여 URL을 부여하면 랩타임 등을 자동으로 계산할 수 있을테니
/item/map03/lap-2
와 같은 형식을 생각해볼 수 있겠다. (아이템전, 3번 맵, 두번째 랩)
그 밖에 상점이나 설정 화면 등에도 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
기준) 분석해준다.
이제 uid
와 cid
라는 개념 및 각각의 목적에 대해 알았으니 이를 게임과 어떻게 엮어서 활용할지를 고민하면 된다.
보통은 단순하게 사용자 ID의 해시값을 cid
에 대응하여 사용하면 별 문제가 없다.
다만 게임이 크로스 디바이스를 지원하고(Unity로 만들었다거나), 한 명의 사용자가 여러 디바이스에서 게임을 어떤 패턴으로 즐기는지 궁금하다면 각 디바이스에서 생성한 ID(iOS라면 identifierForVendor
, Android라면 Settings.Secure.ANDROID_ID
)를 cid
로, 사용자의 로그인 ID를 uid
로 사용하면 될 것이다.
한 명의 사용자가 여러 계정을 만들 수 있고, 각 계정에 캐릭터가 여러개 속하는 경우라면? 상황에 따라 다르겠으나, cid
와 uid
에 커스텀 차원(custom dimension)을 추가로 조합하여 사용하면 원하는 정보를 잘 기록할 수 있다.
어떤 분석이 가능한가
위와 같은 사항들을 고려하여 URL, uid
, cid
를 설계하여 GA의 Collecting API(Measurement Protocol)로 보내면 몇 시간 후부터 상당히 유용한 정보들을 볼 수 있게 된다. 다음은 몇 가지 예시:
- 사람들이 각 URL에 얼마나 오래 머무르는가 (Time on Page)
- 사람들의 주요 동선은 어떠한가 (Behavior Flow)
- 한 번 접속하면 얼마나 오래 게임을 플레이하나 (Time on Site)
- 최근 한 달 동안 이 게임에 1번, 5번, 10번 이상/이하로 접속한 사람이 몇 명인가 (# of Sessions)
- 최근 한 달 동안의 순 방문자는 명 명인가 (Unique Visitors)
- A 던전은 플레이했으나 B 던전은 플레이하지 않은 사람들이 몇 명인가, 이 사람들은 그렇지 않은 사람들과 어떻게 다르게 행동하는가 (Advanced Segmentation에서 Behavior 기준 세그먼트 설정)
- 어떤 맵이 가장 인기 있나 (Behavior -> All Pages 또는 Content Drill-down)
- 사람들이 게임을 가장 많이 그만두는 장소는 어디인가 (Top exit pages)
- 등등…
점수, 아이템, 난이도
다음 글인 Google Analytics로 게임 분석하기 3에서는 1) 실제 게임을 분석하는 사례, 2) 사용자 정의 이벤트, 사용자 정의 차원, 사용자 정의 지표 등을 활용하여 게임 모드(난이도 선택), 점수 기록, 플레이어 사망 원인 등 게임에 특화된 각종 정보들을 GA에 기록하고 분석하는 방법을 설명한다.