Списки лидеров и наборы списка лидеров

Много игровых предложений, выигрывая системы, измеряющиеся, как хорошо проигрыватель делает в игре. Очки не являются просто путем к проигрывателям для измерения их собственного прогресса; они также обеспечивают путь к проигрывателям для сравнения их навыков с теми из других проигрывателей. В Игровом Центре список лидеров является базой данных данных счета. Ваша игра отправляет очки на список лидеров так, чтобы проигрыватель мог позже просмотреть те очки.

Когда Вы добавляете списки лидеров к своей игре, Вы определяете то, что счет означает в Вашей игре и как данные счета отформатированы для дисплея.

Контрольный список для поддержки списков лидеров

Для добавления списков лидеров к игре необходимо взять следующие шаги:

  1. Перед добавлением списков лидеров добавьте код для аутентификации местного игрока. Посмотрите Работу с Проигрывателями в Игровом Центре.

  2. Решите, как Вы хотите использовать списки лидеров в своей игре. Вы выбираете, сколько списков лидеров для использования и как каждый список лидеров интерпретирует свои данные счета. Вы свободны разработать различный механизм выигрыша для каждого списка лидеров. См., что Списки лидеров Требуют Механизма Выигрыша.

  3. Перейдите к Подключению iTunes и сконфигурируйте списки лидеров для своей игры. Для каждого списка лидеров Вы конфигурируете вид зарегистрированного счета и как счет отформатирован для дисплея. Форматирование списка лидеров может быть локализовано для различных языков и областей. Посмотрите Работу со Списками лидеров в Подключении iTunes.

  4. Добавьте код, чтобы сообщить об очках Игровому Центру. См. Перечисление 4-3.

  5. Добавьте код для отображения списка лидеров местному игроку. Посмотрите Работу со Списком лидеров По умолчанию (iOS 7).

    Дополнительно, можно получить данные счета от Игрового Центра и использовать его для создания собственного пользовательского интерфейса списка лидеров. Посмотрите Данные Счета Получения.

Списки лидеров требуют механизма выигрыша

Для встраивания списков лидеров в игру та игра должна иметь механизм геймплея, позволяющий игре вычислять счет. Вы свободны разработать свой геймплей и выигрыш механизма, однако, Вы хотите. Единственное ограничение - то, что Ваш механизм выигрыша должен возвратить 64-разрядное целочисленное значение. Когда Вы сообщаете о счете, Вы сообщаете об этом целочисленном значении Игровому Центру, таким образом, это может быть сохранено.

Как можно превратить целое число во что-то более интересное? Как часть процесса разработки, Вы конфигурируете описание списка лидеров в Подключении iTunes так, чтобы Игровой Центр понял то, что очки означают в Вашем списке лидеров. Вы описываете к Игровому Центру, какой счет сохранен в списке лидеров и как преобразовать Ваш счет в строку для дисплея. Преимущество этого механизма состоит в том, что то же описание используется Игровым приложением Центра для показа очков игры.

Самое критическое решение сделать состоит в том, какой счет сохранен в списке лидеров. Игровой Центр обеспечивает три основных типа форматирования:

Вы также решаете порядок, в котором оцениваются очки. Когда очки оцениваются низкие-к-высокому, более низкий счет считают лучшим счетом — например, мчащаяся игра, записывающая время, которое потребовалось для завершения гонки. При этом обстоятельстве более быстрое время — т.е. более низкий счет — лучше, таким образом, порядок сортировки низких-к-высокому является надлежащим. Напротив, игра, добавляющая точки к общему количеству проигрывателя для каждых успешных мер, принятых в игре, ожидает, что более высокий счет лучше, таким образом, высокий-к-низкому порядок сортировки был бы более надлежащим.

Как только у Вас есть тип форматирования и выбранный порядок сортировки, Вы также настраиваете конечные результаты с локализованной строкой форматирования. Например, если бы Вы приняли решение представлять счет как целое число, то Вы могли бы выбрать «точку» и «точки» как английская локализация для исключительных и множественных значений очков, сохраненных в том списке лидеров. Другие игры могли бы использовать тот же тип счета, но использовать различные локализованные строки (“полировки”, «автомобили»).

При разработке механизма выигрыша удостоверьтесь, что Вы рассматриваете диапазон возможных (юридических) значений счета. При создании описания списка лидеров можно также обеспечить, минимальные и максимальные значения для очков сообщили ему. Обеспечение диапазона счета добавляет уровень безопасности на Ваш список лидеров, потому что это сокращает вероятность, что проигрыватель может обмануть, если они обнаруживают способ сообщить о нелепо высоком счете.

Игра может иметь многократные списки лидеров

