Advertisement
  1. Code
  2. iOS SDK

Game Center at Leaderboards para sa iyong iOS App

Scroll to top
Read Time: 10 min

() translation by (you can also view the original English article)

Panimula

Ang Game Center ay social gaming network ng Apple. Dito ay nata-track ng users ang kanilang mataas na puntos sa leaderboard, nakukumpara ang achievements, naaanyayahan ang mga kaibigan na maglaro ng game, at magsimula ng multiplayer game sa pamamagitan ng auto-matching. Kung kaya kung nakagawa ka ng iOS game at gusto mong ang users ay makakapag post ng kanilang puntos sa Game Center leaderboard, ito ang tamang pagtuturo para sa iyo!

Para sa karagdagang impormasyon tungkol sa apps at Game Center, puntahan ang pahina ng Apple Developer.

Ang Xcode Proyekto

Alang-alang sa pagtuturong ito, gumawa kami ng pangunahing Xcode na proyekto na maaari mong i-download mula sa GitHub. Ipapaliwanag ko lahat ng kailangang hakbang para gumawa ng leaderboard sa iTunes Connect at ang kailangang code para maipasa ang puntos dito, kasama ng button para mabuksan ang leaderboard mula sa app.

Narito kung ano ang itsura ng Storyboard ng app:

Demo Xcode projectDemo Xcode projectDemo Xcode project

Ang proyektong ito ay may UILabel na may pulang text na tinatawag kong scoreLabel at ilang UIButtons. Ang pula ay magdadagdag ng 10 puntos sa score at ipapasa ito sa Game Center leaderboard, at ang kulay asul ay magbubukas ng GKGameCenterViewController at ipapakita ang leaderboard na iyon.

Ang unang unang kailangang gawin ay i-enable ang Game Center sa Capabilities tab sa Xcode.

Enable Game Center in the Capabilities tabEnable Game Center in the Capabilities tabEnable Game Center in the Capabilities tab

Pagkatapos ay kailangan mong i-import ang GameKit sa itaas ng iyong ViewController.swift file at ilagay ang GKGameCenterControllerDelegate protocol sa class declaration.

