Gamecenter

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск

Объект используется для отправки данных на gamecenter. Отправлять можно набранные очки (score) или достижения (achievement).

Параметры и модификаторы

Gc1.jpg
  • положение - определяет положение объекта на сцене.
  • размер - определяет размер объекта на сцене.
  • achievement - достижение, которое будем отправлять.
  • achievement percent - на сколько процентов завершено достижение.
  • score - очки, которые мы будем отправлять.
  • score category - категория, в которую мы отправляем очки (ссылка на leaderboard).
  • cloud major field - поле в опциях, по которому будет выбираться версия сохранения из cloud при конфликте (наибольшее из значений будет приоритетнее)
  • состояние - состояние, которое мы передаем объекту gamecenter
authenticate - состояние, по которому начинается авторизация мобильного 
устройства на геймцентре.
score - состояние, по которому отправляются очки.
achievement - состояние, по которому отправляются достижения.
score_show - состояние, по которому можно посмотреть очки на геймцентре.
achievements_show - состояние, по которому можно посмотреть достижения.
cloud_check - состояние, по которому проверяется, есть ли сохранение в клауде.
cloud_apply - состояние, по которому применяется новое сохранение из клауда (reload).
cloud_cancel - состояние, по которому автоматическая отправка/получение сохранений будет отключена,
пока не будет вызвано состояние cloud_check
cloud_delete - состояние, по которому сохранение в клауде удаляется.

Пример применения

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

Очки и Достижения

Для того, чтобы объект gamecenter мог обмениваться данными с геймцентром, он должен сначала авторизироваться. Проводить авторизацию нужно на экране, предшествующему экрану, где нужно отправлять очки. Для этого можно сделать отдельную машину.

Gc2.jpg

Все очки, лидер бордеры, ачивки прописываются в обеъкте Gamecenter, каждая ачивка или score добавляется дополнительным параметром.

Gc1 new.jpg

Для каждой ачивки или score нужно прописать ее внутренний id и заполнить поля - внешние ссылки для различных платформ iOS, Amazon и т.д. Таким образом у нас заранее прописаны все ачивки и очки, и для их отправки мы выбираем их по внутреннему id.

Gc2 new.jpg

Далее когда у нам нужно отправить какое то достижение мы объекту в параметре achievement передаем внутренний id ачивки которую нужно отправить и передаем состояние achievement. См. скрин ниже.
Для того чтоб авивка выполнялась не полностью, а выполнился ее определенный процент, то есть если мы хотим получить ачивку в несколько этапов, перед отправкой мы должны указать процент отправки. По умолчанию стоит 100%.

Gc3 new.jpg

Чтобы посмотреть очки мы передаем объекту gamecenter состояние score_show. Для просмотра достижений нужно передать объекту gamecenter состояние achievements_show.

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

Сохранение в Cloud

Для того что бы заработала синхронизация с облаком, нужна авторизация. Все процессы происходят в фоне, за исключением момента после первой успешной авторизации. В этом случае, если в облаке есть какие либо данные, то пользователю должно быть предложено применить или отменить новое сохранение. ... P.S. В данный момент работает только в Google Play Games, т.е. если параметр android google = 1.

Дополнительные параметры

+.png авторизация: изменить состояние объекта - При авторизации пользователя перевести объект в новое состояние.

  • объект - объект - состояние которого меняем.
  • состояние - овое состояние для объекта из предыдущего поля.

+.png ошибка автор: изменить состояние объекта - При ошибке авторизации пользователя перевести объект в новое состояние.

  • объект - объект - состояние которого меняем.
  • состояние - овое состояние для объекта из предыдущего поля.

+.png Leaderboard - категория - Дополнительный параметр для отправки Score

  • id достиженя
  • IOS id достиженя
  • Amazon id достиженя
  • IGoogle id достиженя

+.png Achievement - достижение - Дополнительный параметр для отправки Achievement

  • id достиженя
  • IOS id достиженя
  • Amazon id достиженя
  • IGoogle id достиженя

Примечания и дополнения

Для того, чтобы понимать что происходит с объектом gamecenter по логу viewer, приведен ряд значений, которые может получать GGamecenter (state=n, где n - номер состояния):

n     состояние                          пояснение
0    ST_IDLE=0,                         // состояние простоя
1    ST_NOT_SUPPORTED,                  // геймцентр не поддерживается на устройстве
2    ST_AUTHENTICATE,                   // попытаться авторизоваться
3    ST_AUTHENTICATION_OK,              // авторизация прошла успешно
4    ST_AUTHENTICATION_ERROR,           // ошибка авторизации
5    ST_AUTHENTICATED,                  // успешно авторизовались
6    ST_REPORT_ACHIEVEMENT,             // запостить ачивку
7    ST_ACHIEVEMENT_SUCCESS,            // ачивка успешно отправлена
8    ST_ACHIEVEMENT_FAILED,             // не удалось отправить ачивку
9    ST_SHOW_ACHIEVEMENTS,              // показать стандартный гуи с ачивками
10   ST_REPORT_SCORE,                   // отправить очки
11   ST_SCORE_SUCCESS,                  // очки успешно отправлены
12   ST_SCORE_FAILED,                   // не удалось отправить очки
13   ST_SHOW_LEADERBOARDS,              // показать стандартный гуи с очками
14   ST_CLOUD_APPLY,                    // применить новые опции из клауда
15   ST_CLOUD_CANCEL,                   // отказаться от новых опций
16   ST_CLOUD_CHECK,                    // проверить сохраненные опции в клауде
17   ST_CLOUD_DELETE,                   // удалить опции из клауда

Например, GGameCenter::state old_state = 1, state = 5,
где:
old_state - предыдущее состояние,
state - текущее состояние.

Проверка получения achievement

Есть возможность проверять из редактора (на компьютере) приходят ли achievements - для этого в файлике Viewer_Log нужно найти строчку:

GGameCenter::reportAchievement achievement = %s, percent = %d


где,
%s - имя ачивмента (ссылочка которую дают маркетологи)
%d - число процента

Отключение неиспользуемого функционала

Если в проекте не используются лидерборды, ачивки, синхронизацию между устройствами, то их можно принудительно отключить вписав в app.icf или platform.icf следующие строки:


[GameCenter]
Achievements=1 
Leaderboards=1
Whispersync=0

1 - используется, 0 - не используется

по умолчанию:

Achievements=1
Leaderboards=1
Whispersync=0


Whispersync