Можно определить до 100 различных списков лидеров для игры (или игровая группа), если игра не поддерживает наборы списка лидеров. Когда наборы списка лидеров были включены, число различных списков лидеров позволило увеличения 500 спискам лидеров на игру. Посмотрите Наборы Списка лидеров для получения дополнительной информации. Каждый список лидеров имеет свой собственный тип счета, порядок сортировки и информацию о форматировании. При реализации многократных списков лидеров Вы выбираете, какие данные счета для записи в каждом списке лидеров, по существу означающем, что каждый список лидеров может иметь свой собственный механизм выигрыша при желании.

Вот несколько возможностей о том, как можно использовать различные списки лидеров в игре:

Чтобы позволить спискам лидеров дифференцироваться друг от друга в Вашей игре, Вы присваиваете каждый список лидеров список лидеров ID, также известный как категория. Ваша игра использует список лидеров ID для создания отчетов о счете надлежащему списку лидеров. Например, если бы Ваша игра включала три списка лидеров для разных уровней трудности, то Вы могли бы использовать myGame.easy, myGame.normal и myGame.hard как список лидеров IDs.

Один список лидеров является списком лидеров по умолчанию

При определении списков лидеров в Подключении iTunes один список лидеров определяется как список лидеров по умолчанию. Когда Ваша игра выполняет задачу списка лидеров, не указывая категорию, список лидеров по умолчанию автоматически выбран.

Начальное значение для списка лидеров по умолчанию является значением, которое Вы присваиваете в Подключении iTunes. Однако, поскольку проигрыватель играет в Вашу игру, можно установить различный список лидеров по умолчанию для того проигрывателя. Можно изменить список лидеров по умолчанию автоматически при создании отчетов о новом счете, или можно изменить список лидеров по умолчанию, независимый от создания отчетов счета. Например, если Ваша игра имеет многократные последовательные уровни и список лидеров для каждого уровня, можно изменить список лидеров по умолчанию каждый раз усовершенствования местного игрока к более высокому уровню. Тем путем будущие очки (или выведенные на экран списки лидеров) автоматически показывают лучший уровень, который играл проигрыватель.

Объединенные списки лидеров собирают очки из многократных единственных списков лидеров

Объединенный список лидеров является специальным типом списка лидеров, объединяющегося, очки сообщили многократным спискам лидеров в один список лидеров. Отдельные списки лидеров продолжают существовать и - где Вы сообщаете об очках. Вы не сообщаете об очках объединенным спискам лидеров. Например, если Ваша игра предлагает многократные трассы, можно создать единственный список лидеров для каждой трассы и объединенный список лидеров, показывающий наилучшее время, заработанное на любой дорожке.

При решении, установить ли один или несколько объединенные списки лидеров для игры, помните следующие инструкции:

Работа со Списками лидеров в Подключении iTunes

После рассмотрения проекта механизма выигрыша Вы переходите к Подключению iTunes для точного определения каждого списка лидеров. Определение списка лидеров является критическим шагом; как только Ваша игра поставляет клиентам, много частей списка лидеров не могут быть изменены. Важно отметить, что информация, Вы вводите в Подключение iTunes, должна соответствовать реализацию Вашей игры. Также, необходимо осуществить предостережение при создании списков лидеров и протестировать игру полностью прежде, чем выпустить его.

Для полных подробных данных об управлении списками лидеров Вашей игры и наборами списка лидеров посмотрите Игровое Руководство по конфигурированию Центра для Подключения iTunes. Однако для Вашего удобства, Таблица 4-1 описывает свойства, которые Вы используете для определения единственного списка лидеров. Таблица 4-2 перечисляет свойства, которые Вы устанавливаете для каждого языка, в который Вы планируете локализовать свою игру.

Табличные 4-1  Свойства для единственного списка лидеров

Свойство

Описание

Ссылочное имя списка лидеров

Внутреннее имя для Вашего списка лидеров, используемого только в Подключении iTunes. Это - имя, которое Вы используете для поиска списка лидеров в Подключении iTunes.

Список лидеров ID

Выбранный алфавитно-цифровой идентификатор для Вашего списка лидеров. Этот ID ограничивается 100 символами. Ваш список лидеров ID является постоянной установкой и не может быть отредактирован позднее.

Выиграйте тип формата

Выберите тип формата, в котором Вы хотите, чтобы очки были выражены в списке лидеров — например, целое число, прошедшее время или деньги.

Порядок сортировки

Выберите между “Низко к Высокому” или “Высоко к Низкому” для дисплея Ваших очков списка лидеров. Выберите «Low to High», если Вы хотите самые низкие очки, выведенные на экран сначала. Выберите «High to Low», если Вы хотите самые высокие очки, выведенные на экран сначала.

