Начните работу с Firebase на C++

1. Обзор

В этой лаборатории кода вы узнаете, как интегрировать C++ Firebase Games SDK в пример игры для Android на примере Google Analytics. Вы сможете добавлять необходимые функции, интегрировать некоторую базовую аналитическую логику для измерения прогресса вашего игрока и делиться игрой с тестировщиками, чтобы получить раннюю обратную связь.

Прохождение

Если вы хотите пройти эту лабораторную работу вместе с авторами, посмотрите это видео:

Что вы узнаете

  • Как добавить Firebase в вашу игру на базе Android CMake.
  • Как выяснить, какие зависимости C++ и Gradle вам нужны.
  • Как регистрировать события Analytics.
  • Как отлаживать события аналитики.
  • Как поделиться своей игрой с помощью App Distribution.

Что вам понадобится

  • Android-студия
  • Пример кода
  • Тестовое устройство или эмулятор с сервисами Google Play.

2. Получите пример кода

Оформить заказ или загрузить с GitHub :

git clone https://github.com/FirebaseExtended/cmake-way-for-firebase.git

Загрузите Firebase SDK

МакОС/Линукс:

sh download.sh

Windows (из PowerShell):

./download.ps1

Вы также можете вручную загрузить SDK . В этом случае Firebase C++ SDK необходимо извлечь в /third_party так, чтобы в папке с именем firebase_cpp_sdk находился корневой файл CMakeLists.txt из Firebase SDK.

3. Запустите образец игры.

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

  1. Выберите «Файл» > «Создать» > «Импортировать проект» (или выберите «Импортировать проект» на заставке).
  2. Откройте папку proj.android/ , включенную в репозиторий.
  1. [Необязательно] Откройте proj.android/gradle.properties и исправьте PROP_APP_ABI . Вы можете удалить все, кроме целевой архитектуры, чтобы сократить время сборки. PROP_APP_ABI=x86 будет собран только для эмулятора PROP_APP_ABI=armeabi-v7a будет собран для большинства телефонов
  2. Нажмите кнопку «Отладка» fa7d6449514b13c3.png для создания и запуска игры. Для создания игрового движка Cocos2dx потребуется время.

4. Настройка консоли Firebase

  1. Создайте новый проект в консоли Firebase . 5d2552e8450338d3.png
  2. Дайте ему имя, например «Бегущий по мороженому».
  3. Включить аналитику 255468f27832bb18.png
  4. Добавьте или создайте учетную запись аналитики c7fa1b1004135be3.png
  5. Добавьте новое приложение для Android в свой проект 984b9f20cd590597.png
  6. Добавьте com.firebase.popsiclerunner в качестве имени вашего пакета.

fda079aab5b185d4.png

  1. Загрузите google-services.json и скопируйте его в proj.android/app 95aae8dd12033335.png
  1. Игнорируйте данные инструкции по добавлению Firebase SDK и нажмите «Далее».
  2. Вы можете нажать «Пропустить этот шаг», когда вас попросят проверить установку.

5. Добавьте Firebase в свою игру

Добавьте Firebase SDK в CMakeLists.txt.

Откройте корневой уровень CMakeLists.txt . Это должно иметь следующий код вверху

CMakeLists.txt

cmake_minimum_required(VERSION 3.6)

set(APP_NAME popsiclerunner)

project(${APP_NAME})

и добавьте следующие строки в конец этого файла CMakeLists.txt

CMakeLists.txt

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third_party/firebase_cpp_sdk)
target_link_libraries(${APP_NAME} firebase_analytics firebase_app)

add_subdirectory включает Firebase C++ SDK и делает его доступным для этой игры.

target_link_libraries Подключает игру с помощью библиотек Firebase C++, созданных для Android.

Добавьте плагин Google Services

Чтобы подключить Firebase SDK, вам необходимо добавить плагин Google Services в сценарий сборки Gradle. Для этого откройте файл build.gradle уровня проекта (он находится в папке proj.android ). И добавьте classpath 'com.google.gms:google-services:4.3.3' в качестве зависимости buildscript.

build.gradle

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:4.3.3'  // Google Services plugin
    }
}

