C++ के लिए Play की गेम सेवाओं का इस्तेमाल शुरू करें

Google Play गेम सेवाएं C++ SDK टूल, Google Play गेम के साथ इस्तेमाल करने के लिए C++ API उपलब्ध कराते हैं यह सिर्फ़ उन डेवलपर के लिए है जिनके पास C++ इस्तेमाल करने की सुविधा पहले से मौजूद है लॉन्च कर सकते हैं.

फ़िलहाल, SDK टूल इन सेवाओं को लागू करता है:

  • अनुमति देना
  • उपलब्धियां
  • लीडरबोर्ड
  • इवेंट
  • सेव किए गए गेम
  • आस-पास के कनेक्शन (सिर्फ़ Android पर)
  • खिलाड़ी के आंकड़े

कॉन्सेप्ट

बड़े लेवल पर, SDK टूल का इस्तेमाल करने के लिए यह तरीका अपनाएं:

  1. Android के लिए प्लैटफ़ॉर्म कॉन्फ़िगरेशन सेट अप करें.
  2. GameServices को कॉन्फ़िगर करने और बनाने के लिए, GameServices::Builder का इस्तेमाल करें ऑब्जेक्ट है. GameServices ऑब्जेक्ट, साइन इन करने की कोशिश अपने-आप करता है और वापस आ जाता है OnAuthActionFinished() कॉलबैक से नतीजा. नतीजे पर ध्यान दें कॉलबैक से लौटाया जाता है. अगर अपने-आप साइन-इन होने की कोशिश सफल नहीं होती, तो आपके पास लोगों को साइन इन करने की सुविधा देने वाला बटन दिखेगा.
  3. OnAuthActionFinished() नतीजा मिलने के बाद, इसका इस्तेमाल किया जा सकता है GameServices ऑब्जेक्ट और उसके चाइल्ड मैनेजर, Play की गेम सेवाओं से जुड़े कॉल कर सकते हैं, शामिल हैं:

    • साइन इन करें (अनुमति न मिलने के बाद): StartAuthorizationUI()
    • उपलब्धियां अनलॉक करें: Achievements().Unlock()
    • पहले से मौजूद यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके उपलब्धियां दिखाएं: Achievements().ShowAllUI()
    • सबसे ज़्यादा स्कोर सबमिट करें: Leaderboards().SubmitScore()
    • साइन आउट करें: SignOut()
  4. GameServices ऑब्जेक्ट का इस्तेमाल करने के बाद, उसे रीसेट करें या मिटा दें.

ज़्यादा जानकारी के साथ:

  1. प्लैटफ़ॉर्म कॉन्फ़िगरेशन शुरू करना: यह एक ऐसा ऑब्जेक्ट है जिसमें यह शामिल होता है प्लैटफ़ॉर्म के हिसाब से, शुरू करने की जानकारी. Android पर, प्लैटफ़ॉर्म के कॉन्फ़िगरेशन में Java वीएम और मौजूदा Activity का पॉइंटर:

    // In android_main(), create a platform configuration
    // and bind the object activity.
    // Alternately, attach the activity in JNI_Onload().
    gpg::AndroidPlatformConfiguration platform_configuration;
    platform_configuration.SetActivity(state->activity->clazz);
    
  2. GameServices ऑब्जेक्ट बनाएं: यह ऑब्जेक्ट, इसके लिए मुख्य एंट्री पॉइंट है Google Play की गेम सेवाओं की सुविधा. GameServices इंस्टेंस बनाया गया GameServices::Builder के साथ.

    लागू करने के ज़्यादातर तरीकों में, दिया गया GameServices ऑब्जेक्ट तब तक बना रहेगा, जब तक आपका C एनवायरमेंट सही तरीके से काम करता है; आपको उसे फिर से शुरू करने की ज़रूरत नहीं है, Android Activity रुक जाता है और फिर से चालू हो जाता है.

    // Creates a GameServices object that has lambda callbacks.
    game_services_ = gpg::GameServices::Builder()
            .SetDefaultOnLog(gpg::LogLevel::VERBOSE)
            .SetOnAuthActionStarted([started_callback](gpg::AuthOperation op) {
                is_auth_in_progress_ = true;
                started_callback(op);
            })
            .SetOnAuthActionFinished([finished_callback](gpg::AuthOperation op,
                                                         gpg::AuthStatus status) {
                LOGI("Sign in finished with a result of %d", status);
                is_auth_in_progress_ = false;
                finished_callback(op, status);
            })
            .Create(pc);
    
  3. अपने GameServices ऑब्जेक्ट को मैनेज करने के लिए, Manager क्लास का इस्तेमाल करें. मैनेजर को GameServices इंस्टेंस और ग्रुप से जुड़े फ़ंक्शन से ऐक्सेस किया जाता है हैं बेमिसाल. इनके उदाहरण इनमें उपलब्धि और लीडरबोर्ड मैनेजर शामिल हैं. उनमें उपयोगकर्ता को कोई भी दिखाई नहीं दे खुद को बताता है. मैनेजर को रेफ़रंस के तौर पर लौटाया जाता है और GameServices इंस्टेंस अपनी लाइफ़साइकल कंट्रोल करता है. आपके क्लाइंट को अपनी के तौर पर जोड़ें. इसके बजाय, आपके क्लाइंट को GameServices इंस्टेंस.

    मैनेजर, नहीं बदले जा सकने वाले वैल्यू टाइप के ऑब्जेक्ट के ज़रिए डेटा दिखाते हैं. ये वैल्यू उस समय मौजूद डेटा का एक जैसा व्यू दिखाते हैं जब क्वेरी की गई थी.

    // Submit a high score
    game_services_->Leaderboards().SubmitScore(leaderboard_id, score);
    
    // Show the default Achievements UI
    game_services_->Achievements().ShowAllUI();
    
  4. GameServices ऑब्जेक्ट का इस्तेमाल करने के बाद, स्टोरेज खाली करें reset() को अपने मालिकाना हक वाले unique_ptr पर कॉल करना या unique_ptr के दायरे से बाहर जाने पर, वह अपने-आप मिट जाता है.