Диапазон счета

Определите диапазон счета с помощью 64-разрядных целых чисел со знаком. Значения должны быть между долгой минутой (-2^63) и долго макс. (2^63 - 1). Любые очки за пределами этого диапазона будут удалены. Значения диапазона счета являются дополнительными, но если они добавляются тогда, оба значения должны быть установлены, и они не должны быть равными. Сначала добавляя диапазон счета, или при изменении их в будущем к меньшему диапазону, который ограничит данные, все данные за пределами диапазона будут потеряны и не могут быть восстановлены.

Табличные 4-2  свойства языка Списка лидеров

Свойство

Описание

Язык

Это - язык, на котором появляется Ваш список лидеров.

Имя

Имя списка лидеров, появляющегося в стандартном пользовательском интерфейсе списка лидеров.

Формат счета

Это свойство определяет, как Ваши очки выведены на экран, когда список лидеров выведен на экран на указанном языке. Например, если Ваш список лидеров хранит счет как деньги, можно хотеть указать различные типы денег на основе языка, который Вы выбираете. Разрешенные значения для этого свойства основываются на Вашем Типе формата Счета.

(Исключительный) суффикс формата счета

Этот суффикс добавляется до конца очков, выведенных на экран в форме единственного числа. Этот суффикс является дополнительным, но является полезным для разъяснения типа счета, сохраненного в списке лидеров. Примеры включают «точку» и «совершают нападки».

Суффикс формата счета (множественное число)

Этот суффикс добавляется до конца очков, выведенных на экран в форме множественного числа. Этот суффикс является дополнительным, и является полезным для разъяснения типа счета, сохраненного в списке лидеров. Примеры включают «точки», «монеты» и «хиты».

Изображение

Локализованное изображение, представляющее список лидеров. Это свойство является дополнительным; если указано, изображение выведено на экран как часть стандартного пользовательского интерфейса списка лидеров. Изображение должно быть a .jpeg, .jpg, .tif, .tiff, или .png файл, который является 512 x 512 или 1024 x 1 024 пикселя, по крайней мере 72 точки на дюйм, и в цветовом пространстве RGB.

Для получения дополнительной информации об установке Ваших списков лидеров в Подключении iTunes см. Списки лидеров и Наборы Списка лидеров в Игровом Руководстве по конфигурированию Центра для Подключения iTunes.

Добавление поддержки списка лидеров игре

Для реализации поддержки списка лидеров в игре Вы используете классы, перечисленные в Таблице 4-3.

Таблица 4-3  классы Гэйма Кита раньше реализовывала поддержку списка лидеров

Имя класса

Функция класса

GKScore

A GKScore объект содержит информацию для счета, заработанного проигрывателем. Ваша игра создает GKScore объекты отправить очки на список лидеров на Игровом Центре. Когда игра получает информацию о счете из списка лидеров, те очки возвращаются как GKScore объекты.

GKLeaderboard

A GKLeaderboard объект предоставляет информацию о списке лидеров, включая его список лидеров ID и заголовок. Вы также создаете GKLeaderboard объекты, когда Вы хотите получить данные счета из списка лидеров. Если Вы хотите создать свой собственный пользовательский интерфейс списка лидеров, Вы обычно делаете это.

GKGameCenterViewController

GKGameCenterViewController класс обеспечивает стандартный пользовательский интерфейс для отображения Игрового содержания Центра к проигрывателю. Это содержание включает страницу списка лидеров.

GKLeaderboardViewController

GKLeaderboardViewController класс обеспечивает стандартный пользовательский интерфейс для отображения списка лидеров. Если GKGameCenterViewController класс доступен, необходимо использовать тот класс вместо этого.

Следующие разделы описывают общие задачи и как реализовать их.

Загрузка информации о списках лидеров игры (iOS 6)

Перечисление 4-1 показывает предпочтительный механизм для загрузки информации о доступных списках лидеров. Это возвращает массив объектов списка лидеров, один для каждого списка лидеров, определенного для Вашей игры на Игровом Центре.

Перечисление 4-1  , Получающее информацию о доступных списках лидеров

- (void) loadLeaderboardInfo
{
    [GKLeaderboard loadLeaderboardsWithCompletionHandler:^(NSArray *leaderboards, NSError *error) {
        self.leaderboards = leaderboards;
     }];
}

Таблица 4-4 перечисляет свойства что Вы обычно доступ на объекте списка лидеров.

Таблица 4-4  Полезные свойства объектов списка лидеров

Свойство

Описание

категория

Список лидеров ID для списка лидеров.

Примечание: Осуждаемый в iOS 7. Использовать identifier вместо этого.

