Итак, нам нужно было выбрать один из трех возможных вариантов:
• разработать собственное решение для отслеживания данных на стороне игры, клиента и сервера;
• выбрать стороннее решение (например, GameAnalytics);
• использовать уже зарекомендовавший себя сервис Google Analytics.
Мы посчитали, что на внедрение первых двух вариантов уйдет больше времени и средств, поэтому остановились на Google Analytics в качестве средства для отслеживания игровых событий и создания отчетов.
В последнее время Google Analytics активно используется разработчиками веб-сайтов и мобильных приложений. Но у создателей компьютерного ПО этот сервис не вызывает особого энтузиазма, поскольку не является удобным решением в виде SDK с возможностью полной интеграции в проект, как в случае с приложениями на iOS и Android.
Базовая настройка
Чтобы начать отслеживать игровые события, выполните несколько простых шагов:
• создайте аккаунт Google Analytics, если у вас еще его нет;
• настройте новый ресурс отслеживания (при этом вы получите идентификатор, который выглядит так: UA-12345678-2);
• начните использовать протокол передачи статистических данных (Measurement Protocol), чтобы передавать обращения в Google Analytics по HTTP-протоколу.
Вот, собственно, и все.
Далее вы найдете пошаговое руководство по использованию сервиса Google Analytics в компьютерных играх.
Передача данных
Обмен данными в Google Analytics осуществляется посредством GET- и POST-запросов. Сервис поддерживает безопасную передачу данных по протоколу HTTPS, но для этого можно использовать и обычный HTTP. В этой статье мы, для простоты, будем использовать в качестве модели отправку POST-запросов по незащищенному HTTP-протоколу. Для мониторинга событий в игре мы использовали библиотеку libCURL, которая не только отлично справляется с передачей данных, но и подходит для решения других задач. С тем же успехом можно отправить 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»;);
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.
Каждый запрос протокола передачи статистических данных должен содержать следующие значения:
*В дальнейшем 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.
Комментарии (6)
DevAndrew
14.12.2015 22:06Спасибо за статью. Может вы подскажете где можно посмотреть в GA идентификатор пользователя (UUID), который я отправляю (хочется глянуть сами значения)?
Frost47rus
14.12.2015 23:14+1Спасибо за статью. Хочется узнать, чем внедрение аналитики от Google отличается от аналога GameAnalytics. В статье вы сказали, что уйдёт больше времени. Это обусловлено тем, что под Google уже был написан код, а под GameAnalytics — нет?
IgorMats
15.12.2015 09:54Я вообще не понял смысл статьи. Все нормальные люди уже давно выбрали себе инструменты для аналитики если она нужна. А в остальном что? Какой-то кусок переведенного мануала.
gltrinix
15.12.2015 12:29+2Время идет, появляются новые люди, которые еще никаких инструментов выбрать не успели. Им и нужны такие статьи.
OlegKozlov
17.12.2015 09:48+1А какой инструмент для аналитики в десктоп-играх выбрали вы? Не подскажете куда поглядеть?
maaGames
Использовал GA в Android игре. Спасибо за пример использования в десктоп-приложении, теперь тожа смогу прикручивать.