এই নির্দেশিকা বর্ণনা করে যে কীভাবে প্লে গেম পরিষেবা v2 নেটিভ SDK ব্যবহার করতে এবং সাইন-ইন পরিষেবা সংহত করতে একটি নেটিভ C বা C++ গেম প্রকল্প সেট আপ করতে হয়। আপনার গেমে অন্যান্য প্লে গেম পরিষেবাগুলির বৈশিষ্ট্যগুলিকে সংহত করতে এবং আপনার ব্যাকএন্ড গেম সার্ভারে প্লে গেম পরিষেবাগুলিকে সংহত করতে সাইন-ইন ইন্টিগ্রেশন প্রয়োজন৷
সমর্থিত বৈশিষ্ট্য
প্লে গেম পরিষেবা v2 নেটিভ SDK বিটাতে রয়েছে এবং শুধুমাত্র সাইন-ইন পরিষেবা সমর্থন করে৷ এটি এখনও অন্যান্য প্লে গেম পরিষেবার বৈশিষ্ট্যগুলিকে সমর্থন করে না৷
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
ফাইলে নিম্নলিখিতগুলি করুন:
নিশ্চিত করুন যে prefab বিল্ড বৈশিষ্ট্য সক্রিয় আছে.
প্লে গেম পরিষেবা v2 নেটিভ 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
ফাইলে, আপনার প্লে গেম পরিষেবা প্রকল্প আইডি সংজ্ঞায়িত করুন। আপনি ফাইলে নিম্নলিখিত লাইন যোগ করে তা করতে পারেন:<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 পরিষেবার সাইন-ইন প্রম্পট প্রত্যাখ্যান করে যা আপনার গেম চালু হওয়ার সময় স্বয়ংক্রিয়ভাবে প্রদর্শিত হয়, তাহলে গেম সেশনের সময় তারা তাদের মন পরিবর্তন করতে পারে। আপনি PgsGamesSignInClient_signIn
কল করে সাইন-ইন প্রম্পটটি পুনরায় চালু করতে পারেন যতক্ষণ না কোনো খেলোয়াড় বর্তমানে সাইন ইন করেন।
গেম সার্ভার অনুমোদন
একবার একজন খেলোয়াড় সফলভাবে প্লে গেম পরিষেবাগুলিতে সাইন ইন করলে, আপনার গেম ক্লায়েন্ট একটি সার্ভার অনুমোদন কোডের অনুরোধ করতে পারে যা আপনার ব্যাকএন্ড গেম সার্ভার নিরাপদে প্লে গেম পরিষেবাগুলির সাথে যোগাযোগ করতে ব্যবহার করতে পারে৷ এটি আপনার গেম সার্ভারকে সাইন ইন করা প্লেয়ারের জন্য ডেটা পুনরুদ্ধার, আপডেট এবং সঞ্চয় করার অনুমতি দেয়৷ আপনি PgsGamesSignInClient_requestServerSideAccess
ফাংশনে কল করে সার্ভার অনুমোদন কোড পুনরুদ্ধার করতে পারেন।
আরও তথ্যের জন্য, সার্ভার অ্যাক্সেস গাইড দেখুন।