идентификатор

Список лидеров ID для списка лидеров.

заголовок

Локализованный заголовок Вы определили в Подключении iTunes.

groupIdentifier

Содержит идентификатор группы для того, когда Ваша игра совместно использует список лидеров с другими играми в игровой группе.

Создание отчетов об очках к игровому центру

Ваша игра передает очки в Игровой Центр путем создания массива GKScore объекты, сообщаете ли Вы о единственном счете или многократных очках. Объект счета имеет свойства для проигрывателя, заработавшего счет, дата и время, которая счет был заработан, идентификатор для списка лидеров, счету нужно сообщить, и заработанный фактический счет. Вы выделяете и инициализируете новый объект счета для каждого счета, конфигурируете их свойства, и затем вызываете reportScores:withCompletionHandler: метод, чтобы отправить данные Игровому Центру.

Перечисление 4-2 показывает, как использовать массив GKScore объекты сообщить о счете Игровому Центру.

Перечисление 4-2  Сообщая о счете Игровому Центру (iOS 7)

- (void) reportScore: (int64_t) score forLeaderboardID: (NSString*) identifier
{
    GKScore *scoreReporter = [[GKScore alloc] initWithLeaderboardIdentifier: identifier];
    scoreReporter.value = score;
    scoreReporter.context = 0;
 
    NSArray *scores = @[scoreReporter];
    [GKScore reportScores:scores withCompletionHandler:^(NSError *error) {
    //Do something interesting here.
    }];
}

Объект счета инициализируется со списком лидеров ID для списка лидеров, которому это сообщает о своем счете, и затем метод устанавливает свойство значения в счет заработанный проигрыватель. ID списка лидеров должен быть идентификатором для списка лидеров, который Вы сконфигурировали в Подключении iTunes. Проигрыватель, кто заработал счет и время счет, был заработан, установлены автоматически, когда создавался объект счета. Об очках всегда сообщают для местного игрока.

Ваша игра должна создать объект счета и сообщить о счете Центру Гэйма сразу после того, как будет заработан счет. Это устанавливает дату и время точно и гарантирует, что о счете сообщают правильно. Если по некоторым причинам о счете нельзя было бы сообщить из-за сетевой ошибки, Гэйм Кит автоматически снова посылает данные, когда сеть становится доступной.

Безопасность и создание отчетов счета

Когда Вы разрабатываете игру, сообщающую об очках Игровому Центру, необходимо также рассмотреть потребности безопасности игры. Вы хотите очки, сообщил Игровому Центру, чтобы быть точным учетом того, как делают проигрыватели. Вот два предложения:

  • Сохраните предпочтения своей игры и сохраненные игры в безопасном формате, а не в открытом тексте. Если данные Вашей игры хранятся в открытом тексте, проигрыватель может загрузить сохраненные игровые данные с помощью iTunes, изменить его и повторно синхронизировать его назад к устройству. Это может позволить проигрывателю достигать более высокого счета, чем Вы предназначили.

  • Всегда устанавливайте разумные минимальные и максимальные значения для списка лидеров.

Создание отчетов об очках к игровому центру (iOS 6)

Если Ваша игра должна работать на более ранней версии iOS или OS X, Ваша игра передает очки в Игровой Центр путем создания a GKScore объект. Объект счета имеет свойства для проигрывателя, заработавшего счет, дата и время, которая счет был заработан, категория для списка лидеров, счету нужно сообщить, и заработанный фактический счет. Вы выделяете и инициализируете новый объект счета, конфигурируете его свойства, и затем вызываете его reportScoreWithCompletionHandler: метод, чтобы отправить данные Игровому Центру.

Перечисление 4-3 показывает, как использовать объект счета сообщить о счете Игровому Центру.

Перечисление 4-3  Сообщая о счете Игровому Центру (iOS 6)

- (void) reportScore: (int64_t) score forLeaderboardID: (NSString*) category
{
    GKScore *scoreReporter = [[GKScore alloc] initWithCategory:category];
    scoreReporter.value = score;
    scoreReporter.context = 0;
 
    [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
// Do something interesting here.
    }];
}

Работа со списком лидеров по умолчанию (iOS 7)

Список лидеров по умолчанию установлен при создании списков лидеров в Подключении iTunes. Однако список лидеров по умолчанию является установкой на проигрыватель также; поскольку проигрыватель играет в Вашу игру, можно обновить список лидеров по умолчанию, показанный тому проигрывателю.

Если необходимо знать список лидеров по умолчанию для местного игрока, Вы получаете его с помощью кода, подобного этому в Перечислении 4-4.

Перечисление 4-4  , Загружающее список лидеров по умолчанию для местного игрока (iOS 7)

