Привет, хабровчане!
Меня зовут Дарья Сталь, и я отвечаю за работу с пользователями новой соцсети для игроков Gameram. Сегодня торжественно открываю цикл статей, которые мы готовим с нашей командой, потому что нам интересно делиться находками и болями про разработку соцсети и, конечно, получать фидбек.
User ID (а иногда Player ID или Gamer ID) — штука, без которой не обходится почти ни одна игра с социальным взаимодействием между пользователями. Мы в Gameram решили посмотреть с точки зрения комьюнити-менеджмента (и самую чуточку со стороны разработки), как эта фича реализована в разных проектах, и можно ли сделать её удобнее для всех сторон.
Содержание статьи:
Почему мы заинтересовались вопросом UID
Зачем в играх нужен UID
Разновидности UID
Почему UID так неудобен для пользователя
Можно ли сделать использование UID удобнее
Как мы работаем с фичой Gamer ID
Опрос: какие темы про разработку социальной сети вам интересны?
Почему мы заинтересовались вопросом UID
Мы — команда Gameram — делаем социальную сеть для игроков. Сама команда почти вся из геймдева, но разработка соцсети ставит много необычных задач и вызовов (сейчас думаем, о чем рассказывать на Хабре, см. опрос в конце статьи и помогите нам выбрать тему!).
Пользователи нашего приложения часто восклицают: «Да это же инстаграм для геймеров!» — именно так. Но это только пока мы так похожи ;) Мы много думаем над УТП, а пока мы сделали первую уникальную фичу с кодовым названием «Gamer ID». И натолкнули на эту идею нас сами игроки.
Наша сеть создана для того, чтобы игроки могли поделиться эмоциями от любой игры и, конечно, найти товарищей для обмена впечатлениями и совместного прохождения. Но мы все-таки удивились, когда вдруг юзеры начали выкладывать много скриншотов со своими ID из игры. И мы задумались, что возможность быстро и удобно поделиться своим идентификатором внутри ЛЮБОЙ игры — это важно. Что если приложить усилия и сделать этот обмен максимально удобным? Из изучения темы и размышлений родилась эта статья.
Зачем в играх нужен UID
Для большинства онлайн-игр социализация — это один из способов удержать игроков. Чем больше у человека друзей внутри игры, чем чаще они вместе проводят время, тем дольше он останется с проектом и тем больше денег принесет (если речь про free-to-play). И даже если он не платящий игрок, он даст нам стабильные показатели во всяких DAU/WAU/MAU, что тоже хорошо. Поэтому развивать в игре комьюнити — это гуд. И обеспечить легкий поиск своих друзей — или новых — в игре кажется логичной задачей. Но, увы, посильной далеко не для всех.
Зачем User ID может понадобиться игроку:
найти своих знакомых в конкретном приложении;
познакомиться с новыми людьми (например, увидел ссылку или сам ID в соцсетях, ввел у себя код и подружился);
дружба в игре или приложении для обмена бонусами и подарками;
поиск тиммейтов или иной взаимопомощи в прохождении игры;
участие в конкурсах (где для идентификации часто просят как раз указать такой ID);
обращение в службу поддержки при возникновении каких-то вопросов или проблем по аккаунту.
Какие задачи решает User ID для компании:
логгирование и аналитика поведения пользователей в приложении;
решение проблем с аккаунтом пользователя через службу поддержки (потеря/кража аккаунта, непрошедшие платежи, фрод и прочее);
идентификатор пользователя может понадобиться и для решения каких-то задач разработки.
Уже понятно, что User ID решает кучу задач, используется практически во всех приложениях с регистрацией, и явно стоит присмотреться к его реализации поближе.
Разновидности UID
Мы начали с ресерча среди топовых мобильных российских и зарубежных игр на тему, как выглядят их Player ID. Конечно, посмотрели не всех, у кого-то UID и вовсе нет, но покажем несколько для наглядности:
Из таблицы видно, что большинство уникальных игровых идентификаторов пользователей представляют из себя нечитаемый и незапоминаемый набор цифр или цифр и знаков.
Цифровые обычно содержат от 5 до 20 знаков, ниже пример «маленького айдишника». Такой хотя бы реально запомнить с одного раза!
А вот с запоминанием и переписыванием следующего уже возникнут небольшие проблемы :)
Причем, в серии Call of Duty есть даже два идентификатора: UID и Player ID. Второй равен Activition ID, который, в свою очередь, нужен для регистрации на сайте разработчика и для обращения в службу поддержки. Удобство использования? Не, не слышали…
Игровые ID из букв и цифр могут быть такие:
И могут быть сильно длиннее, да еще и с дефисами. Такой вид, кстати, часто имеют промокоды для всяких игровых бонусов. Ниже мы разберемся, почему у них похожий вид.
Плюс в некоторых играх делают дополнительные коды для приглашения друзей:
И для гильдии:
В общем, когда видишь эти наборы цифр по 20 штук или незапоминающихся букв и цифр, сначала хочется сказать: блин, ребят, а можно просто использовать никнейм? Или всегда делать кастомный «айдишник»? Да хотя бы просто сделать его коротким, легким и запоминающимся… Кстати, в некоторых играх есть уникальный никнейм, такой вот уникальный «аудишник», а еще может быть какой-нибудь уникальный код для приглашения друзей, код гильдии и прочие штуки, что еще больше запутывает неопытных игроков.
Но на практике сделать «удобный айди» оказывается не так просто. Попробуем разобраться.
Почему UID так неудобен для пользователя
Этому есть причина. Когда пользователь регистрируется в игре, нам важно отличать его от других игроков, не разглашая его персональные данные. Иными словами, даже если он регистрируется с использованием электронной почты и мобильного телефона (уникальных для человека зачастую), мы не можем показывать их в игре другим людям. Даже своим сотрудникам мы будем показывать их с осторожностью и не всем.
Поэтому при регистрации аккаунта разработчики параллельно выдают игроку некий уникальный идентификатор, по которому мы можем понять — это именно вот этот Вася, а не какой-то другой.
Есть 4 варианта, как закодировать User ID.
Целочисленный и монотонно возрастающий тип идентификатора — это, как можно понять по названию, целое число, которое присваивается по порядку каждому следующему юзеру. Имеет вид, к примеру, от 00001 до 99999 (количество цифр может быть любое).Такой код проще всего обрабатывать в базе данных, именно поэтому подобные «айдишники» имеют разные сущности внутри проекта — от стикерпаков во внутреннем магазине до монстров в игре. Различные автоматизированные тесты и другие системы легко распознают его, потому что цифра «весит» меньше, чем буква или иной символ, соответственно, с таким ID проще всего работать команде разработки. Особенно при больших выборках на масштабных проектах, когда число пользователей и других штук у вас измеряется сотнями тысяч, а то и миллионами.
UUID (universally unique identifier) — сертифицированный формат идентификатора в 16-ричной системе, который содержит цифры и буквы от A до F. Он всегда выглядит как стандартный код из 36 символов: 4a27ab2e-ae70-419f-9a26-42a67805d87e. Два одинаковых кода сгенерировать практически невозможно.Часто подобный вид также имеют промокоды, потому что систему генерации «айдишников» легко взять и использовать, все уже придумали за вас. Утилита для генерации таких кодов есть в большистве ОС и библиотеках популярных языков программирования (например, попробуйте сгенерировать код в Terminal на MacOS через команду uuidgen).
Хешированный идентификатор — это код, который «под капотом» имеет какой угодно набор символов, но для пользователя преобразуется таким образом, что его нельзя расшифровать обратно. В итоге в базе данных мы можем иметь User ID из 20 цифр, а на выходе пользователь видит 6 букв и цифр, которые легче запомнить. Кроме того, такой код более защищенный с точки зрения хранения данных.
Гибридный тип идентификатора — вариант, когда ник игрока используется как ID, при этом он хешируется внутри базы каким-либо алгоритмом для удобства обработки и хранения данных. Это неудобный и ненадежный вариант, который использовали в старых играх, например, в Lineage. Для разработки это создает неудобства: в случае, если игрок хочет сменить никнейм, то нужно городить огород и вводить некие дополнительные сущности в проект.
Копнули мы глубже, в общем, и расстроились, что сделать классные UID просто так невозможно. Какие же есть варианты?
Можно ли сделать использование UID удобнее
Понятно, что чем крупнее проект, тем большая вариативность в кодах нужна разработчику, чтобы не попасть в ситуацию «у нас закончились идентификаторы». Но проблема в том, что длинные и нечитаемые ID усложняют поиск друзей. А если в игре вдобавок нет функции быстрого копирования этой штуки? Перепечатывать с экрана? Запоминать 12 знаков? Скорее уж игрок забьет и просто не станет этого делать… Потому что всё, что сложно и долго, в наше время просто не работает или работает в разы хуже, чем могло бы.
Вдобавок встречаются и косяки типа нажал Tap to copy в игре, и в буфер обмена тебе падает следующее:
[Ver: 2.4.1 ; 2.4.1][Uid: 188938419736652096][Device ID: A625C266-47B4-4473-8E7E-ED98DB243105]
Офигеть как интересно и всё понятно пользователю! :))
Отвечая на вопрос в заголовке: кажется, что создать унифицированный UID в играх, чтобы вот везде 6 знаков и не более — невозможно. Но вроде бы можно постараться сделать эту штуку просто удобнее. Позволим себе дать разработчикам несколько советов.
Для начала подумайте о том, чтобы сделать UID удобным для пользователя, а не только для разработчика. Если, конечно, пользователю зачем-то вообще нужно его знать. Если не нужно — скройте эту информацию.
Облегчите поиск ID в вашем приложении. Покажите стрелочкой при первом обращении в саппорт, напишите про это в FAQ, периодически напоминайте сообществу о том, как и зачем его искать.
Сделайте его видимым: выделите на экране, подсветите и т. п.
Добавьте рядом иконку копирования, а при нажатии выводите уведомление, что ID скопирован в буфер обмена.
И ещё: при обращении в саппорт из приложения подтягивайте автоматически всю информацию о пользователе, включая ID и технические данные. Поверьте, это облегчит жизнь и вашим сотрудникам, и пользователю при решении каких-то проблем с проектом или аккаунтом.
Некоторые проекты, например, Homescapes, просто скрывают User ID и позволяют добавлять друзей только через подключение к социальным сетям, Facebook, Instagram или Twitter. Это тоже удобный вариант, мы надеемся, что Gameram тоже однажды войдет в этот список соцсетей :)
Как мы работаем с фичой Gamer ID
Мы увидели, что игроки внутри сети ищут других игроков, и взяли их идею.
Пока мы разрабатывали фичу, ввели тестовый хештег, чтобы посмотреть, как игроки будут им пользоваться.
Понятно, что когда это один из тысяч хештегов внутри сети, видят и используют его мало, фича должна быть нативной. В результате мы добавили галочку для ввода UID/Никнейма прямо при публикации.
Сейчас постинг с UID выглядит так:
А в ленте пользователь видит цветной пост с UID и кнопкой «Копировать» (обычный непокрашенный скриншот автоматически добавляется в галерею второй картинкой):
С момента релиза фичи в июне 2021 г. игроки сделали 3756 постов, чтобы поделиться своим UID, и 37021 кликнули на кнопку Copy, чтобы скопировать чей-то UID и, надеемся, добавили себе нового друга в игре.
Возможно, сейчас это выглядит не идеально, но уже точно более юзабельно, чем пост с хештегом, где UID изображен на скриншоте. Хочется развивать эту фичу, дальше в планах сделать также версию для ID кланов, а совсем в идеале — интеграции с мобильными проектами. Если у вас есть идеи, как эту фичу можно улучшить, будем рады услышать предложения и критику в комментариях.
Спасибо за внимание!