1. সংক্ষিপ্ত বিবরণ
এই কোডল্যাবে, আপনি শিখবেন কিভাবে Google Analytics ব্যবহার করে একটি নমুনা অ্যান্ড্রয়েড গেমে C++ Firebase Games SDK ইন্টিগ্রেট করতে হয়। আপনি আপনার প্রয়োজনীয় বৈশিষ্ট্যগুলি যোগ করতে পারবেন, আপনার খেলোয়াড়ের অগ্রগতি পরিমাপ করার জন্য কিছু মৌলিক বিশ্লেষণ যুক্তি সংহত করতে পারবেন এবং প্রাথমিক প্রতিক্রিয়া পেতে পরীক্ষকদের সাথে গেমটি শেয়ার করতে পারবেন।
ওয়াকথ্রু
আপনি যদি লেখকদের সাথে এই কোডল্যাবটি ঘুরে দেখতে চান তবে এই ভিডিওটি দেখুন:
তুমি কি শিখবে
- আপনার অ্যান্ড্রয়েড সিমেক ভিত্তিক গেমটিতে ফায়ারবেস কীভাবে যুক্ত করবেন।
- আপনার কোন C++ এবং Gradle নির্ভরতা প্রয়োজন তা কীভাবে বের করবেন।
- অ্যানালিটিক্স ইভেন্টগুলি কীভাবে লগ করবেন।
- বিশ্লেষণ ইভেন্টগুলি কীভাবে ডিবাগ করবেন।
- অ্যাপ ডিস্ট্রিবিউশনের সাথে আপনার গেমটি কীভাবে শেয়ার করবেন।
তোমার যা লাগবে
- অ্যান্ড্রয়েড স্টুডিও
- নমুনা কোড
- Google Play Services সহ একটি পরীক্ষামূলক ডিভাইস বা এমুলেটর
2. নমুনা কোড পান
GitHub থেকে চেকআউট অথবা ডাউনলোড করুন:
git clone https://github.com/FirebaseExtended/cmake-way-for-firebase.git
ফায়ারবেস SDK ডাউনলোড করুন
ম্যাকওএস/লিনাক্স:
sh download.sh
উইন্ডোজ (পাওয়ারশেল থেকে):
./download.ps1
আপনি নিজেও SDK ডাউনলোড করতে পারেন। যদি আপনি এটি করেন, তাহলে Firebase C++ SDK /third_party তে এক্সট্র্যাক্ট করতে হবে যাতে firebase_cpp_sdk নামের একটি ফোল্ডারে Firebase SDK থেকে CMakeLists.txt রুট থাকে।
৩. নমুনা খেলাটি চালান
প্রথমে, নমুনা খেলাটি খেলুন এবং নিশ্চিত করুন যে সবকিছু ঠিকঠাক কাজ করছে। এটি একটি সহজ অসীম রানার যার একটি পদ্ধতিগতভাবে তৈরি স্তর এবং লাফ দেওয়ার জন্য একটি একক বোতাম রয়েছে।
- ফাইল > নতুন > আমদানি প্রকল্প নির্বাচন করুন (অথবা স্প্ল্যাশ স্ক্রিন থেকে আমদানি প্রকল্প নির্বাচন করুন)
- রিপোজিটরিতে অন্তর্ভুক্ত
proj.android/ফোল্ডারটি খুলুন।
- [ঐচ্ছিক]
proj.android/gradle.propertiesখুলুন এবংPROP_APP_ABIসূক্ষ্ম করুন। বিল্ড টাইম কমাতে আপনি আপনার টার্গেট আর্কিটেকচার ছাড়া বাকি সব মুছে ফেলতে পারেন।PROP_APP_ABI=x86শুধুমাত্র এমুলেটরের জন্য বিল্ড করবেPROP_APP_ABI=armeabi-v7aবেশিরভাগ ফোনের জন্য বিল্ড করবে - ডিবাগ বোতামে ক্লিক করুন
গেমটি তৈরি এবং চালানোর জন্য। Cocos2dx গেম ইঞ্জিন তৈরি করতে সময় লাগবে।
৪. ফায়ারবেস কনসোল সেটআপ
- Firebase কনসোলে একটি নতুন প্রকল্প তৈরি করুন।

- "পপসিকল রানার" এর মতো একটা নাম দাও।
- অ্যানালিটিক্স সক্ষম করুন

- একটি অ্যানালিটিক্স অ্যাকাউন্ট যোগ করুন বা তৈরি করুন