[[GKLocalPlayer localPlayer] loadDefaultLeaderboardIdentifierWithCompletionHandler:
(void(^)(NSString *leaderboardIdentifier, NSError *error)) {
//Use the leaderboard identifier.
}]

Наиболее распространенное время для обновления списка лидеров по умолчанию - когда Вы сообщаете о счете, и Гэйм Кит обеспечивает удобный способ установить список лидеров по умолчанию, поскольку Вы сообщаете о счете. Создайте объект счета, и затем установите shouldSetDefaultLeaderboard свойство к YES. Когда о счете сообщают, категория объекта счета становится новым списком лидеров по умолчанию ID.

Перечисление 4-5  , Обновляющее список лидеров по умолчанию при создании отчетов о счете (iOS 7)

    GKScore *scoreReporter = [[GKScore alloc] initWithLeaderboardIdentifier:identifier];
    scoreReporter.shouldSetDefaultLeaderboard = YES
...

Однако можно также использовать GKLocalPlayer возразите для обновления списка лидеров по умолчанию непосредственно.

Перечисление 4-6  , Обновляющее список лидеров по умолчанию непосредственно

[[GKLocalPlayer localPlayer] setDefaultLeaderboardIdentifier: newLeaderboard completionHandler: (^)(NSError *error) {
// Log the error.
}

Работа со списком лидеров по умолчанию (iOS 6)

При предназначении для устройств рабочий iOS 6 используйте код, подобный этому в Перечислении 4-7 для загрузки списка лидеров по умолчанию. Используйте идентификатор категории при идентификации списка лидеров по умолчанию.

Перечисление 4-7  , Загружающее список лидеров по умолчанию для местного игрока (iOS 6)

[[GKLocalPlayer localPlayer] loadDefaultLeaderboardCategoryIDWithCompletionHandler:
((^)(NSString *categoryID, NSError *error)) {
// Use the category ID.
}]

Изменение списка лидеров в iOS 6 выполняется путем изменения идентификатора категории для списка лидеров. Перечисление 4-8 обеспечивает пример того, как сделать это использование setDefaultLeaderboardCategoryID:completionHandler: метод.

Перечисление 4-8  , Обновляющее список лидеров по умолчанию непосредственно (iOS 6)

[[GKLocalPlayer localPlayer] setDefaultLeaderboardCategoryID: newCategory completionHandler: (^)(NSError *error) {
// Log the error.
}

Отображение стандартного списка лидеров (iOS 6)

В дополнение к передающим очкам к Игровому Центру необходимо также позволить проигрывателям просматривать очки в игре. Самый простой способ сделать это с a GKGameCenterViewController объект. Можно скорректировать поведение контроллера представления Game Center так начальное содержание, которое оно выводит на экран, страница списка лидеров. Перечисление 4-9 показывает, как выполнить это. Метод инстанцирует нового контроллера представления и устанавливает gameCenterDelegate свойство для указания на представление просматривает контроллер. Это тогда конфигурирует другие свойства для показа страницы списка лидеров, выводя на экран только очки, заработанные в прошлый день. Контроллер представления тогда представлен. В OS X Вы используете GKDialogController класс для отображения контроллера представления, как описано в Отображении Игровых Элементов пользовательского интерфейса Центра.

Перечисление 4-9  , Выводящее на экран страницу списка лидеров Игрового пользовательского интерфейса Центра

- (void) showLeaderboard: (NSString*) leaderboardID
{
    GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
    if (gameCenterController != nil)
    {
       gameCenterController.gameCenterDelegate = self;
       gameCenterController.viewState = GKGameCenterViewControllerStateLeaderboards;
       gameCenterController.leaderboardTimeScope = GKLeaderboardTimeScopeToday;
       gameCenterController.leaderboardCategory = leaderboardID;
       [self presentViewController: gameCenterController animated: YES completion:nil];
    }
}

Когда проигрыватель заканчивает смотреть на список лидеров, делегата вызывают. Перечисление 4-10 показывает типичную реализацию, просто отклоняющую представленный контроллер представления.

Перечисление 4-10  , Отвечающее, когда проигрыватель отклоняет Игровое содержание Центра

- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

Получение данных счета

Когда Вы хотите получить данные счета от Игрового Центра, существуют времена. Когда Вы хотите создать пользовательский пользовательский интерфейс списка лидеров, наиболее распространенная причина загрузить данные счета состоит в том. Ваша игра использует a GKLeaderboard объект получить данные счета. В этом случае объект списка лидеров представляет запрос на данных, хранивших на Игровом Центре. Вы устанавливаете свойства на GKLeaderboard возразите для фильтрации, какие очки возвращаются к игре, затем говорят объекту загрузить очки. Таблица 4-5 перечисляет свойства, которые можно установить.

Табличные 4-5  Свойства, влияющие на запрос данных списка лидеров

Свойство

Эффект

playerScope

Можно выбрать, ограничить ли поиск друзьями местного игрока или найти очки от какого-либо проигрывателя. Дополнительно, можно также инициализировать объект списка лидеров искать музыку к определенной группе проигрывателей, которые Вы предоставляете.

timeScope

Можно принять решение отфильтровать на основе того, когда был заработан счет.

категория

Можно принять решение отфильтровать, на основе которого списка лидеров счет выведен на экран в.

Примечание: Осуждаемый в iOS 7. Использовать identifier вместо этого.

идентификатор

Можно принять решение отфильтровать, на основе которого списка лидеров счет выведен на экран в. Для iOS 7.

диапазон

Можно выбрать очки в определенном диапазоне. Например, диапазон [1,10] возвращает лучшие десять очков, найденных запросом.

Получение подмножества данных списка лидеров, хранивших на Игровом Центре, имеет следующие шаги:

  1. Запустите с набора всех очков, сохраненных в списке лидеров.

  2. Отбросьте любые очки, не соответствующие playerScope, timeScope и identifier свойства.

    • Используйте category свойство при поддержке игр, разработанных для iOS 6 и ранее.

  3. Сохраните только лучший остающийся счет к каждому проигрывателю.

  4. Сортируйте список очков от лучше всего до худшего.

  5. Возвратите подмножество очков, которые требуют range свойство.

Рисунок 4-1 показывает пример одного возможного поиска. Код, выполняющий этот поиск, предоставлен позже в Перечислении 4-11. В этом примере, очки больше чем старый день проигнорированы. Затем от остающегося набора очков мы видим, что у Боба есть два очков, поэтому только его лучший счет сохранен. Наконец, очки сортированы и оценены. Выбранный диапазон тогда возвращается к игре.

  Данные Списка лидеров рисунка 4-1 отфильтрованы, сортированы и возвращены к Вашей игре

Если Вы обеспечиваете категорию, соответствующую объединенный список лидеров, все очки в единственных списках лидеров объединены вместе прежде, чем отфильтровать и сортировать, происходит. Рисунок 4-2 показывает те же очки как в более раннем примере, но теперь Вы видите, что очки фактически сохранены в двух различных списках лидеров, составляющих объединенный список лидеров.

Рисунок 4-2  Объединенные списки лидеров включает очки из единственных списков лидеров

Перечисление 4-11 показывает запрос данных списка лидеров в качестве примера. Метод для этого запроса инициализирует новый объект списка лидеров и конфигурирует playerScope, timeScope, и range свойства для захвата лучших десяти очков, заработанных сегодня.

Перечисление 4-11  , Получающее лучшие десять очков

- (void) retrieveTopTenScores
{
    GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
    if (leaderboardRequest != nil)
    {
        leaderboardRequest.playerScope = GKLeaderboardPlayerScopeGlobal;
        leaderboardRequest.timeScope = GKLeaderboardTimeScopeToday;
        leaderboardRequest.identifier = @"Combined.LandMaps"
        leaderboardRequest.range = NSMakeRange(1,10);
        [leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
            if (error != nil)
            {
                // Handle the error.
            }
            if (scores != nil)
            {
                // Process the score information.
            }
            }];
    }
}

Ваша игра может создать запрос списка лидеров, получающий музыку к определенному списку проигрывателей, которыми Вы интересуетесь. Перечисление 4-12 обеспечивает массив идентификаторов проигрывателя к запросу. Когда Вы обеспечиваете список проигрывателей, playerScope свойство проигнорировано.

Перечисление 4-12  , Получающее главную музыку к проигрывателям в соответствии

- (void) receiveMatchBestScores: (GKMatch*) match
{
    GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] initWithPlayerIDs: match.playerIDs];
        leaderboardRequest.timeScope = GKLeaderboardTimeScopeAllTime;
        leaderboardRequest.identifier = @"Combined.LandMaps"
        leaderboardRequest.range = NSMakeRange(1,10);
    if (query != nil)
    {
        [query loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
            if (error != nil)
            {
                // Handle the error.
            }
            if (scores != nil)
            {
                // Process the score information.
            }
        }];
    }
}