Затем добавьте плагин в файл build.gradle уровня вашего модуля (он находится в папке proj.android/app ). Добавьте apply plugin: 'com.google.gms.google-services' под apply plugin: 'com.android.application' :

build.gradle

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'  // Google Services plugin

Найдите C++ SDK в Gradle.

Чтобы сообщить Gradle, где найти Firebase C++ SDK, добавьте следующие строки в конец файла settings.gradle .

настройки.gradle

gradle.ext.firebase_cpp_sdk_dir = "$settingsDir/../third_party/firebase_cpp_sdk/"
includeBuild "$gradle.ext.firebase_cpp_sdk_dir"

Добавьте зависимости Android

Чтобы подключить зависимости Android для Firebase, откройте файл Gradle уровня модуля для popsicle_runnerproj.android/app/build.gradle ) и добавьте следующее перед разделом типичных dependences { в конце:

build.gradle

apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
firebaseCpp.dependencies {
    analytics
}

AndroidX и Джетификатор

Добавьте поддержку AndroidX и Jetifier, открыв gradle.properties и добавив это в конец:

gradle.properties

android.useAndroidX = true
android.enableJetifier = true

Инициализируйте Firebase в своей игре

Инициализируйте Firebase в игре, открыв Classes/AppDelegate.cpp . Добавьте следующие директивы #include вверху:

AppDelegate.cpp

#include <firebase/app.h>
#include <firebase/analytics.h>

Затем добавьте App::Create и инициализируйте необходимые вам функции Firebase. Для этого найдите AppDelegate::applicationDidFinishLaunching и добавьте этот код перед auto scene = MainMenuScene::createScene() :

AppDelegate.cpp

{
    using namespace firebase;
    auto app = App::Create(JniHelper::getEnv(), JniHelper::getActivity());
    analytics::Initialize(*app);
}

Если вы отладите игру и обновите панель управления Firebase, примерно через минуту вы увидите, что появился один новый пользователь.

6. Добавьте аналитику

Даже на ранних этапах разработки аналитика является полезным инструментом для оценки того, как бета-тестеры взаимодействуют с игрой. Некоторые аналитические данные собираются автоматически, например отчеты об удержании, но полезно добавлять собственные события, адаптированные для вашей конкретной игры.

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

4b5df08c0f6b6938.png

Мы также зарегистрируем событие, когда игрок умрет, и укажем, насколько далеко он продвинулся. Это позволит нам увидеть, как изменения, которые мы вносим, ​​меняют продолжительность одной сессии, и поможет нам определить, хотят ли игроки более короткую/сложную игру или более длинную/более легкую.

Добавьте заголовки аналитики

Откройте Classes/PopsicleScene.cpp и добавьте заголовки Firebase вверху, чтобы мы могли выполнять аналитические вызовы.

PopsicleScene.cpp

#include <firebase/analytics.h>
#include <firebase/analytics/event_names.h>

Зарегистрируйте событие начала уровня

Чтобы зарегистрировать событие, когда эта сцена создается директором Cocos2dx, найдите заглушенную функцию PopsicleScene::onEnter() . Введите следующий код, чтобы зарегистрировать здесь событие начала уровня:

PopsicleScene.cpp

using namespace firebase;
analytics::LogEvent(analytics::kEventLevelStart);

Зарегистрируйте событие окончания уровня

Чтобы увидеть, насколько хорошо справляется игрок, давайте зарегистрируем событие окончания уровня и укажем, как далеко игрок продвинулся, когда наконец умер. Для этого найдите PopsicleScene::gameOver() и добавьте его в конец блока if(!_gameOver) { перед установкой _gameOver = true; :

PopsicleScene.cpp

{
    using namespace firebase;
    analytics::LogEvent(analytics::kEventLevelEnd, "distance", _lastDistance);
}

kEventLevelEnd — событие окончания уровня. Тогда как "distance" является «параметром события». Здесь мы добавляем последнее записанное расстояние, которое является хорошим приближением того, как далеко игрок прошел перед смертью.

7. Тестовые мероприятия

Вы можете нажать «Отладка» fa7d6449514b13c3.png сейчас, но для того, чтобы о любых событиях появилась информация на информационной панели Google Analytics, потребуется время. Для этого есть две причины: 1) события группируются и загружаются примерно раз в час для экономии заряда батареи и 2) отчеты создаются каждые 24 часа.

