Рейтинг игроков (leaderboard, scores) для мобильной игры — вещь интересная и порой даже необходимая. В этой статье я расскажу о том, как добавить рейтинг игроков в приложение, созданное в Unity, т.к. в рунете информации об этом не так много. Кроме того, рейтинг будет кросплатформенный (android + iOS), однако без поддержки Windows Phone.
Раздел 1. КОНСОЛЬ РАЗРАБОТЧИКА
1. Считаем, что приложение уже опубликовано на Google Play, т.е. у нас есть package name, например com.AnonymousInteractives.NakedSnake
2. Идем в [консоль разработчика] (Developer Console), слева открываем [игровые сервисы] (Game Services)
3. Жмем «Добавить новую игру» и указываем название игры и категорию. Тут может возникнуть некоторая путаница. Термин «игра» здесь означает игровой сервис. Название может не совпадать с реальным названием вашего приложения. У игрового сервиса появляется уникальный идентификатор, например 88171208539
4. Заполняем [сведения об игре] — описание и картинки
5. В разделе [связанные приложения] можно связать с игровым сервисом до 20 приложений. Это могут быть android, iOS и web приложения. Выбираем android. Далее нужно только ввести название пакета приложения из пункта 1
6. В разделе [достижения] нужно добавить достижения. Для тестирования пункт можно пропустить, но для публикации нужно добавить не менее 5 достижений. Если у нас в игре нет достижений, то просто создаем фейковые достижения 1, 2, 3, 4, 5 и забываем про них
7. Наконец мы переходим в раздел [рейтинг игроков]. Создаем необходимые нам рейтинги, тут все очевидно. В итоге получаем рейтинг с каким-нибудь идентификатором, например CgkI276nu8gCEAIQAA. Впоследствии он и идентификатор игрового сервиса понадобятся нам для настройки плагина в Unity и обращения к сервису
8. В разделе [тестирование] можно добавить аккаунты для тестирования. Причем можно указать именно почтовые аккаунты, а не группу Google+, как при тестировании самой игры
9. В разделе [публикация] можно опубликовать игру, хотя для тестирования это не обязательно. Все, консоль разработчика нам больше не понадобится
Раздел 2. Unity
1. Переходим на страницу проекта play-games-plugin-for-unity и скачиваем проект (ссылка «Download ZIP»). В архиве находим файл GooglePlayGamesPlugin-0.9.02.unitypackage
2. Открываем проект приложения в Unity
3. Дважды кликаем по GooglePlayGamesPlugin-0.9.02.unitypackage и импортируем пакет в проект
4. Переходим в меню File / Play Games — Android setup и вводим идентификатор нашего сервиса (см. шаг 3 из предыдущего раздела). Все, на этом настройка завершена!
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-приложения для модерации рейтингов (удаления читеров, например), т.к. в консоли разработчика нет для этого никаких средств.
Автор: natexriver