1
import GameKit
2
3
4
class ViewController: UIViewController,
5
GKGameCenterControllerDelegate
6
{

Maglagay tayo ng ilang variables ngayon. Maaari mong i-paste ang code na ito sa iyong ViewController class:

1
/* Variables */
2
var gcEnabled = Bool() // Check if the user has Game Center enabled

3
var gcDefaultLeaderBoard = String() // Check the default leaderboardID

4
    
5
var score = 0
6
    
7
// IMPORTANT: replace the red string below with your own Leaderboard ID (the one you've set in iTunes Connect)

8
let LEADERBOARD_ID = "com.score.mygamename"

Ang unang variable ay ipinapahiwatig kung mayroon kang enabled na Game Center, at ang pangalawa ay gagamitin sa susunod ng local player authentication code para i-enable ang GameKit para matukoy ang default leaderboard.

score ang puntos sa simula ay 0, siyempre.

Ang LEADERBOARD_ID ay String na kailangan mong i-set para maipasa ng Game Center ang iyong puntos sa server sa pamamagitan ng default leaderboard identifier. Pumili ng pangalan na iyong gusto, subalit tandaan na kailangang mayroon itong web-reversed syntax. Kung kaya ay tinukoy ko ang leaderboard na ito bilang com.score.mygamename, kung saan ang mygamename ay dapat mapalitan ng pangalan ng iyong app sa lowercase na characters, ng walang espasyo.

Bago i-enable ang Game Center sa iTunes Connect page ng iyong app, tapusin muna natin ang pangunahing code. Ilagay ang line na ito sa viewDidLoad():

1
 // Call the GC authentication controller

2
authenticateLocalPlayer()

At ilagay ang sumusunod na function sa ibaba ng viewDidLoad():

1
// MARK: - AUTHENTICATE LOCAL PLAYER

2
func authenticateLocalPlayer() {
3
    let localPlayer: GKLocalPlayer = GKLocalPlayer.localPlayer()
4
        
5
    localPlayer.authenticateHandler = {(ViewController, error) -> Void in
6
        if((ViewController) != nil) {
7
            // 1. Show login if player is not logged in

8
            self.present(ViewController!, animated: true, completion: nil)
9
        } else if (localPlayer.isAuthenticated) {
10
            // 2. Player is already authenticated & logged in, load game center

11
            self.gcEnabled = true
12
                
13
            // Get the default leaderboard ID

14
            localPlayer.loadDefaultLeaderboardIdentifier(completionHandler: { (leaderboardIdentifer, error) in
15
                if error != nil { print(error)
16
                } else { self.gcDefaultLeaderBoard = leaderboardIdentifer! }
17
            })
18
            
19
        } else {
20
            // 3. Game center is not enabled on the users device

21
            self.gcEnabled = false
22
            print("Local player could not be authenticated!")
23
            print(error)
24
        }
25
    }
26
}

Kung sakaling ang user ay hindi nag-log sa Game Center mula sa Settings sa kanilang device, ang method sa itaas ay ipapakita ang Game Center login screen sa sandaling makakonekta ito sa GC server. Kapag ang player ay naka log in, kinukuha ng app ang default leaderboard id.

Sa susunod na method gagawin nating ang app ay mag ga-grab ng LEADERBOARD_ID string na iyong ginawa dati at ipasa ito bilang default leaderboard id ng Game Center server.

1
// MARK: - ADD 10 POINTS TO THE SCORE AND SUBMIT THE UPDATED SCORE TO GAME CENTER

2
@IBAction func addScoreAndSubmitToGC(_ sender: AnyObject) {
3
    // Add 10 points to current score

4
    score += 10
5
    scoreLabel.text = "\(score)"
6
7
    // Submit score to GC leaderboard

8
    let bestScoreInt = GKScore(leaderboardIdentifier: LEADERBOARD_ID)
9
    bestScoreInt.value = Int64(score)
10
    GKScore.report([bestScoreInt]) { (error) in
11
        if error != nil {
12
            print(error!.localizedDescription)
13
        } else {
14
            print("Best Score submitted to your Leaderboard!")
15
        }
16
    }
17
}

Ang code sa itaas ay nagdadagdag din ng 10 puntos sa kasalukuyang score, kung kaya sa bawat pag pindot mo ng Add Score at Submit To GC button, makikita mo ang pulang score label na nababago, at ipapasa ng app ang bagong puntos sa iyong GC leaderboard.

Kailangan mo na ngayon maglagay ng GameKit delegate method na magtatanggal ng GC Controller.

1
// Delegate to dismiss the GC controller

2
func gameCenterViewControllerDidFinish(_ gameCenterViewController: GKGameCenterViewController) {
3
    gameCenterViewController.dismiss(animated: true, completion: nil)
4
}

May isa na lang na method na natitira sa code bago gawin ang iyong leaderboard sa iTunes Connect, kung saan ito ay ang aksyon para sa button na magbubukas ng Game Center ViewController.

1
// MARK: - OPEN GAME CENTER LEADERBOARD

2
@IBAction func checkGCLeaderboard(_ sender: AnyObject) {
3
    let gcVC = GKGameCenterViewController()
4
    gcVC.gameCenterDelegate = self
5
    gcVC.viewState = .leaderboards
6
    gcVC.leaderboardIdentifier = LEADERBOARD_ID
7
    present(gcVC, animated: true, completion: nil)
8
}

Sa makikita mo sa itaas, ang code na ito ay isang halimbawa ng GC controller, nagtatalaga ng delegate nito sa controller na iyon, sini-set ang estado ng view ng controller para ipakita ang leaderboards, at ipinapasa ang iyong LEADERBOARD_ID bago ipakita ang controller.

Ngayon ay tapos na tayo sa coding, subalit hindi mo pa mapapagana ang app. Kapag pinagana mo ito, makakatanggap ka ng error mula sa Xcode dahil hindi mo pa nagagawa ang iyong sariling leaderboard sa pahin ng iTunes Connect ng iyong app.

I-set up ang Game Center sa iTunes Connect

Dapat ay nagawa mo na ang iOS app sa iTunes Connect gamit ang iyong sariling Bundle Identifier. Ngayon ipasok ang iyong App mula sa iTune Connect dashboard, at pindutin ang Features at ang Game Center.

Pagkatapos ay pindutin ang + icon kasunod ng Leaderboards

App Features page on iTunes ConnectApp Features page on iTunes ConnectApp Features page on iTunes Connect

Piliin ang Single Leaderboard sa sunod na screen.

Add a leaderboardAdd a leaderboardAdd a leaderboard

Dito ay kailangan mong isulat ang pangalan na gusto mong ilagay sa iyong leaderboard. Sa screenshot sa ibaba, ginamit ko ang My Leaderboard na pangalan bilang halimbawa. Maaari mong tawagin ang sa iyo na Best Score Leaderboard o kahit na anong gusto mo.

Sa Leaderboard ID field, i-paste ang string ng LEADERBOARD_ID na ginawa natin dati sa proyekto ng Xcode.

Dahil ang score ay numero, piliin ang Integer sa Score Format Type field. Maaari mong piliin ang opsyon na gusto mo sa Submission Type at Sort Order. Hayaang ang Score Range (Opsyonal) ay blanko.

Ang panghuli, pindutin ang Add Language button.

Set leaderboards detailsSet leaderboards detailsSet leaderboards details

Sa popup window, kailangan mong piliin ang lengguwahe ng iyong leaderboard.Ang default ay laging Ingles. Ilagay ang Ingles na pangalan ng iyong leaderboard uli, at pumili ng Score Format (Pinili ko ang kuwit para paghiwalayin ang grupo ng digits).

Ang Score Format Suffix fields ay opsyonal: maaari mong hayaang blanko ang parehong fields o ilagay ang gustong suffix. Halimbawa, kung ang iyong game ay may puntos, maaari mong ilagay “point” at “points” para sa maramihan, kung kaya ang Game Center controller ay magdadagdag ng suffix sa dulo ng scores na makikita sa iyong leaderboard, katulad ng “1point” o “100points”.

Maaari ka ring maglagay ng icon. Ang image ay dapat .jpeg, .jpg, o .png file na 512x512 o 1024x1024 pixels, kahit papaano 72 DPI, at sa RGB color space ng walang malinaw na background. Pindutin ang Choose File para ma-upload ang iyong image.

Ang panghuli pindutin ang Save, at tapos ka na. Maaari mong ulitin ang mga hakbang sa itaas para makapaglagay ng maraming lengguwahe-siguraduhin lang na ilagay ang mga pangalan ng leaderboard ayon sa napiling lengguwahe.

Add a leaderboards languageAdd a leaderboards languageAdd a leaderboards language

Kapag nailagay mo na ang window, maaari mong tingnan ang detalye ng iyong leaderboard. Kapag lahat ay maayos, pindutin ang Save, at mapupunta ka sa pahina ng Features, sa iyong bagong leaderboard.

Language added for a new leaderboardLanguage added for a new leaderboardLanguage added for a new leaderboard
Features pageFeatures pageFeatures page

Ngayon ay oras na para i-enable ang Game Center sa App store na bahagi ng iyong app. Pindutin ang App Store at Prepare for Submission.

App Store sectionApp Store sectionApp Store section

Pindutin pababa hanggang sa makita mo ang Game Center na may paglipat sa sunod nito. I-enable ito, at magiging kulay berde ito. Pagkatapos ay pindutin ang + sign kasunod ng Leaderboards, piliin ang iyong leaderboard mula sa listahan, at pindutin ang Done.

Pindutin ang Save sa itaas na kanang bahagi ng window, at matatapos ka na sa pagsi-set up ng Game Center sa iTunes Connect.

Save your app with Game Centers leaderboardSave your app with Game Centers leaderboardSave your app with Game Centers leaderboard

Maaari mo ng balikan ang proyekto ng Xcode at paganahin ang app sa totoong device o kahit na sa iOS Simulator. Kung hindi ka pa naka log in sa Game Center, lalabas ang Sign In controller. Ganito ang itsura nito:

Game Center Sing In screenGame Center Sing In screenGame Center Sing In screen

Mag sign in gamit ang iyong credentials, at maaari mo ng simulang subukan ang app!

Sa ating addScoreAndSubmitToGC() method, dinagdag natin ang mga sumusunod na print() call:

1
print("Best Score submitted to your Leaderboard!")

Kung kaya kung ita-tap mo ang pulang button, ilalabas ng scoreLabel ang “10” at ang Xcode console ay magpi-print ng Best Score na ipinasa sa iyong Leaderboard!

Score updated and submitted to your leaderboardScore updated and submitted to your leaderboardScore updated and submitted to your leaderboard

I-tap ang pulang button ng tatlong beses pa, at i-tap ang kulay asul para buksan ang iyong leaderboard, at tingnan na ang napasang puntos ay 40. Dapat ang makikita mo ay katulad nito:

GC controller for leaderboardsGC controller for leaderboardsGC controller for leaderboards

Konklusyon

Kung gusto mong makita ang paggana ng Game Center na may buong functional game app, maaari mong tingnan ang aking CodeCanyon game template Four Dots. Ito ay template para sa maliit na endless game na nagsi-save ng pinakamagaling na puntos at ipinapasa ang mga ito sa Game Center.

Four Dots iOS app template on CodeCanyonFour Dots iOS app template on CodeCanyonFour Dots iOS app template on CodeCanyon

Ang game templates na katulad nito ay magaling na paraan para makapagsimula sa iyong susunod na game. Ang CodeCanyon ay mayroong libu-libong iOS game templates na maaari mong gamitin para masimulan ang development-kung saan makakagawa ka ng susunod na malupit na game na mas mabilis!

Salamat sa pagbabasa, at kita pa din tayo sa susunod! Tingnan ang ilan sa aming iba pang pagtuturo sa Swift at iOS app development.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.