Включение режима отладки

События Analytics по-прежнему можно отлаживать, переведя устройство в режим отладки.

Сначала убедитесь, что у вас установлен и настроен Android Debug Bridge (ADB) . При вводе adb devices должно отображаться устройство, на котором вы собираетесь тестировать:

$ adb devices
List of devices attached
emulator-5554   device

Затем выполните следующую команду adb shell :

adb shell setprop debug.firebase.analytics.app com.firebase.popsiclerunner

Это сообщит Firebase Analytics немедленно регистрировать события и автоматически исключит их из ваших обычных отчетов, чтобы не загрязнять ваши текущие события при тестировании. Если вы хотите отменить это действие позже, просто напишите:

adb shell setprop debug.firebase.analytics.app .none.

Просмотр событий

Откройте «DebugView» в консоли Firebase. 84472ac3a7ad9aff.png

Нажмите «Отладка» fa7d6449514b13c3.png и поиграй в игру. Вы должны увидеть новые события, появляющиеся почти сразу после того, как они происходят в игре. 5e81dfa682497414.png

Если вы развернете событие level_end , вы также увидите записанный вами пользовательский параметр «расстояние». 4451be4a6a97399c.png

8. Поиск тестировщиков

Далее вам захочется увидеть вашу игру независимо от того, находятся ли они внутри вашей студии, среди близких друзей или в вашем сообществе. Распространение приложений Firebase дает вам отличный способ пригласить игроков поиграть в вашу игру.

Создание автономного двоичного файла

Сначала создайте отдельный APK, чтобы поделиться им, выбрав «Сборка» > «Сборка пакетов» / «APK(s)» > «Сборка APK» (ов). 14c6bd5549cdb57a.png

Android Studio откроет диалоговое окно, позволяющее найти построенный файл. Если вы его пропустили, вы можете нажать «Журнал событий», чтобы получить ссылку еще раз. ac730e3428689c4c.png

Загрузить в распространение приложений Firebase

  1. Откройте «Распространение приложений» и нажмите «Начать». dcdafea94e4c1c15.png
  2. Перетащите файл .apk в поле с надписью «Перетащите сюда любой .apk, чтобы создать новую версию». 4b6f94a05391c63f.png
  3. Введите свой адрес электронной почты в качестве первого тестера. ce047d710befa44a.png
  4. Нажмите Далее.
  5. Добавьте описание и нажмите «Распространить».

Пригласить тестировщиков

Вместо того, чтобы вручную вводить каждый адрес электронной почты, вы можете создать ссылку для приглашения. Когда вы захватываете пользователя с помощью этой ссылки-приглашения, вы также можете добавить его в группу тестировщиков. Это позволит вам, например, отделить внутренних тестировщиков от внешних.

  1. Нажмите «Тестеры и группы». 7e380773faff4eb7.png
  2. Создать новую группу 6b046c010b14adaf.png и дайте ему имя, например «Тестеры Android».
  3. Нажмите «Пригласить ссылки» a7fc2c8b01b6883e.png
  4. Нажмите «Новая ссылка для приглашения».
  5. Установите группу здесь из раскрывающегося списка. d1b289e825d93d40.png
  6. Нажмите «Создать ссылку»
  7. Нажмите «Копировать ссылку» и поделитесь ею, как пожелаете.

9. Поздравления

Вы успешно добавили аналитику в свою игру на C++, пригласили в нее друзей и знаете, как найти и связать библиотеки Firebase в системе сборки на основе CMake и Gradle, распространенной в разработке для Android.

Что мы рассмотрели

  • Как добавить Firebase в вашу игру на базе Android CMake.
  • Как выяснить, какие зависимости C++ и Gradle вам нужны.
  • Как регистрировать события Analytics.
  • Как отлаживать события аналитики.
  • Как поделиться своей игрой с помощью App Distribution.

Следующие шаги

  • Попробуйте войти в систему анонимно и сохранить его рекорд в базе данных реального времени.
  • Регистрируйте события аналитики в своей игре.
  • Попробуйте добавить аналитику в игру для iOS .

Узнать больше