অর্জন

এই ডকুমেন্টটিতে বর্ণনা করা হয়েছে কিভাবে C++ গেমে গুগল প্লে গেমস সার্ভিসেস অ্যাচিভমেন্ট ব্যবহার করতে হয়। এই ডকুমেন্টটি ধরে নেয় যে আপনি 'গুগল প্লে গেমস সার্ভিসেস সেট আপ করুন' অংশে বর্ণিত পদ্ধতি অনুযায়ী আপনার প্রজেক্ট সেট আপ করেছেন। আপনি PgsAchievementsClient এ অ্যাচিভমেন্ট এপিআইটি খুঁজে পাবেন।

শুরু করার আগে

যদি আপনি ইতিমধ্যে তা না করে থাকেন, তবে অ্যাচিভমেন্ট গেমের ধারণাগুলো পর্যালোচনা করা আপনার জন্য সহায়ক হতে পারে।

অ্যাচিভমেন্টস এপিআই ব্যবহার করে কোডিং শুরু করার আগে:

একটি অ্যাচিভমেন্ট ক্লায়েন্ট পান

অ্যাচিভমেন্টস এপিআই ব্যবহার শুরু করতে, আপনার গেমকে প্রথমে একটি PgsAchievementsClient অবজেক্ট পেতে হবে। আপনি PgsAchievementsClient_create মেথডটি কল করে এবং অ্যাক্টিভিটিটি পাস করে এটি করতে পারেন।

কৃতিত্বগুলি আনলক করুন

কোনো অ্যাচিভমেন্ট আনলক করতে, PgsAchievementsClient_unlock মেথডটি কল করুন এবং PgsAchievementsClient ও অ্যাচিভমেন্ট আইডি পাস করুন।

নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে আপনার অ্যাপ অ্যাচিভমেন্ট আনলক করতে পারে:

// Example Usage
void TriggerUnlock(PgsGamesClient* gamesClient) {
    // You must obtain the achievements client from the main games client
    PgsAchievementsClient* achievementsClient = PgsGamesClient_getAchievementsClient(gamesClient);

    // Replace with your actual Achievement ID from the Play Console
    const char* MY_ACHIEVEMENT_ID = "CgkI...sQw";

    UnlockAchievement(achievementsClient, MY_ACHIEVEMENT_ID);
}

যদি অ্যাচিভমেন্টটি ইনক্রিমেন্টাল ধরনের হয় (অর্থাৎ, এটি আনলক করতে কয়েকটি ধাপের প্রয়োজন হয়), তাহলে তার পরিবর্তে PgsAchievementsClient_increment কল করুন।

নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে আপনার অ্যাপ খেলোয়াড়ের কৃতিত্ব বাড়াতে পারে:

void IncrementMyAchievement(PgsAchievementsClient* client,
     const char* achievementId, uint32_t steps) {
    if (client == nullptr) {
        return;
    }

    // Call the API
    // Parameters typically include:
    // 1. Client handle
    // 2. Achievement ID (string)
    // 3. Number of steps to increment by (For example, 1)
    // 4. Callback function
    // 5. User context (passed to callback)
    PgsAchievementsClient_increment(
        client,
        achievementId,
        steps,
        OnIncrementCallback,
        (void*)achievementId // Pass ID as context so the callback knows which one finished
    );
}

//  Example Usage in Game Loop
void OnEnemyDefeated(PgsGamesClient* gamesClient) {
    // Get the achievements client handle
    PgsAchievementsClient* achievementsClient = PgsGamesClient_getAchievementsClient(gamesClient);

    // ID from Google Play Console
    const char* ACH_ENEMY_KILLER = "CgkI...xyz";

    // Increment by 1 step
    IncrementMyAchievement(achievementsClient, ACH_ENEMY_KILLER, 1);
}

অ্যাচিভমেন্টটি আনলক করার জন্য আপনাকে অতিরিক্ত কোনো কোড লিখতে হবে না; প্রয়োজনীয় সংখ্যক ধাপ সম্পন্ন হলেই গুগল প্লে গেমস সার্ভিসেস স্বয়ংক্রিয়ভাবে অ্যাচিভমেন্টটি আনলক করে দেয়।

একটি ভালো অভ্যাস হলো strings.xml ফাইলে অ্যাচিভমেন্ট আইডিগুলো নির্ধারণ করে দেওয়া, যাতে আপনার গেম রিসোর্স আইডি দ্বারা অ্যাচিভমেন্টগুলোকে রেফারেন্স করতে পারে। অ্যাচিভমেন্ট আপডেট এবং লোড করার জন্য কল করার সময়, আপনার API কোটা অতিক্রম করা এড়াতে এই সেরা অনুশীলনগুলোও অনুসরণ করতে ভুলবেন না।

কৃতিত্ব প্রদর্শন করুন

কোনো খেলোয়াড়ের কৃতিত্ব দেখানোর জন্য, PgsAchievementsClient_showAchievementsUI কল করুন।

নিম্নলিখিত কোড স্নিপেটটি দেখায় যে কীভাবে আপনার অ্যাপ ডিফল্ট অ্যাচিভমেন্ট ইউজার ইন্টারফেসটি প্রদর্শন করতে পারে।

void OnShowAchievementsUICallback(void* context, PgsError error) {
    if (error == PgsError_Success) {
        // The UI was displayed and closed successfully by the user.
        // You might resume your game loop here if it was paused.
    } else {
        // Handle error (For example,, user not signed in, UI failed to load).
    }
}

// Function to trigger the Achievements UI
void ShowMyAchievements(PgsAchievementsClient* achievementsClient) {
    if (achievementsClient == nullptr) {
        // Log error: Client not initialized
        return;
    }

    // Call the API
    // Note: The specific arguments often include the client, a callback, and user_data.
    // Some versions might require the Android Activity or a Request Code as well.
    PgsAchievementsClient_showAchievementsUI(
        achievementsClient,
        OnShowAchievementsUICallback, // Callback function
        nullptr                       // Optional user data (context) passed to callback
    );
}

নিচের ছবিতে ডিফল্ট অ্যাচিভমেন্ট UI-এর একটি উদাহরণ দেখানো হয়েছে:

ডিফল্ট অ্যাচিভমেন্ট UI-এর উদাহরণ
ডিফল্ট অ্যাচিভমেন্ট ইউআই-এর একটি উদাহরণ।