() 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:



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.



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



Piliin ang Single Leaderboard sa sunod na screen.



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.



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.



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.






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.



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.



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:



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!



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:



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.



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.