با Firebase در C++

1. بررسی اجمالی

در این کد لبه، نحوه ادغام C++ Firebase Games SDK را در یک بازی اندروید نمونه با استفاده از Google Analytics به عنوان مثال خواهید آموخت. می‌توانید ویژگی‌های مورد نیاز خود را اضافه کنید، برخی از منطق اصلی تجزیه و تحلیل را برای اندازه‌گیری پیشرفت بازیکن خود ادغام کنید، و بازی را با آزمایش‌کنندگان به اشتراک بگذارید تا بازخورد اولیه را دریافت کنید.

قدم زدن

اگر می‌خواهید با نویسندگان از طریق این نرم‌افزار عبور کنید، این ویدیو را تماشا کنید:

چیزی که یاد خواهید گرفت

  • چگونه Firebase را به بازی مبتنی بر Android CMake خود اضافه کنید.
  • چگونه بفهمیم به کدام وابستگی های C++ و Gradle نیاز دارید.
  • نحوه ثبت رویدادهای Analytics
  • نحوه اشکال زدایی رویدادهای تجزیه و تحلیل
  • چگونه بازی خود را با App Distribution به اشتراک بگذارید.

آنچه شما نیاز دارید

  • اندروید استودیو
  • کد نمونه
  • یک دستگاه آزمایشی یا شبیه ساز با خدمات Google Play

2. کد نمونه را دریافت کنید

پرداخت یا دانلود از GitHub :

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

Firebase SDK را دانلود کنید

MacOS/Linux:

sh download.sh

ویندوز (از PowerShell):

./download.ps1

همچنین می توانید SDK را به صورت دستی دانلود کنید . اگر این کار را انجام دهید، Firebase C++ SDK باید در /third_party استخراج شود تا پوشه ای به نام firebase_cpp_sdk دارای ریشه CMakeLists.txt از Firebase SDK در آن باشد.

3. نمونه بازی را اجرا کنید

ابتدا نمونه بازی را انجام دهید و مطمئن شوید که همه چیز کار می کند. این یک دونده بی نهایت ساده با یک سطح تولید شده رویه و یک دکمه برای پرش است.

  1. File > New > Import Project را انتخاب کنید (یا Import Project را از صفحه اسپلش انتخاب کنید)
  2. پوشه proj.android/ موجود در مخزن را باز کنید
  1. [اختیاری] proj.android/gradle.properties و PROP_APP_ABI را باز کنید. برای کاهش زمان ساخت، ممکن است تمام معماری هدف خود را حذف کنید. PROP_APP_ABI=x86 فقط برای شبیه ساز ساخته می شود PROP_APP_ABI=armeabi-v7a برای اکثر گوشی ها ساخته می شود
  2. روی دکمه Debug کلیک کنید fa7d6449514b13c3.png برای ساخت و اجرای بازی ساخت موتور بازی Cocos2dx به زمان نیاز دارد.

4. راه اندازی کنسول Firebase

  1. یک پروژه جدید در کنسول Firebase ایجاد کنید. 5d2552e8450338d3.png
  2. اسمی مثل «دونده ی قیچی» بگذار
  3. Analytics را فعال کنید 255468f27832bb18.png
  4. یک حساب تجزیه و تحلیل اضافه یا ایجاد کنید c7fa1b1004135be3.png
  5. یک برنامه اندروید جدید به پروژه خود اضافه کنید 984b9f20cd590597.png
  6. com.firebase.popsiclerunner را به عنوان نام بسته خود اضافه کنید.

fda079aab5b185d4.png

  1. google-services.json را دانلود کرده و در proj.android/app کپی کنید 95aae8dd12033335.png
  1. دستورالعمل های داده شده برای افزودن Firebase SDK را نادیده بگیرید و روی next کلیک کنید
  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 بازی را با کتابخانه های C++ Firebase که برای اندروید ساخته شده است، متصل می کند.

افزونه خدمات گوگل را اضافه کنید

برای اتصال 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 اضافه کنید.

settings.gradle

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

وابستگی های اندروید را اضافه کنید

