Контрольный список качества для игровых сервисов Google Play

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

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

Для каждой целевой области в настоящем документе приведены следующие сведения:

  • Контрольные списки с подробным описанием минимальных требований.
  • Лучшие практики для улучшения вашей игры.

Максимально следуйте этим рекомендациям, чтобы выпустить высококачественную игру и предоставить своим игрокам наилучший продукт.

1. Аутентификация платформы

Следующие задачи контрольного списка относятся к реализации функции аутентификации игроков в вашей игре. Подробнее о том, как работает аутентификация и как её реализовать, читайте в статье «Аутентификация платформы» . Примеры кода для реализации аутентификации в мобильных играх см. в статье «Аутентификация платформы на Android» .

ИДЕНТИФИКАТОР Важность Описание
1.1 Необходимый Аутентификация игроков с помощью игровых сервисов Google Play.
1.1.1. Инициализируйте SDK игровых сервисов Google Play и проверьте, аутентифицирован ли игрок. Если игрок не аутентифицирован автоматически, предоставьте возможность ручного входа.

Автоматическая аутентификация позволит игрокам быстро пройти идентификацию и получить доступ к полному набору функций, предоставляемых игровыми сервисами Google Play.

Если пользователь откажется, игра должна предоставлять ему возможность пройти аутентификацию позже (например, с помощью кнопки в игровом меню и т. д.). Кнопка входа должна быть легкодоступна для игроков; например, она должна быть доступна с главного экрана или располагаться на экране настроек. Эта кнопка не должна быть скрыта на нескольких уровнях в игровом меню.

1.2 Лучшие практики Следуйте рекомендациям Google по брендингу.

Чтобы предоставить игрокам привлекательный и единообразный комплексный опыт, внедрите правила брендинга игровых сервисов Google Play .

1.3 Лучшие практики Напомните игрокам, что они прошли аутентификацию.

Дайте аутентифицированным игрокам соответствующее напоминание или сигнал, когда ваша игра выполняет какие-либо действия от их имени. Например, когда аутентифицированный игрок завершает уровень, вы можете вывести следующее сообщение, указывающее на то, что его счёт и достижения автоматически загружаются: «Вы аутентифицированы в Google. Ваши достижения и результаты будут сохранены автоматически».

1.4 Необходимый Создавайте резервную копию прогресса игрока, используя идентификатор Play Games Services.

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

Если пользователь не аутентифицирован, попробуйте сохранить его прогресс локально, а затем синхронизировать его, когда игрок наконец аутентифицируется. Это поможет предотвратить потерю прогресса, если игрок отложит аутентификацию в вашей игре.

2. Достижения

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

ИДЕНТИФИКАТОР Важность Описание
2.1 Необходимый Минимум десять видимых достижений, полученных за время игры.

Не менее 10 видимых достижений должны быть в раскрытом состоянии.

2.2 Необходимый По крайней мере четыре достижения должны быть разумно и надежно достижимы каждым игроком в течение часа игры.

2.3 Необходимый Все достижения должны иметь уникальные названия и описания. Они должны чётко указывать пользователям, что нужно сделать для их получения.

2.4 Необходимый Все достижения должны иметь уникальные иконки.

Значки должны быть созданы в формате PNG, JPEG или JPG размером 512 x 512 пикселей на прозрачном фоне. Подробнее см. в руководстве по созданию значков .

2.5 Необходимый Убедитесь, что все достижения достижимы.

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

2.6 Лучшая практика Используйте постепенные достижения для демонстрации прогресса.

Дополнительные достижения накапливаются в ходе игровых сессий.

Пример постепенного достижения, показывающий прогресс игрока на 23%.
Инкрементное достижение, показывающее прогресс игрока на 23%.
2.7 Лучшая практика По крайней мере сорок или более достижений, распределенных по всему игровому процессу, включая те, которые удивляют и радуют, отмечают важные этапы и фиксируют прогресс игрока.

Не менее сорока достижений в любом состоянии за время игры.

2.9 Лучшая практика Используйте скрытые достижения для создания эффекта неожиданности и восторга.

Скрытые достижения означают, что подробности о достижении скрыты от игрока.

2.10 Лучшая практика Добавляйте новые достижения при добавлении в игру новых уровней или эпизодов.

Более подробную информацию смотрите в разделе Баллы и опыт .

2.11 Лучшая практика Оценивайте достижения пропорционально.

Очки достижений должны быть пропорциональны количеству времени или навыка, необходимого для получения этого достижения.