- আপনার প্রকল্পে একটি নতুন অ্যান্ড্রয়েড অ্যাপ যোগ করুন

- আপনার প্যাকেজের নাম হিসেবে
com.firebase.popsiclerunnerযোগ করুন।

- google-services.json ডাউনলোড করুন এবং এটি
proj.android/appএ কপি করুন।
- Firebase SDK যোগ করার জন্য প্রদত্ত নির্দেশাবলী উপেক্ষা করুন এবং পরবর্তী ক্লিক করুন।
- আপনার ইনস্টলেশন যাচাই করার জন্য জিজ্ঞাসা করা হলে আপনি "এই ধাপটি এড়িয়ে যান" এ ক্লিক করতে পারেন।
৫. আপনার গেমে 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 অ্যান্ড্রয়েডের জন্য তৈরি ফায়ারবেসের C++ লাইব্রেরিগুলির সাহায্যে গেমটিকে আরও আকর্ষণীয় করে তোলে।
গুগল সার্ভিসেস প্লাগইন যোগ করুন
Firebase SDK সংযোগ করতে, আপনাকে আপনার gradle বিল্ড স্ক্রিপ্টে Google Services প্লাগইন যোগ করতে হবে। এটি করার জন্য, project level build.gradle ফাইলটি খুলুন (এটি proj.android ফোল্ডারে আছে)। এবং classpath 'com.google.gms:google-services:4.3.3' কে একটি বিল্ডস্ক্রিপ্ট নির্ভরতা হিসেবে যুক্ত করুন।
বিল্ড.গ্রেডল
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' com.google.gms.google-services' যোগ করুন :
বিল্ড.গ্রেডল
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services' // Google Services plugin
গ্র্যাডলে C++ SDK খুঁজুন
Firebase C++ SDK কোথায় পাবেন তা Gradle কে জানাতে, settings.gradle ফাইলের নীচে নিম্নলিখিত লাইনগুলি যোগ করুন।
সেটিংস.গ্রেডল
gradle.ext.firebase_cpp_sdk_dir = "$settingsDir/../third_party/firebase_cpp_sdk/"
includeBuild "$gradle.ext.firebase_cpp_sdk_dir"
অ্যান্ড্রয়েড নির্ভরতা যোগ করুন
Firebase-এর জন্য Android নির্ভরতাগুলিকে সংযুক্ত করতে, popsicle_runner জন্য মডিউল স্তরের gradle ফাইলটি খুলুন ( proj.android/app/build.gradle এ) এবং শেষে সাধারণ dependences { বিভাগের ঠিক আগে নিম্নলিখিতটি যোগ করুন:
বিল্ড.গ্রেডল
apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
firebaseCpp.dependencies {
analytics
}
অ্যান্ড্রয়েডএক্স এবং জেটিফায়ার
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 ড্যাশবোর্ড রিফ্রেশ করেন, তাহলে এক মিনিট বা তারও বেশি সময় পরে একজন নতুন ব্যবহারকারী উপস্থিত হতে দেখবেন।
৬. বিশ্লেষণ যোগ করুন
এমনকি ডেভেলপমেন্টের শুরুতেও, বিটা পরীক্ষকরা গেমটির সাথে কীভাবে ইন্টারঅ্যাক্ট করছে তা পরিমাপ করার জন্য অ্যানালিটিক্স একটি কার্যকর হাতিয়ার। কিছু অ্যানালিটিক্স স্বয়ংক্রিয়ভাবে সংগ্রহ করা হয় - যেমন রিটেনশন রিপোর্ট - তবে আপনার নির্দিষ্ট গেমের জন্য তৈরি কাস্টম ইভেন্ট যোগ করা কার্যকর।
একটি ভালো শুরুর বিষয় হল যখন খেলোয়াড় একটি লেভেল শুরু করে তখন একটি অ্যানালিটিক্স ইভেন্ট লগ করা। লেভেল শুরুর ইভেন্টের সংখ্যা ব্যবহার করে আমরা দেখতে পারি যে একজন খেলোয়াড় একটি সেশনে কতবার খেলাটি রিপ্লে করতে পারে।

আমরা খেলোয়াড়ের মৃত্যুর পরের একটি ইভেন্টও লগ করব, যেখানে তারা কতদূর এগিয়েছে তা উল্লেখ থাকবে। এটি আমাদের দেখতে দেবে যে আমরা কীভাবে পরিবর্তনগুলি করি তা একটি একক সেশনের সময়কাল পরিবর্তন করে এবং খেলোয়াড়রা একটি ছোট/কঠিন খেলা চায় নাকি দীর্ঘ/সহজ খেলা চায় তা নির্ধারণ করতে আমাদের সাহায্য করবে।
অ্যানালিটিক্স হেডার যোগ করুন
Classes/PopsicleScene.cpp খুলুন এবং উপরে Firebase হেডার যোগ করুন যাতে আমরা বিশ্লেষণ কল করতে পারি।
পপসিকলসিন.সিপিপি
#include <firebase/analytics.h>
#include <firebase/analytics/event_names.h>
একটি লেভেল স্টার্ট ইভেন্ট লগ করুন
Cocos2dx ডিরেক্টর কর্তৃক এই দৃশ্যটি মঞ্চস্থ করার সময় একটি ইভেন্ট লগ করতে, স্টাবড ফাংশন PopsicleScene::onEnter() খুঁজুন। Level Start ইভেন্ট লগ করতে এখানে নিম্নলিখিত কোডটি লিখুন:
পপসিকলসিন.সিপিপি
using namespace firebase;
analytics::LogEvent(analytics::kEventLevelStart);
একটি লেভেল এন্ড ইভেন্ট লগ করুন
একজন খেলোয়াড় কতটা ভালো করছে তা দেখার জন্য, আসুন একটি Level End ইভেন্ট লগ করি যেখানে দেখা যায় যে প্লেয়ারটি শেষ পর্যন্ত মারা গেলে কতদূর গিয়েছিল। এটি করার জন্য, PopsicleScene::gameOver() খুঁজুন এবং _gameOver = true; সেট করার আগে if(!_gameOver) { ব্লকের শেষে এটি যোগ করুন:
পপসিকলসিন.সিপিপি
{
using namespace firebase;
analytics::LogEvent(analytics::kEventLevelEnd, "distance", _lastDistance);
}
kEventLevelEnd হল লেভেল এন্ড ইভেন্ট। যেখানে "distance" হল একটি "event parameter"। আমরা এখানে সর্বশেষ রেকর্ড করা দূরত্ব যোগ করছি, যা একজন খেলোয়াড় মৃত্যুর আগে কতদূর ভ্রমণ করেছিলেন তার একটি ভালো আনুমানিক হিসাব।
৭. টেস্টিং ইভেন্ট
আপনি ডিবাগ ক্লিক করতে পারেন
এখন, কিন্তু যেকোনো ইভেন্টের রিপোর্ট অ্যানালিটিক্স ড্যাশবোর্ডে আসতে সময় লাগবে। এর দুটি কারণ রয়েছে: ১) ব্যাটারি সংরক্ষণের জন্য ইভেন্টগুলি প্রতি ঘন্টায় একবার ব্যাচ করে আপলোড করা হয় এবং ২) প্রতি ২৪ ঘন্টা অন্তর রিপোর্ট তৈরি করা হয়।
ডিবাগ মোড সক্ষম করা হচ্ছে
আপনার ডিভাইসটিকে ডিবাগ মোডে রেখে অ্যানালিটিক্স ইভেন্টগুলি ডিবাগ করা এখনও সম্ভব।
প্রথমে নিশ্চিত করুন যে আপনার 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.
ইভেন্ট দেখা
আপনার ফায়ারবেস কনসোলে "ডিবাগভিউ" খুলুন। 
ডিবাগ ক্লিক করুন
এবং খেলাটি খেলুন। খেলায় নতুন ইভেন্টগুলি ঘটার প্রায় সাথে সাথেই আপনি দেখতে পাবেন। 
যদি আপনি level_end ইভেন্টটি প্রসারিত করেন, তাহলে আপনি আপনার লগ করা কাস্টম "দূরত্ব" প্যারামিটারটিও দেখতে পাবেন। 
৮. পরীক্ষকদের খোঁজা
এরপর আপনার খেলাটি আপনার স্টুডিওর অভ্যন্তরীণ, ঘনিষ্ঠ বন্ধুদের মধ্যে, অথবা আপনার সম্প্রদায়ের যেকোনো স্থান থেকে হোক না কেন, তার উপর নজর রাখতে হবে। Firebase অ্যাপ ডিস্ট্রিবিউশন আপনাকে খেলোয়াড়দের আপনার খেলা খেলতে আমন্ত্রণ জানানোর একটি দুর্দান্ত উপায় দেয়।
একটি স্বতন্ত্র বাইনারি তৈরি করা
প্রথমে Build > Build Bundles / APK(s) > Build APK(s) থেকে শেয়ার করার জন্য একটি স্বতন্ত্র APK তৈরি করুন। 
অ্যান্ড্রয়েড স্টুডিওতে একটি ডায়ালগ বক্স আসবে যেখানে আপনি বিল্ট ফাইলটি খুঁজে পাবেন। যদি আপনি এটি মিস করেন, তাহলে লিঙ্কটি আবার পেতে "ইভেন্ট লগ" এ ক্লিক করতে পারেন। 
Firebase অ্যাপ ডিস্ট্রিবিউশনে আপলোড করুন
- অ্যাপ ডিস্ট্রিবিউশন খুলুন এবং "শুরু করুন" এ ক্লিক করুন।

