유니티 애널리틱스
게임 제작하는 데 있어서, 게임을 만드는 것도 중요하지만
유저들이 플레이 정보를 수집하고 이를 통해 데이터를 분석하여 개선점을 찾아내는 것도 중요하다.
유저의 리뷰나 서면 피드백 등을 통해서 받는 것도 좋지만, 실제 플레이 하는 모든 유저들이 피드백을 남겨주는 것도 아니며, 글에 담기지 않는 플레이 할 때의 진행도/반복 행동들을 수집할 수 있다면, 눈에 잘 띄지 않는 단점들도 효과적으로 개선가능 하기 때문이다.
이를 위해 유니티는 직접 내부 시스템을 통해 간단하게 로그 데이터를 받아올 수 있도록 유니티 애널리틱스 기능을 제공한다.
게임 인사이트 및 분석 대시보드 소프트웨어 | Unity
플레이어에 대한 Unity의 심도 있는 데이터와 분석 정보를 활용하여 게임을 탐색하고, 파악하고 개선해 보세요. Unity Analytics로 시작해 보세요.
unity.com
위 기능은 Analytics 패키지를 받은 이후에 " using Unity.Services.Analytics; " 으로 스크립트 상의 구현이 가능해진다.
이를 통해 접근이 가능한 AnalyticsService 클라스는 여러 기능을 가지고 있지만, 직접적인 데이터 수집은 파라미터 이름과 파라미터 값을 가지는 CustomEvent 클래스 형식의 데이터를 "AnalyticsService.Instance.RecordEvent(eventData);" 를 통해서 유니티 서버상의 애널리틱스 서버에 데이터를 전송하는 방식으로 이루어진다.
public void LogUseCardInfo(int index)
{
CustomEvent eventData = new CustomEvent("PlayCardInfo");
eventData.Add("CardUsed", index);
AnalyticsService.Instance.RecordEvent(eventData);
}
예시로 위의 메서드에서는
1. CustomEvent의 매개변수에 PlayCardInfo 라는 이름의 Event 에서,
2. CardUsed 라는 파라미터값에 index 값으로서 저장하고,
3. 해당 정보를 RecordEvent 메서드로 애널리틱스 서버에 전송
하는 작업으로, 서버에서 분류가 가능한 데이터로 저장되는 것이다.
이때 주의할 점은, 코드상으로 데이터를 수집하기 전, 유니티 홈페이지의 애널리틱스 대시보드에서 EventName 와 해당 이벤트가 가질 파라미터 이름, 파라미터 형식(Type) 을 미리 등록해 두어야 Valid Events 로서 기록이 되며,
만약 등록을 하지 않은 상태로 플레이를 진행하면 Invalid Events 로서, 데이터 자체는 쌓이지만, 추후 데이터 분류 작업 시 확인이 불가능하기에, 사실상 수집한 데이터를 다 버리는 것이 된다.
만약 성공적으로 데이터를 Valide Events 로서 수집하게 된다면, 애널리틱스 대시보드의 커스텀 대시보드에서 수집한 데이터를 원하는 분류 기준으로 정렬하여 한눈에 확인이 가능하다.
이를 이용하여 플레이어들이 어느 구간에서 많이 게임 오버를 하는지, 어떠한 행동을 가장 많이 하는지, 등 사전에 이벤트와 파라미터를 등록하고 이를 코드상으로 구현만 한다면, 다양한 정보의 수집이 가능하게 된다.
실제로 우리 게임은 2주간의 테스트를 통해서 다양한 카드들이 5000번가량 사용된 것을 확인하였고, 카드 간의 선호도를 확인하여 어떠한 카드를 유저들이 많이 사용하는지 등의 데이터를 수집할 수 있었다.
만약 당신이 인디게임을 소규모로 제작 중이라고 하더라도, 이러한 데이터 수집 방식을 꼭 구현하여, 서면 피드백만으로는 확인할 수 없는, 플레이상의 세부 데이터들을 받아볼 수 있도록 만드는 것을 추천한다.