1. खास जानकारी
इस कोडलैब में, आपको Android के सैंपल में C++ Firebase गेम SDK टूल को इंटिग्रेट करने का तरीका बताया जाएगा. इसके लिए, आपको उदाहरण के तौर पर Google Analytics का इस्तेमाल करना होगा. इसमें आपको अपनी ज़रूरत के हिसाब से सुविधाएं जोड़ने का विकल्प मिलेगा. साथ ही, आंकड़ों से जुड़े बुनियादी तथ्य इंटिग्रेट करके, खिलाड़ी की प्रोग्रेस का आकलन किया जा सकेगा. साथ ही, गेम को टेस्टर के साथ शेयर किया जा सकेगा, ताकि आपको शुरुआती सुझाव मिल सकें.
सिलसिलेवार तरीके से निर्देश
अगर आपको लेखकों के साथ मिलकर इस कोडलैब के बारे में जानना है, तो यह वीडियो देखें:
आप इन चीज़ों के बारे में जानेंगे
- 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
आपके पास मैन्युअल तरीके से SDK टूल डाउनलोड करने का भी विकल्प है. ऐसा करने पर, Firebase C++ SDK टूल को /third_party
में इस तरह एक्सट्रैक्ट किया जाना चाहिए कि firebase_cpp_sdk
नाम के फ़ोल्डर में, Firebase SDK टूल का रूट CMakeLists.txt
मौजूद हो.
3. सैंपल गेम चलाएं
सबसे पहले, सैंपल गेम खेलें और पक्का करें कि सब कुछ ठीक से काम कर रहा हो. यह एक आसान से अनगिनत रनर है. इसमें प्रोसेस से जनरेट किया गया लेवल है. इसमें जंप करने के लिए एक बटन भी है.
- फ़ाइल > चुनें नया > प्रोजेक्ट इंपोर्ट करें या स्प्लैश स्क्रीन से 'प्रोजेक्ट इंपोर्ट करें' चुनें
- डेटा स्टोर करने की जगह में शामिल
proj.android/
फ़ोल्डर खोलें
- [ज़रूरी नहीं]
proj.android/gradle.properties
खोलें और ठीक हैPROP_APP_ABI
. बिल्ड में लगने वाला समय कम करने के लिए, टारगेट आर्किटेक्चर को छोड़कर बाकी सभी को हटाया जा सकता है.PROP_APP_ABI=x86
को सिर्फ़ एम्युलेटर के लिए बनाया जाएगा,PROP_APP_ABI=armeabi-v7a
इसे ज़्यादातर फ़ोन के लिए बनाएगा - गेम बनाने और चलाने के लिए, डीबग करें बटन पर क्लिक करें. Cocos2dx गेम इंजन को बनाने में समय लगेगा.
4. Firebase कंसोल सेटअप
- Firebase कंसोल में एक नया प्रोजेक्ट बनाएं.
- इसे "पॉप्सिकल रनर" जैसा नाम दें
- Analytics चालू करें
- Analytics खाता जोड़ें या बनाएं
- अपने प्रोजेक्ट में नया Android ऐप्लिकेशन जोड़ें
com.firebase.popsiclerunner
को अपने पैकेज के नाम के तौर पर जोड़ें.
- google-services.json डाउनलोड करें और इसे
proj.android/app
में कॉपी करें
- Firebase SDK टूल जोड़ने के लिए दिए गए निर्देशों को अनदेखा करें और 'आगे बढ़ें' पर क्लिक करें
- "यह चरण छोड़ें" पर क्लिक करके जब आपके इंस्टॉलेशन की पुष्टि करने के लिए कहा जाए
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
Android के लिए बनाई गई, Firebase की C++ लाइब्रेरी की मदद से, गेम में दिलचस्पी बढ़ाएं.
Google सेवाओं का प्लगिन जोड़ें
Firebase SDK टूल को जोड़ने के लिए, आपको अपनी Gradle बिल्ड स्क्रिप्ट में Google Services प्लगिन जोड़ना होगा. ऐसा करने के लिए, प्रोजेक्ट लेवल build.gradle
फ़ाइल खोलें (यह proj.android
फ़ोल्डर में होती है). साथ ही, classpath 'com.google.gms:google-services:4.3.3'
को बिल्डस्क्रिप्ट डिपेंडेंसी के तौर पर जोड़ें.
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
(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
जोड़ें और अपनी ज़रूरत के हिसाब से 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 हेडर जोड़ें
Classes/PopsicleScene.cpp
खोलें और सबसे ऊपर Firebase हेडर जोड़ें, ताकि हम Analytics कॉल कर सकें.
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()
ढूंढें और _gameOver = true;
सेट करने से पहले इसे if(!_gameOver) {
ब्लॉक के आखिर में जोड़ें:
PopsicleScene.cpp
{
using namespace firebase;
analytics::LogEvent(analytics::kEventLevelEnd, "distance", _lastDistance);
}
kEventLevelEnd
, लेवल खत्म होने वाला इवेंट है. वहीं, "distance"
एक "इवेंट पैरामीटर" है. हम यहां आखिरी बार रिकॉर्ड की गई दूरी जोड़ रहे हैं. यह इस बात का अच्छा अनुमान है कि किसी खिलाड़ी ने मरने से पहले कितनी दूरी तय की थी.
7. इवेंट की जांच करना
अभी डीबग करें पर क्लिक किया जा सकता है. हालांकि, 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.
इवेंट देखना
"DebugView" खोलें अपने Firebase कंसोल में
डीबग करें पर क्लिक करें और गेम खेलें. आपको गेम में नए इवेंट आने के तुरंत बाद दिखने लगेंगे. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
level_end
इवेंट को बड़ा करने पर, आपको कस्टम "दूरी" भी दिखेगी पैरामीटर जिसे आपने लॉग किया है.
8. जांच करने वाले लोगों को ढूंढना
इसके बाद, हो सकता है कि आप गेम पर सबका ध्यान रखना चाहें. भले ही, वे आपके स्टूडियो में हों, करीबी दोस्तों के बीच हों या आपकी कम्यूनिटी में शामिल हों. Firebase App Distribution आपको खिलाड़ियों को अपना गेम खेलने का न्योता देने का शानदार तरीका मुहैया कराता है.
स्टैंडअलोन बाइनरी बनाना
पहले बिल्ड > से शेयर करने के लिए एक स्टैंडअलोन APK बनाएं बंडल / APK बनाएं > बिल्ड APK
Android Studio में एक डायलॉग बॉक्स पॉप-अप होगा, जिससे आपको बनाई गई फ़ाइल का पता लगाने की सुविधा मिलती है. अगर आपको इवेंट की जानकारी नहीं दिखती है, तो "इवेंट लॉग" पर क्लिक करें पर जाकर इस लिंक को फिर से लिंक कर सकते हैं. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
Firebase App Distribution पर अपलोड करें
- App Distribution खोलें और "शुरू करें" पर क्लिक करें अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
- अपनी .apk फ़ाइल को खींचकर उस बॉक्स में छोड़ें जिस पर लिखा है "नई रिलीज़ बनाने के लिए किसी भी .apk को यहां खींचें." अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
- सबसे पहले टेस्टर के तौर पर अपना ईमेल पता डालें. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
- आगे बढ़ें पर क्लिक करें.
- ब्यौरा जोड़ें और 'डिस्ट्रिब्यूट करें' पर क्लिक करें
टेस्टर को न्योता दें
हर ईमेल पते को मैन्युअल तरीके से डालने के बजाय, न्योते का लिंक बनाया जा सकता है. न्योते के इस लिंक से किसी उपयोगकर्ता को कैप्चर करने के बाद, उसे टेस्टर के ग्रुप में भी जोड़ा जा सकता है. इसकी मदद से, इंटरनल टेस्टर को बाहरी टेस्टर से अलग किया जा सकता है.
- "टेस्टर और ग्रुप" अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
- एक नया ग्रुप बनाएं और उसे "Android टेस्टर" जैसा कोई नाम दें.
- "न्योते के लिंक" पर क्लिक करें अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
- "न्योते का नया लिंक" पर क्लिक करें
- ड्रॉपडाउन से ग्रुप को यहां सेट करें. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
- "लिंक बनाएं" पर क्लिक करें
- "लिंक कॉपी करें" पर क्लिक करें और जैसे चाहें, शेयर करें.
9. बधाई हो
आपने C++ पर आधारित अपने गेम में आंकड़े जोड़ लिए हैं और कुछ दोस्तों को खेलने का न्योता दे दिया है. साथ ही, आपको पता है कि CMake और Gradle पर आधारित बिल्ड सिस्टम में Firebase लाइब्रेरी को कैसे ढूंढा और लिंक किया जा सकता है, जो Android डेवलपमेंट में आम तौर पर इस्तेमाल किए जाते हैं.
हमने क्या कवर किया
- Android CMake पर आधारित गेम में Firebase जोड़ने का तरीका.
- यह पता लगाने का तरीका कि आपको किस C++ और Gradle डिपेंडेंसी की ज़रूरत है.
- Analytics के इवेंट लॉग करने का तरीका.
- आंकड़ों के इवेंट को डीबग करने का तरीका.
- App Distribution से गेम को शेयर करने का तरीका.
अगले चरण
- किसी उपयोगकर्ता को पहचान छिपाकर लॉग इन करने की कोशिश करें और उसका सबसे ज़्यादा स्कोर रीयलटाइम डेटाबेस में सेव करें.
- अपने गेम में Analytics के इवेंट लॉग करें.
- किसी iOS गेम में आंकड़े जोड़कर देखें.
ज़्यादा जानें
- गेम से जुड़े खास इवेंट की सूची देखें और तय करें कि वे आपके गेम में किस तरह फ़िट हो सकते हैं.