लीडरबोर्ड

इस गाइड में, Play की गेम सेवाओं के c++ SDK के लीडरबोर्ड एपीआई का इस्तेमाल करने का तरीका बताया गया है. इनकी मदद से, विज़ुअल लीडरबोर्ड बनाए जा सकते हैं, किसी खिलाड़ी के स्कोर को रिकॉर्ड किया जा सकता है, और उस स्कोर की तुलना खिलाड़ी के पिछले गेम सेशन के स्कोर से की जा सकती है. इन एपीआई को LeaderboardsClient में देखा जा सकता है.

शुरू करने से पहले

अगर आपने अब तक ऐसा नहीं किया है, तो लीडरबोर्ड से जुड़े गेम के कॉन्सेप्ट देखें. इससे आपको मदद मिल सकती है.

लीडरबोर्ड एपीआई का इस्तेमाल करके कोडिंग शुरू करने से पहले:

  • Google Play services SDK टूल सेट अप करें गाइड में दिए गए निर्देशों का पालन करके, Google Play की गेम सेवाओं का इस्तेमाल करने के लिए, अपना ऐप्लिकेशन इंस्टॉल और सेट अप करें.

  • उन लीडरबोर्ड को तय करें जिन्हें आपको अपने गेम में दिखाना या अपडेट करना है. इसके लिए, Google Play Console की गाइड में दिए गए निर्देशों का पालन करें.

  • क्वालिटी चेकलिस्ट में बताए गए सुझावों के बारे में जानें.

लीडरबोर्ड क्लाइंट पाना

लीडरबोर्ड एपीआई का इस्तेमाल शुरू करने के लिए, आपके गेम को सबसे पहले 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);

यह फ़ंक्शन, यूज़र इंटरफ़ेस (यूआई) दिखाता है. activity ऑब्जेक्ट, यूज़र इंटरफ़ेस (यूआई) को दिखाने के लिए कॉन्टेक्स्ट उपलब्ध कराता है.