Memulai Firebase di C++

1. Ringkasan

Dalam codelab ini, Anda akan mempelajari cara mengintegrasikan C++ Firebase Games SDK dalam contoh game Android menggunakan Google Analytics sebagai contoh. Anda dapat menambahkan fitur yang diperlukan, mengintegrasikan beberapa logika analisis dasar untuk mengukur progres pemain, dan membagikan game kepada penguji untuk mendapatkan masukan awal.

Panduan

Jika Anda ingin mempelajari codelab ini bersama penulis, tonton video ini:

Yang akan Anda pelajari

  • Cara menambahkan Firebase ke game berbasis CMake Android Anda.
  • Cara mengetahui dependensi C++ dan Gradle yang Anda butuhkan.
  • Cara mencatat peristiwa Analytics.
  • Cara men-debug peristiwa Analytics.
  • Cara membagikan game Anda dengan App Distribution.

Yang Anda butuhkan

  • Android Studio
  • Kode contoh
  • Perangkat uji atau emulator dengan Layanan Google Play

2. Mendapatkan kode contoh

Checkout atau Download dari GitHub:

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

Download Firebase SDK

MacOS/Linux:

sh download.sh

Windows (dari PowerShell):

./download.ps1

Anda juga dapat mendownload SDK secara manual. Jika Anda melakukannya, Firebase C++ SDK harus diekstrak ke /third_party sehingga folder bernama firebase_cpp_sdk memiliki root CMakeLists.txt dari Firebase SDK di dalamnya.

3. Menjalankan game contoh

Pertama, mainkan game contoh dan pastikan semuanya berfungsi. Game ini adalah game infinite runner sederhana dengan level yang dibuat secara prosedural dan satu tombol untuk melompat.

  1. Pilih File > New > Import Project (atau pilih Import Project dari layar pembuka)
  2. Buka folder proj.android/ yang disertakan dalam repositori
  1. [Opsional] Buka proj.android/gradle.properties dan temukan PROP_APP_ABI. Anda dapat menghapus semua arsitektur kecuali target untuk mengurangi waktu build. PROP_APP_ABI=x86 akan dibuat hanya untuk emulator PROP_APP_ABI=armeabi-v7a akan dibuat untuk sebagian besar ponsel
  2. Klik tombol Debug fa7d6449514b13c3.png untuk mem-build dan menjalankan game. Proses ini akan memerlukan waktu untuk membangun mesin game Cocos2dx.

4. Penyiapan Firebase Console

  1. Buat project baru di Firebase Console. 5d2552e8450338d3.png
  2. Beri nama seperti "Popsicle Runner"
  3. Mengaktifkan Analytics 255468f27832bb18.png
  4. Menambahkan atau membuat akun Analytics c7fa1b1004135be3.png
  5. Menambahkan aplikasi Android baru ke project Anda 984b9f20cd590597.png
  6. Tambahkan com.firebase.popsiclerunner sebagai nama paket Anda.

fda079aab5b185d4.png

  1. Download google-services.json dan salin ke proj.android/app 95aae8dd12033335.png
  1. Abaikan petunjuk yang diberikan untuk menambahkan Firebase SDK dan klik berikutnya
  2. Anda dapat mengklik "Lewati langkah ini" saat diminta untuk memverifikasi penginstalan Anda

5. Menambahkan Firebase ke game Anda

Tambahkan Firebase SDK ke CMakeLists.txt

Buka CMakeLists.txt tingkat root. Kode berikut harus ada di dekat bagian atas

CMakeLists.txt

cmake_minimum_required(VERSION 3.6)

set(APP_NAME popsiclerunner)

project(${APP_NAME})

dan tambahkan baris berikut ke bagian akhir file CMakeLists.txt tersebut

CMakeLists.txt

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

add_subdirectory menyertakan Firebase C++ SDK dan menyediakannya untuk game ini

target_link_libraries Menghubungkan game dengan library C++ Firebase yang dibuat untuk Android.

Menambahkan plugin Layanan Google

Untuk menghubungkan Firebase SDK, Anda harus menambahkan plugin Layanan Google ke skrip build gradle Anda. Untuk melakukannya, buka file build.gradle level project (berada di folder proj.android). Lalu, tambahkan classpath 'com.google.gms:google-services:4.3.3' sebagai dependensi 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
    }
}

