এই নির্দেশিকাটি বর্ণনা করে কিভাবে Play Games Services v2 Native SDK ব্যবহার করার জন্য একটি নেটিভ C বা C++ গেম প্রজেক্ট সেট আপ করবেন এবং প্ল্যাটফর্ম প্রমাণীকরণকে একীভূত করবেন। আপনার গেমে অন্যান্য Play Games Services বৈশিষ্ট্যগুলিকে একীভূত করতে এবং আপনার ব্যাকএন্ড গেম সার্ভারে Play Games Services সংহত করতে ইন্টিগ্রেশন প্রয়োজন।
সমর্থিত বৈশিষ্ট্য
Play Games Services v2 Native SDK বিটাতে রয়েছে এবং শুধুমাত্র সাইন-ইন পরিষেবা সমর্থন করে। এটি এখনও অন্যান্য Play Games Services বৈশিষ্ট্যগুলিকে সমর্থন করে না।
API রেফারেন্স ডকুমেন্টেশন
SDK-এর হেডার ফাইলগুলিতে API-এর জন্য রেফারেন্স ডকুমেন্টেশন থাকে। হেডার ফাইলগুলি SDK ফাইলগুলির include ফোল্ডারে অবস্থিত, যা আপনার প্রকল্পটি SDK রিপোজিটরির সাথে সিঙ্ক করার পরে উপলব্ধ।
আবশ্যকতা
একটি গেম প্রজেক্ট যা প্রাথমিক প্রোগ্রামিং ভাষা হিসেবে নেটিভ C অথবা C++ ব্যবহার করে।
আপনার গেম প্রজেক্ট এবং ডেভেলপমেন্ট এনভায়রনমেন্টে অবশ্যই গ্র্যাডেল বিল্ড সিস্টেম সেট আপ থাকতে হবে।
শুরু করার আগে
আপনাকে Google Play Console-এ Play Games পরিষেবা সেট আপ করতে হবে।
আপনার গেম প্রজেক্ট সেট আপ করুন
আপনার গেম প্রজেক্ট সেট আপ করতে নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন।
CMakeLists.txt আপডেট করুন
আপনার CMakeLists.txt ফাইলে, নিম্নলিখিত কোডটি যোগ করুন:
find_package(com.google.android.gms.games.v2.c REQUIRED CONFIG)
// link games_static for -DANDROID_STL=c++_static or default
// link games_shared for -DANDROID_STL=c++_shared
target_link_libraries(
app PUBLIC com.google.android.gms.games.v2.c::games_static)
build.gradle আপডেট করুন
আপনার অ্যাপ-লেভেল build.gradle ফাইলে নিম্নলিখিতগুলি করুন:
নিশ্চিত করুন যে প্রিফ্যাব বিল্ড বৈশিষ্ট্যটি সক্রিয় আছে।
Play Games Services v2 Native SDK-এর জন্য নির্ভরতা যোগ করুন:
-
com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1
-
এখানে একটি উদাহরণ:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1"
}
AndroidManifest.xml আপডেট করুন
আপনার
AndroidManifest.xmlফাইলে, আপনার Play Games Services প্রজেক্ট আইডি নির্ধারণ করুন। আপনি ফাইলটিতে নিম্নলিখিত লাইনগুলি যোগ করে এটি করতে পারেন:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>আপনার প্রোজেক্ট আইডির জন্য একটি স্ট্রিং রিসোর্স তৈরি করুন। এটি আপনার গেমটিকে বিল্ডের সময় আইডি অ্যাক্সেস করার অনুমতি দেয়। রিসোর্স তৈরি করতে,
project_root /app/src/main/res/values/games-ids.xmlফাইলটি তৈরি করুন এবং নিম্নলিখিতগুলি যোগ করুন:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>আপনার গেমটি তৈরি করুন এবং পরীক্ষা করুন। সফল হলে, যখন আপনি আপনার গেমটি চালু করবেন তখন এটি একটি সাইন-ইন প্রম্পট বা একটি সফল সাইন-ইন ব্যানার প্রদর্শন করবে।
খেলোয়াড়ের আইডি পান
আপনার গেমটি একজন প্রমাণিত খেলোয়াড়ের প্লেয়ার আইডি পুনরুদ্ধার করে তার প্লেয়ার তথ্য অ্যাক্সেস করতে পারে। আপনি GetPlayerID ফাংশনটি কল করে একটি প্লেয়ার আইডি পুনরুদ্ধার করতে পারেন, যা নিম্নলিখিত উদাহরণে প্রদর্শিত হয়েছে।
#include <assert.h>
#include "gni/gni.h"
#include "gni/gni_task.h"
#include "pgs/pgs_play_games.h"
#include "pgs/pgs_players_client.h"
// A callback for a GniTask returned from PgsPlayersClient_getCurrentPlayerId.
void OnGetCurrentPlayerIdCompleteCallback(GniTask *task, void *user_data) {
if (!GniTask_isSuccessful(task)) {
const char *error_message = nullptr;
GniTask_getErrorMessage(task, &error_message);
// Log error message here.
GniString_destroy(error_message);
GniTask_destroy(task);
return;
}
const char *result = nullptr;
PgsPlayersClient_getCurrentPlayerId_getResult(task, &result);
// Log player id here.
GniString_destroy(result);
GniTask_destroy(task);
}
// Gets the player ID.
void GetPlayerId(jobject main_activity) {
static const PgsPlayersClient *players_client =
PgsPlayGames_getPlayersClient(main_activity);
GniTask *get_current_player_id_task =
PgsPlayersClient_getCurrentPlayerId(players_client);
assert(get_current_player_id_task != nullptr);
GniTask_addOnCompleteCallback(get_current_player_id_task,
OnGetCurrentPlayerIdCompleteCallback,
nullptr);
}
// Entry point for our test app
void TestPGSNative(JNIEnv *env, jobject main_activity) {
JavaVM *java_vm;
env->GetJavaVM(&java_vm);
GniCore_init(java_vm, main_activity);
GetPlayerId(main_activity);
}
সাইন-ইন প্রম্পট পুনরায় চালু করুন
যদি কোনও খেলোয়াড় আপনার গেমটি চালু হওয়ার সময় স্বয়ংক্রিয়ভাবে প্রদর্শিত প্রাথমিক Play Games Services সাইন-ইন প্রম্পট প্রত্যাখ্যান করে, তাহলে তারা গেম সেশনের সময় তাদের মন পরিবর্তন করতে পারে। আপনি PgsGamesSignInClient_signIn এ কল করে সাইন-ইন প্রম্পটটি পুনরায় চালু করতে পারেন, যতক্ষণ না কোনও খেলোয়াড় বর্তমানে প্রমাণিত না হয়।
গেম সার্ভার অনুমোদন
একবার একজন খেলোয়াড় সফলভাবে Play Games Services-এ প্রমাণীকরণ করার পর, আপনার গেম ক্লায়েন্ট একটি সার্ভার অনুমোদন কোডের জন্য অনুরোধ করতে পারে যা আপনার ব্যাকএন্ড গেম সার্ভার Play Games Services-এর সাথে নিরাপদে যোগাযোগ করতে ব্যবহার করতে পারে। এটি আপনার গেম সার্ভারকে প্রমাণীকরণকৃত খেলোয়াড়ের জন্য ডেটা পুনরুদ্ধার, আপডেট এবং সঞ্চয় করতে দেয়। আপনি PgsGamesSignInClient_requestServerSideAccess ফাংশনে কল করে সার্ভার অনুমোদন কোডটি পুনরুদ্ধার করতে পারেন।
আরও তথ্যের জন্য, সার্ভার অ্যাক্সেস নির্দেশিকা দেখুন।