- "নতুন রিলিজ তৈরি করতে এখানে যেকোনো .apk টেনে আনুন" লেখা বাক্সে আপনার .apk ফাইলটি টেনে আনুন।

- প্রথম পরীক্ষক হিসেবে আপনার ইমেল ঠিকানা লিখুন।

- পরবর্তী ক্লিক করুন।
- একটি বিবরণ যোগ করুন এবং বিতরণ করুন এ ক্লিক করুন
পরীক্ষকদের আমন্ত্রণ জানান
প্রতিটি ইমেল ঠিকানা ম্যানুয়ালি প্রবেশ করার পরিবর্তে, আপনি একটি আমন্ত্রণ লিঙ্ক তৈরি করতে পারেন। এই আমন্ত্রণ লিঙ্কটি ব্যবহার করে আপনি যখন কোনও ব্যবহারকারীকে ক্যাপচার করেন তখন আপনি তাদের পরীক্ষকদের একটি গ্রুপে যুক্ত করতে পারেন। উদাহরণস্বরূপ, এটি আপনাকে অভ্যন্তরীণ পরীক্ষকদের বহিরাগত পরীক্ষকদের থেকে আলাদা করতে দেবে।
- "পরীক্ষক এবং গোষ্ঠী" এ ক্লিক করুন।

