এই নির্দেশিকাটি আপনাকে দেখাবে কীভাবে প্লে গেমস সার্ভিসেস সি++ এসডিকে লিডারবোর্ডস এপিআই ব্যবহার করে ভিজ্যুয়াল লিডারবোর্ড তৈরি করতে, একজন খেলোয়াড়ের স্কোর রেকর্ড করতে এবং পূর্ববর্তী গেম সেশনের স্কোরের সাথে সেই স্কোর তুলনা করতে হয়। এপিআইগুলো LeaderboardsClient এ পাওয়া যাবে।
শুরু করার আগে
যদি আপনি ইতিমধ্যে তা না করে থাকেন, তাহলে লিডারবোর্ড ও গেমের ধারণাগুলো পর্যালোচনা করা আপনার জন্য সহায়ক হতে পারে।
লিডারবোর্ড এপিআই ব্যবহার করে কোডিং শুরু করার আগে:
Google Play Games Services ব্যবহার করার জন্য আপনার অ্যাপ ইনস্টল ও সেট আপ করতে 'Set Up Google Play services SDK' গাইডে দেওয়া নির্দেশাবলী অনুসরণ করুন।
গুগল প্লে কনসোল গাইডের নির্দেশনা অনুসরণ করে আপনার গেমে যে লিডারবোর্ডগুলো প্রদর্শন বা আপডেট করতে চান, তা নির্ধারণ করুন।
গুণমান চেকলিস্টে বর্ণিত সুপারিশগুলো ভালোভাবে জেনে নিন।
লিডারবোর্ড ক্লায়েন্টটি নিন
লিডারবোর্ড এপিআই ব্যবহার শুরু করতে, আপনার গেমকে প্রথমে একটি LeaderboardsClient অবজেক্ট পেতে হবে। আপনি PgsLeaderboardsClient_create() মেথডটি কল করে এবং অ্যাক্টিভিটিটি পাস করে এটি করতে পারেন।
খেলোয়াড়ের স্কোর আপডেট করুন
যখন খেলোয়াড়ের স্কোর পরিবর্তিত হয় (উদাহরণস্বরূপ, যখন খেলোয়াড় খেলাটি শেষ করে), তখন আপনার গেমটি PgsLeaderboardsClient_submitScoreImmediate ফাংশনটি কল করার মাধ্যমে লিডারবোর্ডে তাদের স্কোর আপডেট করতে পারে। আপনাকে লিডারবোর্ড আইডি, মূল স্কোরের মান, একটি ঐচ্ছিক স্কোর ট্যাগ এবং একটি কলব্যাক ফাংশন পাস করতে হবে।
// Callback function to handle the result of submitting the score void OnScoreSubmitted(PgsStatusCode status_code, PgsScoreSubmissionData* score_submission_data, void* user_data) { if (status_code == PGS_STATUS_SUCCESS) { // Score submitted successfully // You can inspect score_submission_data for details // Remember to release the data when done: PgsScoreSubmissionData_Release(score_submission_data); } else { // Handle error } } // Function to submit the score void SubmitScore(PgsLeaderboardsClient* client, const char* leaderboard_id, int64_t score) { const char* score_tag = NULL; // Optional tag PgsLeaderboardsClient_submitScoreImmediate( client, leaderboard_id, score, score_tag, OnScoreSubmitted, NULL // user_data - optional context pointer ); } // Example usage: // Assuming 'my_leaderboard_id' is defined elsewhere, e.g., fetched from resources // SubmitScore(leaderboards_client, my_leaderboard_id, 1337);
একটি ভালো অভ্যাস হলো আপনার C++ কোডের মধ্যে লিডারবোর্ড আইডিগুলোকে কনস্ট্যান্ট বা রিসোর্স হিসেবে পরিচালনা করা।
লিডারবোর্ড প্রদর্শন করুন
কোনো নির্দিষ্ট লিডারবোর্ডের জন্য ডিফল্ট ইউজার ইন্টারফেস প্রদর্শন করতে, PgsLeaderboardsClient_showLeaderboardUI ফাংশনটি কল করুন। এই ফাংশনটির জন্য ক্লায়েন্ট হ্যান্ডেল, অ্যাক্টিভিটি, লিডারবোর্ড আইডি, টাইম স্প্যান ও কালেকশন এবং একটি কলব্যাক প্রয়োজন।
// Callback function to handle the result of showing the UI void OnShowLeaderboardUI(PgsStatusCode status_code, bool success, void* user_data) { if (status_code == PGS_STATUS_SUCCESS && success) { // UI was shown successfully } else { // Handle error or failure to show UI } } // Function to show a specific leaderboard UI void ShowLeaderboard(PgsLeaderboardsClient* client, jobject activity, const char* leaderboard_id) { PgsLeaderboardsClient_showLeaderboardUI( client, activity, leaderboard_id, PGS_LEADERBOARD_TIME_SPAN_ALL_TIME, // Or PGS_LEADERBOARD_TIME_SPAN_DAILY, PGS_LEADERBOARD_TIME_SPAN_WEEKLY PGS_LEADERBOARD_COLLECTION_PUBLIC, // Or PGS_LEADERBOARD_COLLECTION_FRIENDS OnShowLeaderboardUI, NULL // user_data - optional context pointer ); } // Example usage: // ShowLeaderboard(leaderboards_client, android_activity, my_leaderboard_id);
এই ফাংশনটি UI প্রদর্শন করে। activity অবজেক্টটি UI প্রদর্শনের জন্য প্রেক্ষাপট প্রদান করে।