В любом случае, возвращенном GKScore объекты предоставляют данные, Ваша игра должна создать настроенный пользовательский интерфейс. Ваша игра может использовать объект счета playerID загрузить псевдоним проигрывателя, как описано в Получении информации О Проигрывателях. formattedValue свойство предоставляет строке значение счета, отформатированное согласно параметрам, которые Вы обеспечили в Подключении iTunes.

Для поддержания оптимального пользовательского опыта только запросите список лидеров для данных, которые игра должна использовать или вывести на экран. Например, не пытайтесь получить все очки, сохраненные в списке лидеров сразу. Вместо этого захватите меньшие части списка лидеров и обновите Ваши представления по мере необходимости.

Расширение списков лидеров Используя контексты счета

Несмотря на то, что система счета и форматирования позволяет Вам создавать интересные списки лидеров, можно хотеть расширить систему списка лидеров для включения другой информации, определенной для игры. Вы делаете этот счет использования контексты. A GKScore объект имеет a context свойство, содержащее 64-разрядное целое число. Значение, сохраненное в этом свойстве, сохранено вместе со счетом. Игровой Центр не использует это значение вообще, и при этом это не влияет на форматирование счета. Ваша игра свободна использовать это целое число, чтобы хранить безотносительно информации, которую Вы хотите.