- একটি নতুন গ্রুপ তৈরি করুন
, এবং এটিকে "Android Testers" এর মতো একটি নাম দিন। - "লিঙ্কগুলি আমন্ত্রণ করুন" এ ক্লিক করুন

- "নতুন আমন্ত্রণ লিঙ্ক" এ ক্লিক করুন।
- ড্রপডাউন থেকে এখানে গ্রুপটি সেট করুন।

- "লিঙ্ক তৈরি করুন" এ ক্লিক করুন
- "লিঙ্কটি অনুলিপি করুন" এ ক্লিক করুন এবং আপনার ইচ্ছামত শেয়ার করুন।
৯. অভিনন্দন
তুমি তোমার C++ ভিত্তিক গেমটিতে সফলভাবে বিশ্লেষণ যোগ করেছ, কিছু বন্ধুকে খেলার জন্য আমন্ত্রণ জানিয়েছ, এবং তুমি জানো কিভাবে অ্যান্ড্রয়েড ডেভেলপমেন্টে প্রচলিত CMake এবং Gradle ভিত্তিক বিল্ড সিস্টেমে Firebase লাইব্রেরি খুঁজে বের করতে হয় এবং লিঙ্ক করতে হয়।
আমরা যা কভার করেছি
- আপনার অ্যান্ড্রয়েড সিমেক ভিত্তিক গেমটিতে ফায়ারবেস কীভাবে যুক্ত করবেন।
- আপনার কোন C++ এবং Gradle নির্ভরতা প্রয়োজন তা কীভাবে বের করবেন।
- অ্যানালিটিক্স ইভেন্টগুলি কীভাবে লগ করবেন।
- বিশ্লেষণ ইভেন্টগুলি কীভাবে ডিবাগ করবেন।
- অ্যাপ ডিস্ট্রিবিউশনের সাথে আপনার গেমটি কীভাবে শেয়ার করবেন।
পরবর্তী পদক্ষেপ
- বেনামে কোনও ব্যবহারকারীকে লগ ইন করার চেষ্টা করুন এবং রিয়েলটাইম ডাটাবেসে তাদের উচ্চ স্কোর সংরক্ষণ করুন।
- আপনার নিজের গেমে অ্যানালিটিক্স ইভেন্টগুলি লগ করুন।
- একটি iOS গেমে বিশ্লেষণ যোগ করার চেষ্টা করুন।
আরও জানুন
- গেমের নির্দিষ্ট ইভেন্টগুলির তালিকা দেখুন এবং বিবেচনা করুন যে সেগুলি আপনার নিজের গেমের সাথে কীভাবে খাপ খায়।