() translation by (you can also view the original English article)
Вступ
Game Center це соціальна ігрова мережа Apple. Вона дозволяє користувачам відстежувати свої рекорди в таблиці лідерів, порівнювати досягнення, запрошувати друзів в гру і запускати багато користувачів гру через авто-пошук. Тому, якщо ви створили гру iOS і хочете, щоб користувачі могли публікувати свої бали в таблиці лідерів Game Center, це відповідний урок для вас!
Додаткову інформацію про додатки і Game Center можна знайти на сторінці Apple Developer.
Проект Xcode
Для цього уроку я створив базовий проект Xcode, який можна завантажити з GitHub. Я поясню всі необхідні кроки, для створення таблиці лідерів в iTunes Connect і необхідний код для відправлення туди очок, а також кнопку, щоб відкрити таблицю лідерів з програми.
Ось як виглядає Storyboard програми:



Цей проект має UILabel з червоним текстом, який я назвав scoreLabel
і парочка UIButtons. Червоний додасть 10 очок до рекорду і відправить це в таблицю лідерів Game Center, а синя відкриє GKGameCenterViewController і покаже цю таблицю лідерів.
Найперше, що потрібно зробити так це включити Game Center на вкладці Capabilities в Xcode.



Потім ви повинні імпортувати GameKit у верхній частині вашого ViewController.swift і додати протокол GKGameCenterControllerDelegate
оголошення класу.
1 |
import GameKit |
2 |
|
3 |
|
4 |
class ViewController: UIViewController, |
5 |
GKGameCenterControllerDelegate
|
6 |
{
|
Тепер додамо кілька змінних. Ви можете вставити цей код прямо в клас ViewController
:
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" |
Перша змінна вказує, чи включений Game Center, а другий буде використовуватися пізніше за допомогою коду аутентифікації гравця, щоб GameKit зміг визначити таблицю лідерів за замовчуванням.
score
спочатку буде 0, звичайно.
LEADERBOARD_ID
це String
, яку ви повинні встановити, щоб ігровий центр (Game Center) відправив ваші окуляри на сервер за допомогою ідентифікатора таблиця лідерів за замовчуванням. Виберіть назву яке хочете, але майте на увазі, що воно повинно бути назад веб-формату. Ось чому я визначив цю таблицю лідерів як com.score.mygamename
, де mygamename
повинен бути замінений на назву вашого застосування в малих символах без пробілів.
Перш ніж включити Game Center на сторінці iTunes Connect вашого застосування, давайте закінчимо базовий код. Додайте цей рядок в viewDidLoad()
:
1 |
// Call the GC authentication controller
|
2 |
authenticateLocalPlayer() |
И добавьте следующую функцию прямо под 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 |
}
|
У разі, якщо користувач не зайшов в Game Center з налаштувань на своєму пристрої, наведений вище метод відобразить екран входу в Game Center, як тільки він підключиться до сервера GC. Після входу в систему додаток отримує ідентифікатор таблиці лідерів за замовчуванням.
У наступному методі ми змусимо додаток схопити рядок LEADERBOARD_ID
, яку ви створили раніше і передати її як ідентифікатор таблиця лідерів за замовчуванням на сервер Game Center.
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 |
}
|
У наведеному вище коді також додається 10 балів до поточному рахунку, тому кожен раз, коли ви натискаєте кнопку Add Score and Submit To GC, ви побачите, що напис з червоною міткою змінюється і додаток відправить оновлений рахунок в вашу таблицю лідерів GC.
Тепер вам потрібно додати метод делегування GameKit, який завершить контролер GC.
1 |
// Delegate to dismiss the GC controller
|
2 |
func gameCenterViewControllerDidFinish(_ gameCenterViewController: GKGameCenterViewController) { |
3 |
gameCenterViewController.dismiss(animated: true, completion: nil) |
4 |
}
|
Перед створенням вашої таблиці лідерів в iTunes Connect залишився тільки один метод, який є дією на кнопку, яка відкриє 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 |
}
|
Як ви бачите вище, цей код створює екземпляр контролера GC, призначає делегування на цей контролер, встановлює стан виду контролера для відображення лідерів і проходить по вашому елементу LEADERBOARD_ID
перед показом контролера.
Ну ось, ми закінчили писати код, але ви ще не можете запустити додаток. Якщо ви це зробите, ви отримаєте повідомлення про помилку від Xcode, так як ви не створили власну таблицю лідерів на сторінці iTunes Connect вашого застосування.
Налаштувати ігровий центр на iTunes Connect
Ви вже повинні створити додаток iOS в iTunes Connect з вашим ідентифікатором Bundle. Тепер увійдіть в свій додаток з панелі інструментів iTunes Connect і натисніть Features, а потім Game Center.
Потім клікніть по значку + поруч з Leaderboards.