Вот несколько возможностей:

  • Можно использовать context свойство для хранения флагов, обеспечивающих дополнительное содержание. Например, в мчащейся игре, используйте флаги для хранения, с каким автомобилем лицо завершило трассу. Затем в Вашем собственном пользовательском интерфейсе списка лидеров Вы могли вывести на экран надлежащее автомобильное изображение рядом с каждым счетом.

  • Запишите действия пользователя и другие данные в к файлу. Вы тогда разрабатываете свой игровой механизм, чтобы быть в состоянии воспроизвести содержание того файла. Вы храните файл на своем собственном сервере и используете поле контекста в качестве индекса для ссылки на файл. Ваш пользовательский пользовательский интерфейс списка лидеров может тогда предложить возможность для наблюдения точно, как кто-то заработал счет.

  • Можно реализовать воспроизведение непосредственно в геймплей. Например, в гипотетической мчащейся игре, Вы могли использовать файл воспроизведения проигрывателя для отображения фантомного автомобиля для текущего проигрывателя для гонок против.

Наборы списка лидеров

Наборы списка лидеров предлагают разработчикам возможность объединить несколько списков лидеров в единственную группу. разработчики iOS в состоянии создать наборы списка лидеров начиная с iOS 7. Наборы списка лидеров не поддерживаются в OS X v10.9.

Следующий пример показывает, почему Вы хотели бы включить наборы списка лидеров в свою игру.

Рисунок 4-3 показывает списки лидеров для каждого мира, объединенного в набор списка лидеров.

  Списки лидеров рисунка 4-3 объединились в набор списка лидеров

Контрольный список для поддержки наборов списка лидеров

Добавить список лидеров устанавливает в Вашу игру, необходимо взять следующие шаги:

  1. Перед добавлением достижений добавьте код для аутентификации местного игрока. Посмотрите Работу с Проигрывателями в Игровом Центре.

  2. Гарантируйте, что Ваша игра содержит по крайней мере один список лидеров. Посмотрите Добавляющую Поддержку Списка лидеров Своей Игре для получения информации о создании списков лидеров.

  3. Перейдите к Подключению iTunes и сконфигурируйте наборы списка лидеров для своей игры. Для каждого набора списка лидеров добавьте желаемые списки лидеров к набору списка лидеров. Посмотрите Работу с Наборами Списка лидеров в Подключении iTunes.

  4. Добавьте код для загрузки наборов списка лидеров, связанных с текущей игрой. Посмотрите Загружающиеся Наборы Списка лидеров к Своей Игре.

  5. Добавьте код для загрузки списков лидеров, содержавших в наборе списка лидеров. См. Загружающиеся Списки лидеров В Наборе.

Игра может иметь многократные наборы списка лидеров

Можно определить до 100 различных наборов списка лидеров для игры. Каждый набор списка лидеров может содержать до 100 списков лидеров максимум с 500 списков лидеров для Вашей игры. Вы выбираете, какие списки лидеров помещаются в каждом наборе списка лидеров. Игры, не использующие наборы списка лидеров, ограничиваются 100 списками лидеров.

Вот несколько возможных способов использовать различные наборы списка лидеров в Вашей игре:

  • Игра с многократными механизмами выигрыша для каждого мира (счет, враги получили, собранные монеты) может объединить списки лидеров для каждого мира в набор списка лидеров.

  • Игра с многократными механизмами выигрыша для каждого мира (счет, враги получили, собранные монеты) может объединить все списки лидеров для единственного механизма выигрыша в набор списка лидеров.

  • Игра с многократными играемыми символами (воин, лучник) может объединить все списки лидеров для определенного символа в единственный набор списка лидеров.

