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

в 9:10, , рубрики: Google API, Google Play, unity, unity3d, метки: ,

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

image

Раздел 1. КОНСОЛЬ РАЗРАБОТЧИКА

1. Считаем, что приложение уже опубликовано на Google Play, т.е. у нас есть package name, например com.AnonymousInteractives.NakedSnake

2. Идем в [консоль разработчика] (Developer Console), слева открываем [игровые сервисы] (Game Services)

image

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

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.unitypackage

2. Открываем проект приложения в 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-приложения для модерации рейтингов (удаления читеров, например), т.к. в консоли разработчика нет для этого никаких средств.

Автор: natexriver

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js