C++ में Firebase के साथ शुरुआत करें

1. खास जानकारी

इस कोडलैब में, आपको Google Analytics का इस्तेमाल करके, Android के किसी सैंपल गेम में C++ Firebase Games SDK को इंटिग्रेट करने का तरीका बताया जाएगा. आपके पास अपनी ज़रूरत के हिसाब से सुविधाएं जोड़ने, खिलाड़ी की प्रोग्रेस को मेज़र करने के लिए कुछ बुनियादी आंकड़ों को इंटिग्रेट करने, और गेम को टेस्टर के साथ शेयर करने का विकल्प होगा, ताकि आपको शुरुआती सुझाव मिल सकें.

वॉकथ्रू

अगर आपको इस कोडलैब को लेखकों के साथ देखना है, तो यह वीडियो देखें:

आपको क्या सीखने को मिलेगा

  • Android CMake पर आधारित गेम को Firebase से जोड़ने का तरीका.
  • यह पता लगाने का तरीका कि आपको किन C++ और Gradle डिपेंडेंसी की ज़रूरत है.
  • Analytics इवेंट को लॉग करने का तरीका.
  • आंकड़ों से जुड़े इवेंट को डीबग करने का तरीका.
  • App Distribution की मदद से, अपना गेम शेयर करने का तरीका.

आपको किन चीज़ों की ज़रूरत होगी

  • Android Studio
  • सैंपल कोड
  • Google Play services वाला टेस्ट डिवाइस या एम्युलेटर

2. सैंपल कोड पाना

GitHub से डाउनलोड करें या चेकआउट करें:

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

Firebase SDK टूल डाउनलोड करना

macOS/Linux:

sh download.sh

Windows (PowerShell से):

./download.ps1

आपके पास एसडीके टूल को मैन्युअल तरीके से डाउनलोड करने का विकल्प भी है. ऐसा करने पर, Firebase C++ SDK को /third_party में एक्सट्रैक्ट किया जाना चाहिए, ताकि firebase_cpp_sdk नाम के फ़ोल्डर में Firebase SDK का रूट CMakeLists.txt मौजूद हो.

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. इसे "Popsicle Runner" जैसा नाम दें
  3. Analytics 255468f27832bb18.png चालू करें
  4. Analytics खाता जोड़ना या बनाना 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 जोड़ना

CMakeLists.txt में Firebase SDK टूल जोड़ना

रूट लेवल 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 यह Android के लिए बनाई गई, Firebase की C++ लाइब्रेरी के साथ गेम को जोड़ता है.

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.android.application' के नीचे apply plugin: 'com.google.gms.google-services' जोड़ें:

build.gradle

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

Gradle में C++ SDK टूल ढूंढना

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"

Android डिपेंडेंसी जोड़ना