Можно объединить число списков лидеров и наборов списка лидеров в любом формате, пока не превышены отдельные максимумы. Следующее является всеми допустимыми комбинациями:

  • 5 наборов списка лидеров, каждый содержащий 100 списков лидеров

  • 100 наборов списка лидеров, каждый содержащий 5 списков лидеров

  • 3 набора списков лидеров, каждый содержащий 50 списков лидеров; 2 набора списка лидеров, каждый содержащий 100 списков лидеров; 1 набор списка лидеров, содержащий 1 список лидеров

Список лидеров Game Group и список лидеров установленные пределы

Число списков лидеров и наборов списка лидеров в группе ограничивается только числом приложений в группе. Каждая игра в группе может иметь много наборов списка лидеров, и списки лидеров, как утверждено в Игре Могут Иметь Многократные Наборы Списка лидеров. Например, если у группы есть три приложения в нем, то у группы может быть в общей сложности 300 наборов списка лидеров и списки лидеров 1500 года. Однако отдельное приложение все еще ограничивается 100 наборами списка лидеров и 500 списками лидеров.

Работа с Наборами Списка лидеров в Подключении iTunes

После того, как Вы решили использовать наборы списка лидеров в своей игре, необходимо сконфигурировать наборы списка лидеров в Подключении iTunes. В Подключении iTunes можно создать новые наборы списка лидеров и переместить списки лидеров в них. Для полных подробных данных об управлении списками лидеров Вашей игры и наборами списка лидеров см. Списки лидеров и Наборы Списка лидеров в Игровом Руководстве по конфигурированию Центра для Подключения iTunes.

Добавление поддержки набора списка лидеров игре

Для реализации поддержки набора списка лидеров в игре Вы используете классы, перечисленные в Таблице 4-6.

Таблица 4-6  классы Гэйма Кита раньше реализовывала поддержку набора списка лидеров

Имя класса

Функция класса

GKScore

A GKScore объект содержит информацию для счета, заработанного проигрывателем. Ваша игра создает GKScore объекты отправить очки на список лидеров на Игровом Центре. Когда игра получает информацию о счете из списка лидеров, те очки возвращаются как GKScore объекты.

GKLeaderboard

A GKLeaderboard объект предоставляет информацию о списке лидеров, включая его список лидеров ID и заголовок. Вы также создаете GKLeaderboard объекты, когда Вы хотите получить данные счета из списка лидеров. Если Вы хотите создать свой собственный пользовательский интерфейс списка лидеров, Вы обычно делаете это.

GKLeaderboardSet

A GKLeaderboardSet объект предоставляет информацию о наборах списка лидеров, содержавших в Вашей игре. Каждый набор содержит от 1 до 100 GKLeaderboard объекты присвоились к набору.

GKGameCenterViewController

GKGameCenterViewController класс обеспечивает стандартный пользовательский интерфейс для отображения Игрового содержания Центра к проигрывателю. Это содержание включает страницу списка лидеров.

GKLeaderboardViewController

GKLeaderboardViewController класс обеспечивает стандартный пользовательский интерфейс для отображения списка лидеров. Если GKGameCenterViewController класс доступен, необходимо использовать тот класс вместо этого.

Прежде чем можно будет загрузить списки лидеров, содержавшие в наборе, необходимо загрузить сам набор. Получите список наборов списка лидеров для Вашей игры от Игрового Центра и выведите на экран их заголовки.

Загрузка списка лидеров устанавливает в Вашу игру

Перечисление 4-13 показывает предпочтительный механизм для загрузки информации о доступных наборах списка лидеров. Это возвращает массив объектов набора списка лидеров, один для каждого набора списка лидеров, определенного для Вашей игры на Игровом Центре.

Перечисление 4-13  , Получающее информацию о доступных наборах списка лидеров

- (void) loadLeaderboardSetInfo
{
    [GKLeaderboardSet loadLeaderboardSetsWithCompletionHandler:^(NSArray *leaderboardSets, NSError *error) {
        self.leaderboardSets = leaderboardSets;
     }];
}

Загрузка списков лидеров в наборе

Перечисление 4-14 показывает предпочтительный механизм для загрузки информации о доступных списках лидеров. Это возвращает массив объектов списка лидеров, один для каждого списка лидеров, определенного для Вашей игры на Игровом Центре. Вызовите этот метод на определенном GKLeaderboardSet объект получить его списки лидеров.

Перечисление 4-14  , Получающее информацию о доступных списках лидеров

- (void) loadLeaderboardInfo
{
    [GKLeaderboard loadLeaderboardsWithCompletionHandler:^(NSArray *leaderboards, NSError *error) {
        self.leaderboards = leaderboards;
     }];
}