Создание рейтинга игроков для мобильной игры (Unity + Google Play Game Services)

Рейтинг игроков (leaderboard, scores) для мобильной игры — вещь интересная и порой даже необходимая. В этой статье я расскажу о том, как добавить рейтинг игроков в приложение, созданное в Unity, т.к. в рунете информации об этом не так много. Кроме того, рейтинг будет кросплатформенный (android + iOS), однако без поддержки Windows Phone.image

Раздел 1. КОНСОЛЬ РАЗРАБОТЧИКА1. Считаем, что приложение уже опубликовано на Google Play, т.е. у нас есть package name, например com.AnonymousInteractives.NakedSnake2. Идем в [консоль разработчика] (Developer Console), слева открываем [игровые сервисы] (Game Services)

image

3. Жмем «Добавить новую игру» и указываем название игры и категорию. Тут может возникнуть некоторая путаница. Термин «игра» здесь означает игровой сервис. Название может не совпадать с реальным названием вашего приложения. У игрового сервиса появляется уникальный идентификатор, например 88171208539image

4. Заполняем [сведения об игре] — описание и картинки

5. В разделе [связанные приложения] можно связать с игровым сервисом до 20 приложений. Это могут быть android, iOS и web приложения. Выбираем android. Далее нужно только ввести название пакета приложения из пункта 1

image

6. В разделе [достижения] нужно добавить достижения. Для тестирования пункт можно пропустить, но для публикации нужно добавить не менее 5 достижений. Если у нас в игре нет достижений, то просто создаем фейковые достижения 1, 2, 3, 4, 5 и забываем про них

7. Наконец мы переходим в раздел [рейтинг игроков]. Создаем необходимые нам рейтинги, тут все очевидно. В итоге получаем рейтинг с каким-нибудь идентификатором, например CgkI276nu8gCEAIQAA. Впоследствии он и идентификатор игрового сервиса понадобятся нам для настройки плагина в Unity и обращения к сервису

image

8. В разделе [тестирование] можно добавить аккаунты для тестирования. Причем можно указать именно почтовые аккаунты, а не группу Google+, как при тестировании самой игры

9. В разделе [публикация] можно опубликовать игру, хотя для тестирования это не обязательно. Все, консоль разработчика нам больше не понадобится

Раздел 2. Unity 1. Переходим на страницу проекта play-games-plugin-for-unity и скачиваем проект (ссылка «Download ZIP»). В архиве находим файл GooglePlayGamesPlugin-0.9.02.unitypackage2. Открываем проект приложения в Unity

3. Дважды кликаем по GooglePlayGamesPlugin-0.9.02.unitypackage и импортируем пакет в проект

image

4. Переходим в меню File / Play Games — Android setup и вводим идентификатор нашего сервиса (см. шаг 3 из предыдущего раздела). Все, на этом настройка завершена!

image

5. Теперь осталось добавить пару строчек кода и у нас появится рейтинг игроков. Графический интерфейс рейтинга находится в Android SDK, так что нам не придется тратить на него время. В тоже время, никакой кастомизации UI не предусмотрено (кроме настроек в консоли разработчика — иконка рейтинга и единица измерения). На странице плагина (см. пункт 1) находится достаточно справочной информации, поэтому я без комментарием приведу код внесения записи в рейтинг игроков с последующим его отображением. Замечу, что процесс асинхронный, и на каждое действие приходит callback. Из-за этого могут возникнуть затруднения при внесении записей сразу в несколько рейтингов. Как вариант — реализация цепочек из callback. Альтернативно можно вызывать ReportScore параллельно и обрабатывать все callback таким образом, чтобы только последний из них открывал рейтинг вызовом ShowAchievementsUI

PlayGamesPlatform.DebugLogEnabled = true; PlayGamesPlatform.Activate ();

Social.localUser.Authenticate (authenticated => { if (! authenticated || ! Social.localUser.authenticated) { throw new Exception (); }

Social.ReportScore (1000, «CgkI276nu8gCEAIQAA», (bool success) => { if (success) { Social.ShowAchievementsUI (); } else { throw new Exception (); } }); }); Раздел 3. Заключение К сожалению, пока нет поддержки Windows Phone. Там все совсем печально, вас ждет низкоуровневая реализация взаимодействия с Azure и написание своего UI, готовое и рабочее решение найти не удалось.На этом пока все, спасибо за внимание. В дальнейшем, если кому-то будет интересно, могу рассмотреть процесс создания web-приложения для модерации рейтингов (удаления читеров, например), т.к. в консоли разработчика нет для этого никаких средств.

© Habrahabr.ru