Hindi (हिंदी) translation by Satyam Sh. (you can also view the original English article)
परिचय
खेल केंद्र (गेम सेन्टर) ऐप्पल (Apple) का सोशल गेमिंग नेटवर्क है। इससे उपयोगकर्ताओं को लीडरबोर्ड पर अपने उच्च स्कोर ट्रैक करने, उपलब्धियों की तुलना करने, खेल खेलने के लिए मित्रों को आमंत्रित करने और ऑटो-मिलान (auto-matching) के माध्यम से एक मल्टीप्लेयर गेम प्रारंभ करने में सक्षम बनाता है। इसलिए यदि आपने एक आईओएस (iOS) गेम बनाया है और उपयोगकर्ताओं को अपने स्कोर को गेम सेंटर लीडरबोर्ड पर पोस्ट करने में सक्षम करना चाहते हैं, तो यह आपके लिए सही ट्यूटोरियल है!
एप्लिकेशन और गेम केंद्र (गेम सेन्टर) के बारे में अधिक जानकारी के लिए, एप्पल डेवलपर पृष्ठ (Apple Developer page) पर जाएं।
Xcode प्रोजेक्ट
इस ट्यूटोरियल के लिए, मैंने एक बुनियादी Xcode प्रोजेक्ट बनाया है जिसे आप GitHub से डाउनलोड कर सकते हैं। मैं iTunes Connect पर लीडरबोर्ड बनाने के लिए सभी आवश्यक कदमों की व्याख्या करूँगा और इसके लिए एक स्कोर जमा करने के लिए आवश्यक कोड भी, साथ ही एप के भीतर से लीडरबोर्ड खोलने के लिए एक बटन भी।
ऐप की स्टोरीबोर्ड ऐसे दिखता है:



इस प्रोजेक्ट में लाल टेक्स्ट वाला एक यूआईलेबल (UILabel) है जिसे मैंने scoreLabel
कहा है और कुछ यूआईबट्न्स (UIButtons)। लाल एक अंक के लिए 10 अंक जोड़ देगा और उसे गेम सेंटर लीडरबोर्ड पर जमा कर देगा, और नीले रंग में GKGameCenterViewController खोलेगा और लीडरबोर्ड दिखाएगा।
सबसे पहली बात यह है कि, Xcode में क्षमताओं (Capabilities) टैब में गेम सेंटर को सक्षम (इनैबल) करना है।