थ्रेडिंग मॉडल

जब तक अलग से न बताया जाए, तब तक सभी GameServices और मैनेजर तरीकों में थ्रेड-सुरक्षित, एसिंक्रोनस लागू करने की प्रक्रिया. उन्हें बिना किसी रुकावट के किसी भी थ्रेड पर कॉल किया जा सकता है करने की ज़रूरत होती है. साथ ही, जो उनके बोले जाने पर भी लागू होता है उसी क्रम में लागू होगा ऑर्डर.

ऐक्सेसर के तरीके (जो रीड स्टेट वाले होते हैं), दो मुख्य वैरिएंट में आते हैं. पहला इस तरह का तरीका (FetchProperty() जैसे नामों के साथ), इसके नतीजे एसिंक्रोनस रूप से उपलब्ध कराता है दिए गए कॉलबैक पर; दूसरा (इन नामों के साथ FetchPropertyBlocking()) अपने-आप मिलने वाले नतीजे, कॉल करने के लिए सिंक करते हैं थ्रेड.

// Blocking callback
gpg::AchievementManager::FetchAllResponse fetchResponse =
        game_services_->Achievements().FetchAllBlocking(std::chrono::milliseconds(1000));

// Non-blocking callback
game_services_->Achievements().FetchAll(gpg::DataSource::CACHE_OR_NETWORK,
    [] (gpg::AchievementManager::FetchAllResponse response) {
    LogI("Achievement response status: %d", response.status);});

सभी उपयोगकर्ता कॉलबैक, खास तौर पर बनाए गए कॉलबैक थ्रेड पर शुरू किए जाते हैं. इस थ्रेड में यह "मुख्य थ्रेड" के किसी भी प्लैटफ़ॉर्म कॉन्सेप्ट से अलग हो सकता है या "यूज़र इंटरफ़ेस (यूआई)" थ्रेड". आपको यह भी पक्का करने की कोशिश करनी चाहिए कि उपयोगकर्ता कॉलबैक तेज़ी से काम करें; बंद हो चुका कॉलबैक थ्रेड उपयोगकर्ता को दिखाई देने वाली समस्याएं हो सकती हैं (उदाहरण के लिए, साइन-आउट पूरा करने में देरी करना अनुरोध).

प्लैटफ़ॉर्म से जुड़ी खास जानकारी

Android पर Play Games C++ SDK टूल का इस्तेमाल शुरू करने के लिए, क्विकस्टार्ट गाइड.

इसके बारे में और पढ़ें

Google Play Games में दिए गए, क्लास से जुड़े दस्तावेज़ ज़रूर पढ़ें ज़्यादा जानकारी के लिए, C++ SDK टूल का इस्तेमाल करें. साथ ही, सैंपल जो SDK टूल इस्तेमाल करने का तरीका दिखाते हैं.

अगर आपका गेम, बैकएंड सर्वर का इस्तेमाल करता है, तो यह देखें Google Play की गेम सेवाओं के लिए सर्वर-साइड ऐक्सेस चालू करना.