- PVSM.RU - https://www.pvsm.ru -

Использование Google Analytics в играх

Во время разработки игры SUPERVERSE нам нужно было средство для отслеживания того, как игроки взаимодействуют с игрой, а также получения сведений о «железе», разрешении экрана, операционной системе и т.д. Эти данные могли пригодиться не только на этапе отладки, но и помогли бы изучить особенности поведения пользователей в игре.

Использование Google Analytics в играх - 1

Итак, нам нужно было выбрать один из трех возможных вариантов:

• разработать собственное решение для отслеживания данных на стороне игры, клиента и сервера;
• выбрать стороннее решение (например, GameAnalytics [1]);
• использовать уже зарекомендовавший себя сервис Google Analytics.

Мы посчитали, что на внедрение первых двух вариантов уйдет больше времени и средств, поэтому остановились на Google Analytics в качестве средства для отслеживания игровых событий и создания отчетов.

Использование Google Analytics в играх - 2

В последнее время Google Analytics активно используется разработчиками веб-сайтов и мобильных приложений. Но у создателей компьютерного ПО этот сервис не вызывает особого энтузиазма, поскольку не является удобным решением в виде SDK с возможностью полной интеграции в проект, как в случае с приложениями на iOS и Android.

Базовая настройка

Чтобы начать отслеживать игровые события, выполните несколько простых шагов:

• создайте аккаунт Google Analytics, если у вас еще его нет;
• настройте новый ресурс отслеживания (при этом вы получите идентификатор, который выглядит так: UA-12345678-2);
• начните использовать протокол передачи статистических данных (Measurement Protocol [2]), чтобы передавать обращения в Google Analytics по HTTP-протоколу.

Вот, собственно, и все.
Далее вы найдете пошаговое руководство по использованию сервиса Google Analytics в компьютерных играх.

Передача данных

Обмен данными в Google Analytics осуществляется посредством GET- и POST-запросов. Сервис поддерживает безопасную передачу данных по протоколу HTTPS, но для этого можно использовать и обычный HTTP. В этой статье мы, для простоты, будем использовать в качестве модели отправку POST-запросов по незащищенному HTTP-протоколу. Для мониторинга событий в игре мы использовали библиотеку libCURL [3], которая не только отлично справляется с передачей данных, но и подходит для решения других задач. С тем же успехом можно отправить POST-запрос по HTTP-протоколу, открыв TCP-сокет на порт 80.

void Send2GoogleAnalytics(char *postdata, char *useragent)
{
CURL *curl_handle = curl_easy_init();
if ( curl_handle ) {
curl_easy_setopt(curl_handle, CURLOPT_URL, «www.google-analytics.com/collect [4]»;);
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, useragent);
curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, postdata);

curl_easy_perform(curl_handle);

curl_easy_cleanup(curl_handle);
}
}

PostData

Переменная postdata должна указывать на строку, в которой содержится вся информация для отправки в Google Analytics.

Каждый запрос протокола передачи статистических данных должен содержать следующие значения:

Использование Google Analytics в играх - 3

*В дальнейшем API может меняться. Следите за изменениями в справочной документации протокола передачи статистических данных.

Итого, описание параметра postdata будет выглядеть следующим образом:


postdata="v=1&tid=UA-123456-1&cid=UUID&t=pageview&dp=%2FStart%20screen";

Идентификация пользователя (UUID)

Для того чтобы Google Analytics мог определить, что данные поступают от конкретного пользователя, в каждом HTTP-запросе должен быть указан идентификатора клиента. Этот параметр представляет собой универсальный уникальный идентификатор (uuid), который присваивается конкретному пользователю. После создания произвольного uuid его необходимо сохранить, чтобы использовать во время следующего запуска игры. Таким образом, Google Analytics сможет определить уникального пользователя, даже если он какое-то время не заходил в игру.

Версия игры и операционной системы (useragent)

Google Analytics отслеживает информацию о типе/версии браузера и операционной системы. Мы также можем использовать эту функцию, чтобы получить сведения о версии игры и ОС, на которой она запущена. При этом они будут прописаны в строке user-agent, например:


Superverse/0.3 (Windows NT 6.2)

Номер версии Windows можно узнать путем вызова функции GetVersionEx(). К примеру, “Windows NT 6.2” обозначает Windows 8.0.

Данные отслеживания

Настроив основные параметры, вы можете начать отслеживать интересующие вас статистические данные. Два самых базовых типа обращений – это pageview (просмотр страницы) и event (событие), но возможны и другие варианты: transaction (транзакция), timing (время), social (социальное взаимодействие), exception (исключение) и item (товар). Найти подробное описание всех типов обращений можно в справочном руководстве.

Сессия

Чтобы узнать, когда игрок зашел в игру и сколько времени провел в ней, нужно отследить данные о сессии. Для этого добавьте в строку postdata следующие команды:


sc=start

sc=end

Отслеживание сессий также можно использовать для подсчета времени, которое игрок провел в конкретном матче или уровне игры.

Частота отправки данных

Google определяет, как часто собранные данные отправляются обратно на сервер. Как правило, игровая статистика обновляется не чаще раза в две секунды. Кроме того, одна сессия предполагает не более 500 обращений, однако и этого обычно более чем достаточно для мониторинга событий в игре.

Вывод

Отслеживание событий – это простая асинхронная задача, не влияющая на другие компоненты игры.
Рекомендуется создать отдельный буфер, который будет заполняться запросами из основного потока игры всякий раз, когда вам понадобится отследить какие-либо данные. Кроме того, должен быть фоновой поток, обрабатывающий запросы из буфера и отправляющий их в Google Analytics. Подобная настройка работы сервиса гарантирует, что частота отправки не нарушает ограничения и квоты Google.

Автор: Plarium

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka/106235

Ссылки в тексте:

[1] GameAnalytics: http://www.gameanalytics.com/

[2] Measurement Protocol: https://developers.google.com/analytics/devguides/collection/protocol/v1/

[3] libCURL: http://curl.haxx.se/libcurl/

[4] www.google-analytics.com/collect: http://www.google-analytics.com/collect

[5] Источник: http://habrahabr.ru/post/273113/