उसके बाद आपको अपने ViewController.swift फ़ाइल के शीर्ष पर GameKit आयात (इम्पोर्ट) करना होगा और क्लैस घोषणा में GKGameCenterControllerDelegate
प्रोटोकॉल जोड़ना होगा।
import GameKit class ViewController: UIViewController, GKGameCenterControllerDelegate {
चलो अब कुछ वैरिएबल जोड़ते हैं। आप इस कोड को अपने ViewController
क्लैस में पेस्ट कर सकते हैं:
/* Variables */ var gcEnabled = Bool() // Check if the user has Game Center enabled var gcDefaultLeaderBoard = String() // Check the default leaderboardID var score = 0 // IMPORTANT: replace the red string below with your own Leaderboard ID (the one you've set in iTunes Connect) let LEADERBOARD_ID = "com.score.mygamename"
पहला वैरिएबल इंगित करता है कि आपके पास गेम सेंटर सक्षम (एनेबल) है, और दूसरा बाद में स्थानीय खिलाड़ी प्रमाणीकरण कोड (local player authentication code) द्वारा गेमकिट (GameKit) को डिफ़ॉल्ट लीडरबोर्ड को पहचानने के लिए सक्षम करने के लिए उपयोग किया जाएगा।
score
शुरू में, निश्चित रूप से 0 होगा।
LEADERBOARD_ID
एक String
है जिसे आपको गेम केंद्र (गेम सेन्टर) को अपने लीडरबोर्ड पहचानकर्ता (आइडेन्टफाइअर) के माध्यम से सर्वर पर अपना स्कोर सबमिट करने के लिए सेट करना होगा। वह नाम चुनें जिसे आप चाहते हैं, लेकिन ध्यान रखें कि इसमें वेब-उलट (web-reversed) सिंटैक्स होना चाहिए। यही कारण है कि मैंने इस लीडरबोर्ड को com.score.mygamename
के रूप में पहचाना है, जहां mygamename
को अपने ऐप के नाम से लोअरकेस वर्णों (lowercase characters) में प्रतिस्थापित किया जाना चाहिए, कोई रिक्त स्थान के बग़ैर।
आपके ऐप के आईट्यून्स कनेक्ट पेज में गेम सेंटर को सक्षम करने से पहले, हम मूल कोड को समाप्त करते हैं। इस लाइन को viewDidLoad()
में जोड़ें:
// Call the GC authentication controller authenticateLocalPlayer()
और निम्न फ़ंक्शन को viewDidLoad()
से सही नीचे जोड़ें:
// MARK: - AUTHENTICATE LOCAL PLAYER func authenticateLocalPlayer() { let localPlayer: GKLocalPlayer = GKLocalPlayer.localPlayer() localPlayer.authenticateHandler = {(ViewController, error) -> Void in if((ViewController) != nil) { // 1. Show login if player is not logged in self.present(ViewController!, animated: true, completion: nil) } else if (localPlayer.isAuthenticated) { // 2. Player is already authenticated & logged in, load game center self.gcEnabled = true // Get the default leaderboard ID localPlayer.loadDefaultLeaderboardIdentifier(completionHandler: { (leaderboardIdentifer, error) in if error != nil { print(error) } else { self.gcDefaultLeaderBoard = leaderboardIdentifer! } }) } else { // 3. Game center is not enabled on the users device self.gcEnabled = false print("Local player could not be authenticated!") print(error) } } }
यदि किसी उपयोगकर्ता ने अपने डिवाइस पर सेटिंग से गेम सेंटर में लॉग इन नहीं किया है, तो ऊपर दी गई विधि गेम केंद्र लॉगिन स्क्रीन को दिखाएगी, जैसे ही वो जीसी सर्वर से कनेक्ट करता है। खिलाड़ी के लॉगिन हो जाने के बाद, ऐप को डिफ़ॉल्ट लीडरबोर्ड आईडी मिलता है।
अगली विधि में हम ऐप को LEADERBOARD_ID
स्ट्रिंग लेने देंगे जो आपने पहले बनाया था और इसे गेम सेंटर सर्वर का डिफ़ॉल्ट लीडरबोर्ड आईडी के रूप में पास करेंगे।
// MARK: - ADD 10 POINTS TO THE SCORE AND SUBMIT THE UPDATED SCORE TO GAME CENTER @IBAction func addScoreAndSubmitToGC(_ sender: AnyObject) { // Add 10 points to current score score += 10 scoreLabel.text = "\(score)" // Submit score to GC leaderboard let bestScoreInt = GKScore(leaderboardIdentifier: LEADERBOARD_ID) bestScoreInt.value = Int64(score) GKScore.report([bestScoreInt]) { (error) in if error != nil { print(error!.localizedDescription) } else { print("Best Score submitted to your Leaderboard!") } } }
उपरोक्त कोड वर्तमान अंक में 10 अंक जोड़ता है, इसलिए हर बार जब आप Add Score and Submit To GC बटन क्लिक करते हैं, तो आप देख सकते हैं कि लाल अंक लेबल बदल रहा है, और ऐप आपके जीसी लीडरबोर्ड को उस अपडेट किया हूआ स्कोर को प्रस्तुत करेगा।
आपको गेमकिट प्रतिनिधि विधि (GameKit delegate method) जोड़ने की आवश्यकता है जो जीसी नियंत्रक (GC Controller) को खारिज कर देगा।
// Delegate to dismiss the GC controller func gameCenterViewControllerDidFinish(_ gameCenterViewController: GKGameCenterViewController) { gameCenterViewController.dismiss(animated: true, completion: nil) }
आईट्यून्स कनेक्ट (iTunes Connect) पर अपने लीडरबोर्ड को बनाने से पहले कोडिंग के लिए केवल एक ही तरीका शेष है, जो बटन के लिए ऐक्शन है जो गेम सेंटर ViewController
को खोल देगा।
// MARK: - OPEN GAME CENTER LEADERBOARD @IBAction func checkGCLeaderboard(_ sender: AnyObject) { let gcVC = GKGameCenterViewController() gcVC.gameCenterDelegate = self gcVC.viewState = .leaderboards gcVC.leaderboardIdentifier = LEADERBOARD_ID present(gcVC, animated: true, completion: nil) }
जैसा कि आप ऊपर देख सकते हैं, यह कोड जीसी नियंत्रक (GC Controller) को इन्स्टैन्शिएट कर देता है, उसके प्रतिनिधि (डेलगैट) को उस नियंत्रक को निर्दिष्ट करता है, लीडरबोर्ड दिखाने के लिए नियंत्रक के व्यू स्टेट को सेट करता है, और नियंत्रक (कन्ट्रोलर) को पेश करने से पहले आपके LEADERBOARD_ID
को पास करता है।
अब हम कोडिंग कर चुके हैं, लेकिन आप ऐप अभी तक नहीं चला सकते। यदि आप करते हैं, तो आपको Xcode से एक एरर मिलेगी, क्योंकि आपने अपने ऐप के आईट्यून्स कनेक्ट (iTunes Connect) पेज में अपना लीडरबोर्ड नहीं बनाया है।
आईट्यून्स कनेक्ट (iTunes Connect) पर गेम सेंटर सेट-अप करना
आपने आईट्यून में पहले से ही एक आईओएस ऐप (iOS App) बना लीया होगा, जो आपकी खुद की बंडल आइडेंटिफ़ायर (Bundle Identifier) से कनेक्ट हो। अब अपने ऐप में आईट्यून कनेक्ट डैशबोर्ड से प्रवेश करें और फीचर्ज़ (Features) पर क्लिक करें और फिर गेम सेन्टर (Game Center) पर।
फिर लीडरबोर्ड के आगे + आइकन पर क्लिक करें।



अगली स्क्रीन पर सिंगल लीडरबोर्ड चुनें।



यहां आपको उस नाम को टाइप करना होगा जो आप अपना लीडरबोर्ड को देना चाहते हैं। नीचे दिए गए स्क्रीनशॉट में, मैंने My Leaderboard Name का उदाहरण एक उदाहरण के रूप में उपयोग किया है। आप अपना को Best Score Leaderboard या कुछ भी जो चाहें कॉल कर सकते हैं।
लीडरबोर्ड आईडी (Leaderboard ID) फ़ील्ड में, LEADERBOARD_ID
की स्ट्रिंग पेस्ट करें जो हमने पहले Xcode प्रोजेक्ट में बनाई थी।
चूंकि स्कोर एक संख्या है, इसलिए स्कोर स्वरूप प्रकार (Score Format Type) फ़ील्ड में पूर्णांक (Integer) चुनें। आप सबमिशन प्रकार (Submission Type) और सॉर्ट क्रम (Sort Order) के लिए इच्छित विकल्प चुन सकते हैं। Score Range (Optional) को रिक्त छोड़ें।
अंत में, भाषा जोड़ें (Add Language) बटन पर क्लिक करें।



पॉपअप विंडो में, आपको अपने लीडरबोर्ड की भाषा चुननी होगी। डिफ़ॉल्ट हमेशा अंग्रेज़ी होता है। अपने लीडरबोर्ड का अंग्रेजी नाम फिर से टाइप करें, और एक स्कोर प्रारूप (Score Format) चुनें (मैंने अंकों के समूहों को अलग करने के लिए अल्पविराम चुना)।
Score Format Suffix फ़ील्ड वैकल्पिक हैं; आप दोनों क्षेत्रों को रिक्त छोड़ सकते हैं या वांछित प्रत्यय (suffix) टाइप कर सकते हैं। उदाहरण के लिए, यदि आपके गेम में स्कोर पॉइन्ट है, तो आप बहुवचन के लिए "point " और "points" टाइप कर सकते हैं, इसलिए गेम सेंटर नियंत्रक आपके लीडरबोर्ड पर प्रदर्शित स्कोर के अंत में उस प्रत्यय को जोड़ देगा, जैसे "1 point" या "100 points"।
आप एक आइकन भी जोड़ सकते हैं। छवि एक .jpeg, .jpg, या .png फ़ाइल होना चाहिए जो कि 512x512 या 1024x1024 पिक्सल है, साथ ही कम से कम 72 डीपीआई और पारदर्शी पृष्ठभूमि (transparent background) के बिना आरजीबी रंग स्पैस (RGB color space) में होनी चाहिए। अपनी छवि अपलोड करने के लिए Choose File पर क्लिक करें।
अंत में सेव (Save) पर क्लिक करें, और केवल यही आपको करना है। आप अधिक भाषाओं को जोड़ने के लिए ऊपर दिए गए चरणों को दोहरा सकते हैं-बस चयनित भाषा के अनुसार लीडरबोर्ड नाम टाइप करने के लिए सुनिश्चित करें।



एक बार जब आप एक विंडो जोड़ लेंगे, तो आप अपने लीडरबोर्ड के विवरणों को देख सकते हैं। यदि सबकुछ ठीक है, तो सेव (Save) पर क्लिक करें, और आपको अपने नए लीडरबोर्ड के साथ, फीचर्ज़ पृष्ठ (Features Page) पर पुनः निर्देशित किया जाएगा।






अब यह आपके ऐप के ऐप स्टोर अनुभाग में गेम सेंटर को सक्षम करने का समय है। ऐप स्टोर (App Store) पर क्लिक करें और सबमिशन के लिए तैयार करें (Prepare for Submission) पर।



नीचे स्क्रॉल करें, जब तक कि आप इसके पास एक स्विच के साथ गेम सेन्टर नहीं पाते। इसे सक्षम (Enable) करें, और यह हरा हो जाएगा। फिर लीडरबोर्ड के बगल में स्थित + चिह्न पर क्लिक करें, सूची से अपने लीडरबोर्ड का चयन करें और संपन्न (डन, Done) क्लिक करें।



विन्डो के शीर्ष-दाएं कोने में सेव (Save) पर क्लिक करें, और आप iTunes Connect पर गेम सेन्टर सेट अप कर लेंगे।



अब आप अपने एक्सकोड प्रोजेक्ट पर वापस जा सकते हैं और ऐप को किसी वास्तविक डिवाइस पर या आईओएस सिम्युलेटर पर भी चला सकते हैं। यदि आप पहले से ही गेम सेंटर में लॉग इन नहीं हैं, तो साइन इन कन्ट्रोलर दिखाई देगा। यह, ऐसा कुछ दिखता है:



अपने क्रेडेंशियल के साथ साइन इन करें, और आप ऐप का परीक्षण शुरू कर सकते हैं!
हमारे addScoreAndSubmitToGC()
विधि में, हमने निम्नलिखित print()
कॉल को जोड़ा:
print("Best Score submitted to your Leaderboard!")
इसलिए यदि आप लाल बटन पर टैप करते हैं, तो scoreLabel
"10" प्रदर्शित करेगा, और एक्सकोड कंसोल आपके अपने लीडरबोर्ड पर जमा सर्वश्रेष्ठ स्कोर (Best Score submitted to your Leaderboard) प्रिंट करेगा!



लाल बटन को तीन बार टैप करें, और उसके बाद अपने लीडरबोर्ड को खोलने के लिए नीले रंग को टैप करें और जांच लें कि सबमिट किया गया स्कोर 40 है। आपको ऐसा कुछ देखना चाहिए:



निष्कर्ष
यदि आप पूरी तरह से कार्यात्मक गेम ऐप को, गेम सेंटर में, ऐक्शन में देखना चाहते हैं, तो आप मेरे CodeCanyon गेम टेम्पलेट Four Dots को देख सकते हैं। यह एक न्यूनतम अंतहीन (एन्ड्लस) गेम के लिए एक टेम्पलेट है जो बेस्ट स्कोर बचाता है और गेम सेन्टर में उन्हें सबमिट करता है।



इस तरह के गेम टेम्पलेट्स आपके अगले गेम को त्वरित शुरुआत करने का एक शानदार तरीका है। CodeCanyon में सैकड़ों आईओएस (iOS) गेम टेम्पलेट्स हैं जो आप जल्दी-शुरू डिवेलप्मन्ट के लिए उपयोग कर सकते हैं—और आपको अपने अगले महान गेम को बहुत तेजी से बनाने में मदद मिलेगी!
पढ़ने के लिए धन्यवाद, और मैं अगली बार आपको मिलूंगा! स्विफ्ट और आईओएस (iOS) एप डिवेलप्मन्ट पर हमारे कुछ अन्य ट्यूटोरियल देखें।