Kemudian, tambahkan plugin ke file build.gradle tingkat modul (berada di folder proj.android/app). Tambahkan apply plugin: 'com.google.gms.google-services' di bawah apply plugin: 'com.android.application':

build.gradle

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

Menemukan C++ SDK di Gradle

Untuk memberi tahu Gradle tempat menemukan Firebase C++ SDK, tambahkan baris berikut ke bagian bawah file settings.gradle.

settings.gradle

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

Menambahkan dependensi Android

Untuk menghubungkan dependensi Android untuk Firebase, buka file gradle level modul untuk popsicle_runner (di proj.android/app/build.gradle) dan tambahkan kode berikut tepat sebelum bagian dependences { yang biasa di akhir:

build.gradle

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

AndroidX dan Jetifier

Tambahkan dukungan AndroidX dan Jetifier dengan membuka gradle.properties dan menambahkan ini di bagian akhir:

gradle.properties

android.useAndroidX = true
android.enableJetifier = true

Melakukan inisialisasi Firebase di game Anda

Lakukan inisialisasi Firebase di game dengan membuka Classes/AppDelegate.cpp. Tambahkan direktif #include berikut ke bagian atas:

AppDelegate.cpp

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

Kemudian, tambahkan App::Create dan inisialisasi fitur Firebase yang Anda butuhkan. Untuk melakukannya, temukan AppDelegate::applicationDidFinishLaunching dan tambahkan kode ini sebelum auto scene = MainMenuScene::createScene():

AppDelegate.cpp

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

Jika Anda men-debug game dan memuat ulang dasbor Firebase, Anda akan melihat satu pengguna baru muncul setelah sekitar satu menit.

6. Menambahkan Analytics

Bahkan di awal pengembangan, analisis adalah alat yang berguna untuk mengukur cara penguji beta berinteraksi dengan game. Ada beberapa analisis yang dikumpulkan secara otomatis – seperti laporan retensi – tetapi sebaiknya tambahkan peristiwa kustom yang disesuaikan untuk game spesifik Anda.

Titik awal yang baik adalah mencatat peristiwa analisis saat pemain memulai level. Kita dapat menggunakan jumlah peristiwa mulai level untuk melihat seberapa sering pemain mungkin memutar ulang game dalam satu sesi.

4b5df08c0f6b6938.png

Kami juga akan mencatat peristiwa saat pemain mati dan seberapa jauh mereka telah bermain. Dengan begitu, kita dapat melihat bagaimana perubahan yang kita lakukan mengubah durasi satu sesi dan akan membantu kita menentukan apakah pemain menginginkan game yang lebih singkat/sulit atau lebih panjang/mudah.

Menambahkan Header Analytics

Buka Classes/PopsicleScene.cpp dan tambahkan header Firebase di bagian atas agar kita dapat melakukan panggilan analytics.

PopsicleScene.cpp

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

Mencatat peristiwa Mulai Level

Untuk mencatat peristiwa saat Scene ini dipentaskan oleh Cocos2dx Director, temukan fungsi stub PopsicleScene::onEnter(). Masukkan kode berikut untuk mencatat peristiwa Mulai Level di sini:

PopsicleScene.cpp

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

Mencatat peristiwa Akhir Level

Untuk melihat seberapa baik performa pemain, mari catat peristiwa Akhir Level dengan seberapa jauh pemain mencapai level saat akhirnya mati. Untuk melakukannya, temukan PopsicleScene::gameOver(), dan tambahkan ini ke akhir blok if(!_gameOver) { sebelum menyetel _gameOver = true;:

PopsicleScene.cpp

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

kEventLevelEnd adalah peristiwa akhir level. Sedangkan "distance" adalah "parameter peristiwa". Kita menambahkan jarak terakhir yang tercatat di sini, yang merupakan perkiraan yang baik untuk seberapa jauh pemain berjalan sebelum mati.

7. Menguji Peristiwa

Anda dapat mengklik Debug fa7d6449514b13c3.png sekarang, tetapi perlu waktu agar peristiwa dilaporkan di dasbor Analytics. Ada dua alasan untuk hal ini: 1) peristiwa dikelompokkan dan diupload sekitar sekali per jam untuk menghemat baterai dan 2) laporan dibuat setiap 24 jam.

Mengaktifkan Mode Debug