2.12 Лучшая практика Достижения в дизайне для различных уровней сложности.

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

Например, на следующем снимке экрана показано труднодоступное достижение, которое помогает мотивировать и удерживать поклонников игры.

трудно получить достижение, требующее заработать 5 тыс. самоцветов
Трудно получить достижение, требующее заработать 5 тыс. самоцветов.
2.13 Лучшая практика Не загружайте достижения заранее.

Избегайте выдачи более одного достижения в первые 5 минут игры, так как новички в игре не будут достаточно заинтересованы и не проявят к ней интереса.

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

2.14 Лучшая практика Определите достижения на основе захватывающих внутриигровых действий.

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

2.15 Лучшая практика Используйте цветные значки достижений.

В игровых сервисах Play значки достижений отображаются в оттенках серого, чтобы показать, заработаны они или нет. Если вы ограничены использованием только чёрных (или белых) значков достижений, отображайте их на цветном фоне.

2.16 Лучшая практика Минимизируйте использование скрытых достижений.

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

2.17 Лучшая практика Избегайте достижений, которые слишком зависят от случая.

«Найти 100 сундуков с сокровищами» — достижение лучше, чем «Найти предмет, который с вероятностью 1% может появиться в сундуке с сокровищами».

2.18 Лучшая практика Думайте как «Охотник за достижениями».

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

Примеры

Несколько примеров, которые помогут вам разработать высококачественные достижения:

Хороший пример

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

Хорошие достижения с уникальными названиями, значками и описаниями.
Хорошие достижения с уникальными названиями, значками и описаниями (кликните для увеличения).

Плохой пример

На следующем снимке экрана показаны неудачные примеры достижений.

Плохие достижения с повторяющимися названиями, значками и описаниями.
Плохие достижения с повторяющимися названиями, значками и описаниями (кликните для увеличения).

3. Таблицы лидеров

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

ИДЕНТИФИКАТОР Важность Описание
3.1 Лучшая практика Сделайте так, чтобы таблицы лидеров отображались в главном меню и после ключевых переходов.

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

3.2 Лучшая практика Определите верхние пределы баллов, которые можно отправить.

Если возможно, добавьте ограничения при определении ваших таблиц лидеров, чтобы явно поддельные результаты отбрасывались.

3.3 Лучшая практика Используйте пользовательские значки.

Создайте собственный значок для каждой определенной вами таблицы лидеров; не используйте просто значок вашей игры, так как он будет плохо отображаться в приложении Google Play Игры.

3.4 Лучшая практика Поддерживайте разумную частоту отправки результатов.

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

3.5 Лучшие практики Используйте теги оценок.

Теги очков — это дополнительные данные, которые можно отправить вместе с вашими результатами. Например, вы можете использовать теги очков как флаг, подтверждающий, что отправленный игроком счёт действителен.

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

3.6 Лучшие практики Креативно спроектируйте свой собственный пользовательский интерфейс таблицы лидеров

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

3.7 Лучшие практики Покажите игрокам, как они выглядят на фоне конкурентов.

API таблиц лидеров поддерживает отображение окон с результатами (например, рейтинг игрока с точностью +/-10). Если вы создаёте пользовательское представление, это может стать эффективным способом мотивации. Его можно показывать сразу после критического перехода в игре (например, в конце уровня или после смерти персонажа игрока). Избегайте лишних щелчков между вашими игроками и информацией об их рейтинге.

4. Друзья

Следующий контрольный список задач применим к реализации сервиса «Друзья» в вашей игре.

ИДЕНТИФИКАТОР Важность Описание
4.1 Необходимый Когда игроки отображаются в списке, показывать значок Play Games Services рядом с пользователями, имеющими профиль Play Games.

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

4.1.1. Значок сервисов Play Games должен быть кликабельным.
Если пользователь нажимает на значок, игра должна вызвать getCompareProfileIntent() или getCompareProfileIntentWithAlternativeNameHints() чтобы отобразить пользовательский интерфейс, в котором пользователь может сравнить себя с профилем другого игрока.
4.1.2. Поддержка профилей игроков и приглашений друзей для настраиваемых имен игроков в игре.
Если игрок задаёт другое имя в игре (и не использует имя своего профиля в Play Games), используйте getCompareProfileIntentWithAlternativeNameHints() чтобы предоставить это альтернативное игровое имя как текущему игроку, так и игроку, которого он просматривает, в качестве контекста для просмотра профиля и любых отправленных из него приглашений в друзья. В качестве значений передавайте только постоянные глобальные имена игроков, а не произвольный пользовательский контент. Это требование означает, что приглашения в друзья, отправленные из игры, будут предоставлять контекст обоим игрокам:
  • Получатель увидит игровое имя отправителя приглашения, а также название игры.
  • При просмотре дружбы отправитель по-прежнему будет видеть игровое имя получателя, а также игру, в которой он ее инициировал.