برای اتصال وابستگی‌های اندروید به Firebase، فایل gradle سطح ماژول را برای popsicle_runner (در proj.android/app/build.gradle ) باز کنید و موارد زیر را درست قبل از بخش dependences { در پایان اضافه کنید:

build.gradle

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

AndroidX و Jetifier

با باز کردن gradle.properties و افزودن این مورد به انتها، پشتیبانی AndroidX و Jetifier را اضافه کنید:

gradle.properties

android.useAndroidX = true
android.enableJetifier = true

Firebase را در بازی خود راه اندازی کنید

با باز کردن Classes/AppDelegate.cpp Firebase را در بازی راه‌اندازی کنید. دستورات #include زیر را به بالا اضافه کنید:

AppDelegate.cpp

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

سپس App::Create و مقداردهی اولیه کنید. برای انجام این کار، AppDelegate::applicationDidFinishLaunching پیدا کنید و این کد را قبل از auto scene = MainMenuScene::createScene() :

AppDelegate.cpp

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

اگر بازی را اشکال زدایی کنید و داشبورد Firebase را رفرش کنید، باید بعد از یک دقیقه یا بیشتر شاهد ظاهر شدن یک کاربر جدید باشید.

6. Analytics را اضافه کنید

حتی در اوایل توسعه، تجزیه و تحلیل ابزار مفیدی برای سنجش نحوه تعامل آزمایش‌کنندگان بتا با بازی است. برخی از تجزیه و تحلیل ها وجود دارند که به طور خودکار جمع آوری می شوند - مانند گزارش های حفظ - اما اضافه کردن رویدادهای سفارشی متناسب با بازی خاص شما مفید است.

یک نقطه شروع خوب ثبت یک رویداد تجزیه و تحلیل زمانی است که بازیکن یک سطح را شروع می کند. می‌توانیم از تعداد رویدادهای شروع سطح استفاده کنیم تا ببینیم یک بازیکن چقدر ممکن است بازی را در یک جلسه تکرار کند.

4b5df08c0f6b6938.png

همچنین زمانی که بازیکن می‌میرد، رویدادی را با توجه به اینکه چقدر پیش رفته است ثبت می‌کنیم. این به ما اجازه می‌دهد تا ببینیم که چگونه تغییراتی که ایجاد می‌کنیم، مدت زمان یک جلسه را تغییر می‌دهد و به ما کمک می‌کند تا تعیین کنیم که آیا بازیکنان یک بازی کوتاه‌تر/سخت‌تر می‌خواهند یا طولانی‌تر/آسان‌تر.

هدرهای تحلیلی را اضافه کنید

Classes/PopsicleScene.cpp را باز کنید و هدرهای Firebase را به بالا اضافه کنید تا بتوانیم تماس های تحلیلی برقرار کنیم.

PopsicleScene.cpp

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

یک رویداد Level Start را ثبت کنید

برای ثبت یک رویداد زمانی که این صحنه توسط کارگردان Cocos2dx اجرا می شود، تابع stubbed PopsicleScene::onEnter() پیدا کنید. کد زیر را برای ثبت رویداد Level Start در اینجا وارد کنید:

PopsicleScene.cpp

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

یک رویداد Level End را ثبت کنید

برای اینکه ببینیم یک بازیکن چقدر خوب کار می‌کند، اجازه دهید یک رویداد Level End را ثبت کنیم که نشان می‌دهد بازیکن در نهایت تا چه حد از دنیا رفت. برای انجام این کار، PopsicleScene::gameOver() را پیدا کنید و این را به انتهای بلوک if(!_gameOver) { قبل از تنظیم _gameOver = true; :

PopsicleScene.cpp

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

kEventLevelEnd رویداد پایان سطح است. در حالی که "distance" یک "پارامتر رویداد" است. ما آخرین مسافت ثبت شده را در اینجا اضافه می کنیم، که تقریب خوبی برای مسافتی است که یک بازیکن قبل از مرگ طی کرده است.

7. رویدادهای تست

می توانید روی Debug کلیک کنید fa7d6449514b13c3.png اکنون، اما گزارش هر رویدادی در داشبورد 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

روی Debug کلیک کنید fa7d6449514b13c3.png و بازی را انجام دهید. شما باید رویدادهای جدید را تقریباً بلافاصله پس از وقوع در بازی مشاهده کنید. 5e81dfa682497414.png

اگر رویداد level_end را گسترش دهید، پارامتر "فاصله" سفارشی را که ثبت کرده اید نیز خواهید دید. 4451be4a6a97399c.png

8. یافتن آزمایش کننده ها

در مرحله بعد، می خواهید به بازی خود نگاه کنید، چه بازی های داخلی در استودیوی شما، در میان دوستان نزدیک یا از جامعه شما. Firebase App Distribution راهی عالی برای دعوت از بازیکنان به بازی خود در اختیار شما قرار می دهد.

ساخت یک باینری مستقل

ابتدا یک APK مستقل بسازید تا از Build > Build Bundles / APK (ها) > Build APK(ها) به اشتراک بگذارید 14c6bd5549cdb57a.png

Android Studio یک کادر محاوره ای ظاهر می شود که به شما امکان می دهد فایل ساخته شده را پیدا کنید. اگر آن را از دست دادید، می توانید روی "گزارش رویداد" کلیک کنید تا دوباره پیوند را دریافت کنید. ac730e3428689c4c.png

آپلود در Firebase App Distribution

  1. توزیع برنامه را باز کنید و روی "شروع به کار" کلیک کنید dcdafea94e4c1c15.png
  2. فایل apk. خود را بکشید و در کادری که می‌گوید «هر apk. را برای ایجاد نسخه جدید به اینجا بکشید» رها کنید. 4b6f94a05391c63f.png
  3. آدرس ایمیل خود را به عنوان اولین آزمایش کننده وارد کنید. ce047d710befa44a.png
  4. روی Next کلیک کنید.
  5. توضیحات اضافه کنید و روی توزیع کلیک کنید

دعوت از آزمایش کنندگان

به جای نیاز به وارد کردن دستی هر آدرس ایمیل، می توانید یک پیوند دعوت ایجاد کنید. وقتی کاربر را با این پیوند دعوت جذب می‌کنید، می‌توانید او را نیز به گروهی از آزمایش‌کنندگان اضافه کنید. به عنوان مثال، این به شما امکان می دهد تسترهای داخلی را از آزمایش کننده های خارجی جدا کنید.

  1. روی «آزمایش‌کنندگان و گروه‌ها» کلیک کنید 7e380773faff4eb7.png
  2. یک گروه جدید ایجاد کنید 6b046c010b14adaf.png و نامی مانند «Android Testers» به آن بدهید.
  3. روی "دعوت پیوندها" کلیک کنید a7fc2c8b01b6883e.png
  4. روی "لینک دعوت جدید" کلیک کنید
  5. گروه را در اینجا از منوی کشویی تنظیم کنید. d1b289e825d93d40.png
  6. روی "ایجاد لینک" کلیک کنید
  7. روی "کپی پیوند" کلیک کنید و آن را هر طور که می خواهید به اشتراک بگذارید

9. تبریک می گویم

شما با موفقیت تجزیه و تحلیل‌ها را به بازی مبتنی بر C++ خود اضافه کرده‌اید، چند دوست را برای بازی دعوت کرده‌اید، و می‌دانید چگونه کتابخانه‌های Firebase را در یک سیستم ساخت مبتنی بر CMake و Gradle که در توسعه اندروید رایج است، پیدا کرده و پیوند دهید.

آنچه ما پوشش داده ایم

  • چگونه Firebase را به بازی مبتنی بر Android CMake خود اضافه کنید.
  • چگونه بفهمیم به کدام وابستگی های C++ و Gradle نیاز دارید.
  • نحوه ثبت رویدادهای Analytics
  • نحوه اشکال زدایی رویدادهای تجزیه و تحلیل
  • چگونه بازی خود را با App Distribution به اشتراک بگذارید.

مراحل بعدی

  • سعی کنید به صورت ناشناس وارد یک کاربر شوید و امتیاز بالای او را در پایگاه داده بیدرنگ ذخیره کنید.
  • رویدادهای Analytics را در بازی خود ثبت کنید.
  • سعی کنید تجزیه و تحلیل را به یک بازی iOS اضافه کنید.

بیشتر بدانید