Anda tetap dapat men-debug peristiwa Analytics dengan mengaktifkan mode debug di perangkat Anda.

Pertama, pastikan Anda telah menginstal dan menyiapkan Android Debug Bridge (ADB). Mengetik adb devices akan menampilkan perangkat yang akan Anda uji:

$ adb devices
List of devices attached
emulator-5554   device

Kemudian, jalankan perintah adb shell berikut:

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

Hal ini memberi tahu Firebase Analytics untuk mencatat peristiwa secara langsung, dan akan otomatis mengecualikannya dari laporan normal Anda untuk menghindari pencemaran peristiwa aktif saat pengujian. Jika Anda ingin mengurungkan tindakan ini nanti, cukup tulis:

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

Melihat Peristiwa

Buka "DebugView" di Firebase Console Anda 84472ac3a7ad9aff.png

Klik Debug fa7d6449514b13c3.png dan mainkan game. Anda akan melihat peristiwa baru muncul hampir segera setelah terjadi dalam game. 5e81dfa682497414.png

Jika meluaskan peristiwa level_end, Anda juga akan melihat parameter "jarak" kustom yang telah Anda catat. 4451be4a6a97399c.png

8. Menemukan penguji

Selanjutnya, Anda perlu melihat game Anda, baik dari dalam studio, di antara teman dekat, atau dari komunitas Anda. Firebase App Distribution memberi Anda cara yang efektif untuk mengundang pemain bermain game Anda.

Membangun Biner Mandiri

Pertama-tama, bangun APK mandiri untuk dibagikan dari Build > Build Bundles(s) / APK(s) > Build APK(s) 14c6bd5549cdb57a.png

Android Studio akan menampilkan kotak dialog yang memungkinkan Anda menemukan file yang dibuat. Jika Anda melewatkannya, Anda dapat mengklik "Log Peristiwa" untuk mendapatkan link lagi. ac730e3428689c4c.png

Mengupload ke Firebase App Distribution

  1. Buka App Distribution, lalu klik "Mulai" dcdafea94e4c1c15.png
  2. Tarik lalu lepas file .apk Anda ke dalam kotak yang bertuliskan "Tarik .apk ke sini untuk membuat rilis baru". 4b6f94a05391c63f.png
  3. Masukkan alamat email Anda sebagai penguji pertama. ce047d710befa44a.png
  4. Klik Berikutnya.
  5. Tambahkan deskripsi, lalu Klik Distribusikan

Mengundang Penguji

Daripada harus memasukkan setiap alamat email secara manual, Anda dapat membuat link undangan. Saat merekam pengguna dengan link undangan ini, Anda juga dapat menambahkannya ke grup penguji. Dengan begitu, Anda dapat memisahkan penguji internal dari penguji eksternal.

  1. Klik "Penguji & Grup" 7e380773faff4eb7.png
  2. Buat grup baru 6b046c010b14adaf.png, lalu beri nama seperti "Penguji Android".
  3. Klik "Link undangan" a7fc2c8b01b6883e.png
  4. Klik "Link undangan baru"
  5. Tetapkan grup di sini dari dropdown. d1b289e825d93d40.png
  6. Klik "Buat Link"
  7. Klik "Salin link" dan bagikan link tersebut sesuai keinginan Anda

9. Selamat

Anda telah berhasil menambahkan analisis ke game berbasis C++, mengundang beberapa teman untuk bermain, dan Anda tahu cara menemukan serta menautkan library Firebase dalam sistem build berbasis CMake dan Gradle yang umum dalam pengembangan Android.

Yang Telah Kita Bahas

  • Cara menambahkan Firebase ke game berbasis CMake Android Anda.
  • Cara mengetahui dependensi C++ dan Gradle yang Anda butuhkan.
  • Cara mencatat peristiwa Analytics.
  • Cara men-debug peristiwa Analytics.
  • Cara membagikan game Anda dengan App Distribution.

Langkah Berikutnya

  • Coba buat pengguna login secara anonim dan simpan skor tingginya di Realtime Database.
  • Mencatat peristiwa Analytics di game Anda sendiri.
  • Coba tambahkan analisis ke game iOS.

Pelajari Lebih Lanjut

  • Lihat daftar peristiwa khusus game dan pertimbangkan bagaimana peristiwa tersebut dapat sesuai dengan game Anda sendiri.