Виберіть Single Leaderboard на наступному екрані.



Тут вам потрібно ввести назву, яке ви хочете дати своїй таблиці лідерів. На скріншоті нижче я використовував My Leaderboard Name, як приклад. Ви можете назвати вашу Best Score Leaderboard або як завгодно ще.
В поле Leaderboard ID вставте рядок LEADERBOARD_ID
, яку ми раніше створили в проекті Xcode.
Оскільки рахунок це число, виберіть Integer в полі Score Format Type. Ви можете вибрати потрібний варіант для типу відправлення (Submission Type) і порядку сортування (Sort Order). Залиште Score Range (Optional) порожнім.
Нарешті, натисніть кнопку Add Language, для додавання мови.



У спливаючому вікні ви повинні вибрати мову своєї таблиці лідерів. За замовчуванням завжди використовується англійська мова. Введіть ще раз назву вашої таблиці лідерів, наприклад, англійською та виберіть Score Format (я вибрав коми для розділення груп цифр).
Поля Score Format Suffix необов'язкові; ви можете залишити обидва поля порожніми або ввести потрібний суфікс. Наприклад, якщо у вашій грі бали, ви можете набрати «бал» і «балів» для множини, тоді контролер Game Center додасть цей суфікс у кінець оцінок, які відображаються у вашій таблиці лідерів, наприклад «1 бал» або «100 балів".
Ви також можете додати значок. Зображення повинно бути файлом .jpeg, .jpg або .png, з розміром 512x512 або 1024x1024 пікселів, не менше 72 DPI, в колірному просторі RGB без прозорого фону. Натисніть Choose File, щоб завантажити зображення.
Нарешті натисніть Save і все готово. Ви можете повторити описані вище кроки, щоб додати більше мов - просто введіть назви таблиця лідерів відповідно до обраного мовою.



Після того, як ви додали вікно, ви можете перевірити деталі вашої таблиці лідерів. Якщо все в порядку, натисніть Save і ви будете перенаправлені на сторінку функцій (Features) для вашої нової таблицею лідерів.






Тепер прийшов час включити Game Center в розділі App Store вашого застосування. Натисніть App Store і Prepare for Submission.



Прокрутіть вниз до тих пір, поки ви не побачите Game Center і перемикач поруч з ним. Увімкніть його і він стане зеленим. Потім натисніть на значок + поруч з Leaderboards, виберіть свою таблицю лідерів зі списку і натисніть Done.



Натисніть Save в правому верхньому куті вікна і все буде готово до налаштування Game Center на iTunes Connect.



Тепер ви можете повернутися до проекту Xcode і запустити додаток на реальному пристрої або навіть на симуляторі iOS. Якщо ви ще не були прийняті в Game Center, з'явиться контролер Sign In. Виглядає це так:



Увійдіть в систему зі своїми обліковими даними і ви зможете почати тестування програми!
У нашому методі addScoreAndSubmitToGC()
ми додали наступний виклик print()
:
1 |
print("Best Score submitted to your Leaderboard!") |
Так що, якщо ви натиснете червону кнопку, в scoreLabel
буде відображатися «10», а консоль Xcode надрукує Best Score submitted to your Leaderboard!



Торкніться червоної кнопки ще три рази, а потім натисніть синю, щоб відкрити таблицю лідерів і перевірте, що відправлені окуляри рівні 40. Ви повинні побачити щось на зразок цього:



Висновок
Якщо ви хочете побачити Game Center в дії з повнофункціональним іграми платформи, ви можете перевірити мій шаблон гри Four Dots на CodeCanyon. Це шаблон для минималистичной нескінченної гри, яка зберігає кращі результати і відправляє їх в Game Center.



Шаблони ігор, подібні до цього це відмінний спосіб почати працювати над вашою наступною грою. CodeCanyon містить сотні шаблонів ігор для iOS, які ви можете використовувати, щоб швидко почати розробку, це дозволить вам побудувати наступну гру-вбивцю набагато швидше!
Спасибі що прочитали і побачимося наступного разу! Ознайомтеся з деякими з наших інших посібників з розробки додатків Swift і iOS.