Firebase के लिए Android डिपेंडेंसी को हुक अप करने के लिए, popsicle_runner के लिए मॉड्यूल लेवल की gradle फ़ाइल (proj.android/app/build.gradle में) खोलें. इसके बाद, आखिर में मौजूद सामान्य dependences { सेक्शन से ठीक पहले यह कोड जोड़ें:

build.gradle

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

AndroidX और Jetifier

AndroidX और Jetifier के लिए सहायता जोड़ने के लिए, gradle.properties खोलें और इसे आखिर में जोड़ें:

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 जोड़ें और 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. Analytics जोड़ना

गेम डेवलपमेंट के शुरुआती चरण में भी, ऐनलिटिक्स एक अहम टूल है. इससे यह पता लगाया जा सकता है कि बीटा टेस्टर, गेम के साथ कैसे इंटरैक्ट कर रहे हैं. कुछ आंकड़े अपने-आप इकट्ठा होते हैं. जैसे, उपयोगकर्ता बनाए रखने से जुड़ी रिपोर्ट. हालांकि, अपने गेम के हिसाब से कस्टम इवेंट जोड़ने से आपको फ़ायदा मिल सकता है.

जब प्लेयर कोई लेवल शुरू करता है, तब Analytics इवेंट को लॉग करना एक अच्छा शुरुआती पॉइंट है. हम लेवल शुरू होने वाले इवेंट की संख्या का इस्तेमाल करके यह देख सकते हैं कि कोई खिलाड़ी किसी सेशन में कितनी बार गेम को फिर से खेल सकता है.

4b5df08c0f6b6938.png

इसके अलावा, हम यह भी लॉग करेंगे कि खिलाड़ी की मौत कब हुई और वह गेम में कहां तक पहुंचा था. इससे हमें यह पता चलेगा कि हमारे किए गए बदलावों से, एक सेशन की अवधि पर क्या असर पड़ता है. साथ ही, इससे हमें यह तय करने में मदद मिलेगी कि खिलाड़ियों को छोटा/मुश्किल गेम चाहिए या लंबा/आसान गेम.

Analytics हेडर जोड़ना

Classes/PopsicleScene.cpp खोलें और Firebase हेडर को सबसे ऊपर जोड़ें, ताकि हम आंकड़ों से जुड़ी कॉल कर सकें.

PopsicleScene.cpp

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

Level Start इवेंट लॉग करना

जब Cocos2dx Director इस सीन को स्टेज करता है, तब इवेंट को लॉग करने के लिए, स्टब किए गए फ़ंक्शन PopsicleScene::onEnter() को ढूंढें. लेवल शुरू होने का इवेंट लॉग करने के लिए, यहां यह कोड डालें:

PopsicleScene.cpp

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

लेवल के खत्म होने का इवेंट लॉग करना

यह देखने के लिए कि कोई खिलाड़ी कैसा परफ़ॉर्म कर रहा है, आइए हम 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 डीबग ब्रिज (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.

इवेंट देखना

Firebase कंसोल में "DebugView" खोलें 84472ac3a7ad9aff.png

डीबग करें fa7d6449514b13c3.png पर क्लिक करें और गेम खेलें. आपको गेम में होने वाले नए इवेंट, लगभग तुरंत दिखने चाहिए. 5e81dfa682497414.png

level_end इवेंट को बड़ा करने पर, आपको लॉग किया गया कस्टम "दूरी" पैरामीटर भी दिखेगा. 4451be4a6a97399c.png

8. टेस्टर ढूंढना

इसके बाद, आपको अपने गेम को लोगों तक पहुंचाना होगा. चाहे वे आपके स्टूडियो के हों, आपके करीबी दोस्त हों या आपके समुदाय के हों. Firebase App Distribution की मदद से, खिलाड़ियों को गेम खेलने का न्योता भेजा जा सकता है.

स्टैंडअलोन बाइनरी बनाना

सबसे पहले, स्टैंडअलोन APK बनाएं. इसके लिए, Build > Build Bundles(s) / APK(s) > Build APK(s) 14c6bd5549cdb57a.png पर जाएं

Android Studio में एक डायलॉग बॉक्स दिखेगा. इससे आपको बनाई गई फ़ाइल का पता लगाने में मदद मिलेगी. अगर आपको यह लिंक नहीं मिलता है, तो इसे फिर से पाने के लिए "इवेंट लॉग" पर क्लिक करें. ac730e3428689c4c.png

Firebase App Distribution पर अपलोड करना

  1. App Distribution खोलें और "शुरू करें" 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++ पर आधारित गेम में Analytics को जोड़ लिया है. साथ ही, कुछ दोस्तों को गेम खेलने का न्योता दिया है. इसके अलावा, आपको यह भी पता है कि Android डेवलपमेंट में इस्तेमाल होने वाले CMake और Gradle पर आधारित बिल्ड सिस्टम में, Firebase लाइब्रेरी को कैसे खोजा और लिंक किया जाता है.

हमने क्या-क्या शामिल किया है

  • Android CMake पर आधारित गेम को Firebase से जोड़ने का तरीका.
  • यह पता लगाने का तरीका कि आपको किन C++ और Gradle डिपेंडेंसी की ज़रूरत है.
  • Analytics इवेंट को लॉग करने का तरीका.
  • आंकड़ों से जुड़े इवेंट को डीबग करने का तरीका.
  • App Distribution की मदद से, अपना गेम शेयर करने का तरीका.

अगले चरण

  • किसी उपयोगकर्ता को बिना पहचान बताए लॉग इन करने की सुविधा आज़माएं और उसके हाई स्कोर को रीयलटाइम डेटाबेस में सेव करें.
  • अपने गेम में Analytics इवेंट लॉग करें.
  • किसी iOS गेम में Analytics जोड़ने की कोशिश करें.

ज़्यादा जानें