4.2 Лучшая практика Используйте разные значки, чтобы показать, какие пользователи Play Games уже являются друзьями, а какие ещё не являются друзьями, но прошли аутентификацию в Play Games. Используйте два значка для пользователей Play Games: один для «Друзья» и один для «Не друзья» (или когда статус дружбы неизвестен).
Значок друзей
Значок «Не друзья»
4.3 Лучшая практика Вызывайте loadFriends() при каждой аутентификации и отображайте список друзей, чтобы убедиться, что он актуален. Убедитесь, что игроки видят обновлённый список.
4.4 Лучшая практика Если в вашей игре уже есть друзья, добавьте их в Play Games через сервис «Друзья». Если игрок есть в списке друзей и является другом в Play Games, отобразите значок «Друзья».
4.5 Лучшая практика Если игрок отклонил запрос на доступ к списку друзей, не показывайте диалоговое окно с запросом на доступ снова, если только пользователь не предпринял действий, указывающих на то, что он хочет предоставить доступ (например, нажав кнопку **Импортировать друзей из Play Games**).
4.6 Лучшая практика Если игрок запретил себе доступ к списку друзей, предоставьте ему возможность предоставить доступ к списку друзей в будущем (например, после нажатия кнопки **Импортировать друзей из Play Games**).
4.7 Лучшая практика Если вы используете идентификатор игрока или список друзей с внутренним сервером, необходимо обеспечить безопасный доступ к этому идентификатору или списку. Кроме того, для некоторых старых игр и игроков идентификатор игрока, возвращаемый Android SDK, может отличаться от идентификатора, который видят другие игроки при просмотре этого игрока в той же игре; это особенно актуально при использовании списка друзей. Однако возвращаемый в REST API player_id всегда является постоянным и всегда является идентификатором, видимым другим игрокам.

5. Ограничение квот и ставок

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

ИДЕНТИФИКАТОР Важность Описание
5.1 Лучшая практика Используйте клиентские библиотеки.

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

Клиентская библиотека Android не будет отправлять счёт игрока на сервер, если ваш счёт ниже, чем тот, который вы недавно отправили. Библиотека Android также автоматически объединяет частые вызовы для увеличения достижений, когда обнаруживает, что скорость ограничена.

5.2 Лучшие практики Объедините частые звонки с постепенными достижениями.

Если вы создаёте файтинг и у вас есть достижение «Нанести 5000 ударов», не отправляйте вызов достижения каждый раз, когда кто-то наносит удар. Дождитесь конца раунда, а затем отправьте один вызов increment(xxx) (где xxx — общее количество ударов, нанесённых в этом раунде), или дождитесь, пока не будет нанесено 50 ударов, прежде чем отправлять один вызов increment(50) ».

5.3 Лучшие практики Будьте внимательны при использовании.

Следите за количеством вызовов, которые вы совершаете в игровых сервисах Google Play. Даже если вы не превышаете лимит, частые вызовы могут привести к высокому сетевому трафику и ускорению разрядки аккумулятора устройства. Чтобы избежать этого, можно использовать следующие методы:

  • При запуске сохраненных игр старайтесь запускать их раз в несколько минут, а не при каждом нажатии кнопки.
  • Подождите, пока игра игрока закончится, прежде чем отправлять лучший результат.
  • Проверьте дневную квоту вашего приложения, перейдя на панель управления вашего проекта в Google Cloud Platform.

6. Сохраненные игры

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

ИДЕНТИФИКАТОР Важность Описание
6.1 Необходимый Добавьте метаданные, чтобы предоставить дополнительный контекст для сохраненных игр.

При сохранении игры необходимо как минимум включить следующие метаданные:

  • Изображение на обложке — снимок экрана, на котором запечатлен ход игры и который напоминает игрокам о том, где они остановились.
  • Описание — краткое описание, предоставляющее дополнительный контекст для изображения на обложке.
  • Отметка времени — указывает, как долго игрок играет в эту сохраненную игру.
6.2 Необходимый Разрешить игрокам загружать сохраненные игры.

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