Привет, хабровчане! Меня зовут Дарья Сталь, и я отвечаю за работу с пользователями новой соцсети для игроков Gameram. Сегодня торжественно открываю цикл статей, которые мы готовим с нашей командой, потому что нам интересно делиться находками и болями про разработку соцсети и, конечно, получать фидбек. User ID (а иногда Player ID или Gamer ID) — штука, без которой не обходится почти ни одна игра с социальным взаимодействием между пользователями. Мы в Gameram решили посмотреть с точки зрения комьюнити-менеджмента (и самую чуточку со стороны разработки), как эта фича реализована в разных проектах, и можно ли сделать её удобнее для всех сторон. Содержание статьи: Почему мы заинтересовались вопросом UID Зачем в играх нужен UID Разновидности UID Почему UID так неудобен для пользователя Можно ли сделать использование UID удобнее Как мы работаем с фичой Gamer ID Опрос: какие темы про разработку социальной сети вам интересны? Мы — команда Gameram — делаем социальную сеть для игроков. Сама команда почти вся из геймдева, но разработка соцсети ставит много необычных задач и вызовов (сейчас думаем, о чем рассказывать на Хабре, см. опрос в конце статьи и помогите нам выбрать тему!). Пользователи нашего приложения часто восклицают: «Да это же инстаграм для геймеров!» — именно так. Но это только пока мы так похожи ;) Мы много думаем над УТП, а пока мы сделали первую уникальную фичу с кодовым названием «Gamer ID». И натолкнули на эту идею нас сами игроки.  Наша сеть создана для того, чтобы игроки могли поделиться эмоциями от любой игры и, конечно, найти товарищей для обмена впечатлениями и совместного прохождения. Но мы все-таки удивились, когда вдруг юзеры начали выкладывать много скриншотов со своими ID из игры. И мы задумались, что возможность быстро и удобно поделиться своим идентификатором внутри ЛЮБОЙ игры — это важно. Что если приложить усилия и сделать этот обмен максимально удобным? Из изучения темы и размышлений родилась эта статья. Для большинства онлайн-игр социализация — это один из способов удержать игроков. Чем больше у человека друзей внутри игры, чем чаще они вместе проводят время, тем дольше он останется с проектом и тем больше денег принесет (если речь про free-to-play). И даже если он не платящий игрок, он даст нам стабильные показатели во всяких DAU/WAU/MAU, что тоже хорошо. Поэтому развивать в игре комьюнити — это гуд. И обеспечить легкий поиск своих друзей — или новых — в игре кажется логичной задачей. Но, увы, посильной далеко не для всех. Зачем User ID может понадобиться игроку: найти своих знакомых в конкретном приложении; познакомиться с новыми людьми (например, увидел ссылку или сам ID в соцсетях, ввел у себя код и подружился); дружба в игре или приложении для обмена бонусами и подарками; поиск тиммейтов или иной взаимопомощи в прохождении игры; участие в конкурсах (где для идентификации часто просят как раз указать такой ID); обращение в службу поддержки при возникновении каких-то вопросов или проблем по аккаунту. Какие задачи решает User ID для компании: логгирование и аналитика поведения пользователей в приложении; решение проблем с аккаунтом пользователя через службу поддержки (потеря/кража аккаунта, непрошедшие платежи, фрод и прочее); идентификатор пользователя может понадобиться и для решения каких-то задач разработки. Уже понятно, что User ID решает кучу задач, используется практически во всех приложениях с регистрацией, и явно стоит присмотреться к его реализации поближе. Мы начали с ресерча среди топовых мобильных российских и зарубежных игр на тему, как выглядят их Player ID. Конечно, посмотрели не всех, у кого-то UID и вовсе нет, но покажем несколько для наглядности: Из таблицы видно, что большинство уникальных игровых идентификаторов пользователей представляют из себя нечитаемый и незапоминаемый набор цифр или цифр и знаков.  Цифровые обычно содержат от 5 до 20 знаков, ниже пример «маленького айдишника». Такой хотя бы реально запомнить с одного раза! А вот с запоминанием и переписыванием следующего уже возникнут небольшие проблемы :) Причем, в серии Call of Duty есть даже два идентификатора: UID и Player ID. Второй равен Activition ID, который, в свою очередь, нужен для регистрации на сайте разработчика и для обращения в службу поддержки. Удобство использования? Не, не слышали… Игровые ID из букв и цифр могут быть такие: И могут быть сильно длиннее, да еще и с дефисами. Такой вид, кстати, часто имеют промокоды для всяких игровых бонусов. Ниже мы разберемся, почему у них похожий вид. Плюс в некоторых играх делают дополнительные коды для приглашения друзей: И для гильдии: В общем, когда видишь эти наборы цифр по 20 штук или незапоминающихся букв и цифр, сначала хочется сказать: блин, ребят, а можно просто использовать никнейм? Или всегда делать кастомный «айдишник»? Да хотя бы просто сделать его коротким, легким и запоминающимся… Кстати, в некоторых играх есть уникальный никнейм, такой вот уникальный «аудишник», а еще может быть какой-нибудь уникальный код для приглашения друзей, код гильдии и прочие штуки, что еще больше запутывает неопытных игроков. Но на практике сделать «удобный айди» оказывается не так просто. Попробуем разобраться. Этому есть причина. Когда пользователь регистрируется в игре, нам важно отличать его от других игроков, не разглашая его персональные данные. Иными словами, даже если он регистрируется с использованием электронной почты и мобильного телефона (уникальных для человека зачастую), мы не можем показывать их в игре другим людям. Даже своим сотрудникам мы будем показывать их с осторожностью и не всем. Поэтому при регистрации аккаунта разработчики параллельно выдают игроку некий уникальный идентификатор, по которому мы можем понять — это именно вот этот Вася, а не какой-то другой. Есть 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 просто так невозможно. Какие же есть варианты? Понятно, что чем крупнее проект, тем большая вариативность в кодах нужна разработчику, чтобы не попасть в ситуацию «у нас закончились идентификаторы». Но проблема в том, что длинные и нечитаемые ID усложняют поиск друзей. А если в игре вдобавок нет функции быстрого копирования этой штуки? Перепечатывать с экрана? Запоминать 12 знаков? Скорее уж игрок забьет и просто не станет этого делать… Потому что всё, что сложно и долго, в наше время просто не работает или работает в разы хуже, чем могло бы. Вдобавок встречаются и косяки типа нажал Tap to copy в игре, и в буфер обмена тебе падает следующее:  Офигеть как интересно и всё понятно пользователю! :)) Отвечая на вопрос в заголовке: кажется, что создать унифицированный UID в играх, чтобы вот везде 6 знаков и не более — невозможно. Но вроде бы можно постараться сделать эту штуку просто удобнее. Позволим себе дать разработчикам несколько советов. Для начала подумайте о том, чтобы сделать UID удобным для пользователя, а не только для разработчика. Если, конечно, пользователю зачем-то вообще нужно его знать. Если не нужно — скройте эту информацию. Облегчите поиск ID в вашем приложении. Покажите стрелочкой при первом обращении в саппорт, напишите про это в FAQ, периодически напоминайте сообществу о том, как и зачем его искать. Сделайте его видимым: выделите на экране, подсветите и т. п. Добавьте рядом иконку копирования, а при нажатии выводите уведомление, что ID скопирован в буфер обмена. И ещё: при обращении в саппорт из приложения подтягивайте автоматически всю информацию о пользователе, включая ID и технические данные. Поверьте, это облегчит жизнь и вашим сотрудникам, и пользователю при решении каких-то проблем с проектом или аккаунтом. Некоторые проекты, например, Homescapes, просто скрывают User ID и позволяют добавлять друзей только через подключение к социальным сетям, Facebook, Instagram или Twitter. Это тоже удобный вариант, мы надеемся, что Gameram тоже однажды войдет в этот список соцсетей :) Мы увидели, что игроки внутри сети ищут других игроков, и взяли их идею.  Пока мы разрабатывали фичу, ввели тестовый хештег, чтобы посмотреть, как игроки будут им пользоваться. Понятно, что когда это один из тысяч хештегов внутри сети, видят и используют его мало, фича должна быть нативной. В результате мы добавили галочку для ввода UID/Никнейма прямо при публикации. Сейчас постинг с UID выглядит так: А в ленте пользователь видит цветной пост с UID и кнопкой «Копировать» (обычный непокрашенный скриншот автоматически добавляется в галерею второй картинкой): С момента релиза фичи в июне 2021 г. игроки сделали 3756 постов, чтобы поделиться своим UID, и 37021 кликнули на кнопку Copy, чтобы скопировать чей-то UID и, надеемся, добавили себе нового друга в игре.  Возможно, сейчас это выглядит не идеально, но уже точно более юзабельно, чем пост с хештегом, где UID изображен на скриншоте. Хочется развивать эту фичу, дальше в планах сделать также версию для ID кланов, а совсем в идеале — интеграции с мобильными проектами. Если у вас есть идеи, как эту фичу можно улучшить, будем рады услышать предложения и критику в комментариях. Спасибо за внимание! Руководитель комьюнити Gameram