Google Play गेम सेवाएं C++ SDK टूल, Google Play गेम के साथ इस्तेमाल करने के लिए C++ API उपलब्ध कराते हैं यह सिर्फ़ उन डेवलपर के लिए है जिनके पास C++ इस्तेमाल करने की सुविधा पहले से मौजूद है लॉन्च कर सकते हैं.
फ़िलहाल, SDK टूल इन सेवाओं को लागू करता है:
- अनुमति देना
- उपलब्धियां
- लीडरबोर्ड
- इवेंट
- सेव किए गए गेम
- आस-पास के कनेक्शन (सिर्फ़ Android पर)
- खिलाड़ी के आंकड़े
कॉन्सेप्ट
बड़े लेवल पर, SDK टूल का इस्तेमाल करने के लिए यह तरीका अपनाएं:
- Android के लिए प्लैटफ़ॉर्म कॉन्फ़िगरेशन सेट अप करें.
GameServices
को कॉन्फ़िगर करने और बनाने के लिए,GameServices::Builder
का इस्तेमाल करें ऑब्जेक्ट है.GameServices
ऑब्जेक्ट, साइन इन करने की कोशिश अपने-आप करता है और वापस आ जाता हैOnAuthActionFinished()
कॉलबैक से नतीजा. नतीजे पर ध्यान दें कॉलबैक से लौटाया जाता है. अगर अपने-आप साइन-इन होने की कोशिश सफल नहीं होती, तो आपके पास लोगों को साइन इन करने की सुविधा देने वाला बटन दिखेगा.OnAuthActionFinished()
नतीजा मिलने के बाद, इसका इस्तेमाल किया जा सकता हैGameServices
ऑब्जेक्ट और उसके चाइल्ड मैनेजर, Play की गेम सेवाओं से जुड़े कॉल कर सकते हैं, शामिल हैं:- साइन इन करें (अनुमति न मिलने के बाद):
StartAuthorizationUI()
- उपलब्धियां अनलॉक करें:
Achievements().Unlock()
- पहले से मौजूद यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके उपलब्धियां दिखाएं:
Achievements().ShowAllUI()
- सबसे ज़्यादा स्कोर सबमिट करें:
Leaderboards().SubmitScore()
- साइन आउट करें:
SignOut()
- साइन इन करें (अनुमति न मिलने के बाद):
GameServices
ऑब्जेक्ट का इस्तेमाल करने के बाद, उसे रीसेट करें या मिटा दें.
ज़्यादा जानकारी के साथ:
प्लैटफ़ॉर्म कॉन्फ़िगरेशन शुरू करना: यह एक ऐसा ऑब्जेक्ट है जिसमें यह शामिल होता है प्लैटफ़ॉर्म के हिसाब से, शुरू करने की जानकारी. 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);
GameServices
ऑब्जेक्ट बनाएं: यह ऑब्जेक्ट, इसके लिए मुख्य एंट्री पॉइंट है Google Play की गेम सेवाओं की सुविधा.GameServices
इंस्टेंस बनाया गयाGameServices::Builder
के साथ.लागू करने के ज़्यादातर तरीकों में, दिया गया
GameServices
ऑब्जेक्ट तब तक बना रहेगा, जब तक आपका C एनवायरमेंट सही तरीके से काम करता है; आपको उसे फिर से शुरू करने की ज़रूरत नहीं है, AndroidActivity
रुक जाता है और फिर से चालू हो जाता है.// 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);
अपने
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();
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 की गेम सेवाओं के लिए सर्वर-साइड ऐक्सेस चालू करना.