Привет, хабровчане!

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

User ID (а иногда Player ID или Gamer ID) — штука, без которой не обходится почти ни одна игра с социальным взаимодействием между пользователями. Мы в Gameram решили посмотреть с точки зрения комьюнити-менеджмента (и самую чуточку со стороны разработки), как эта фича реализована в разных проектах, и можно ли сделать её удобнее для всех сторон.

Содержание статьи:

  • Почему мы заинтересовались вопросом UID

  • Зачем в играх нужен UID

  • Разновидности UID

  • Почему UID так неудобен для пользователя

  • Можно ли сделать использование UID удобнее

  • Как мы работаем с фичой Gamer ID

  • Опрос: какие темы про разработку социальной сети вам интересны?

Почему мы заинтересовались вопросом UID

Мы — команда Gameram — делаем социальную сеть для игроков. Сама команда почти вся из геймдева, но разработка соцсети ставит много необычных задач и вызовов (сейчас думаем, о чем рассказывать на Хабре, см. опрос в конце статьи и помогите нам выбрать тему!).

Пользователи нашего приложения часто восклицают: «Да это же инстаграм для геймеров!» — именно так. Но это только пока мы так похожи ;) Мы много думаем над УТП, а пока мы сделали первую уникальную фичу с кодовым названием «Gamer ID». И натолкнули на эту идею нас сами игроки. 

Пост от 30 мая, где грустный игрок ищет товарищей для игры в Brawl Stars
Пост от 30 мая, где грустный игрок ищет товарищей для игры в Brawl Stars

Наша сеть создана для того, чтобы игроки могли поделиться эмоциями от любой игры и, конечно, найти товарищей для обмена впечатлениями и совместного прохождения. Но мы все-таки удивились, когда вдруг юзеры начали выкладывать много скриншотов со своими ID из игры. И мы задумались, что возможность быстро и удобно поделиться своим идентификатором внутри ЛЮБОЙ игры — это важно. Что если приложить усилия и сделать этот обмен максимально удобным? Из изучения темы и размышлений родилась эта статья.

Зачем в играх нужен UID

Для большинства онлайн-игр социализация — это один из способов удержать игроков. Чем больше у человека друзей внутри игры, чем чаще они вместе проводят время, тем дольше он останется с проектом и тем больше денег принесет (если речь про free-to-play). И даже если он не платящий игрок, он даст нам стабильные показатели во всяких DAU/WAU/MAU, что тоже хорошо. Поэтому развивать в игре комьюнити — это гуд. И обеспечить легкий поиск своих друзей — или новых — в игре кажется логичной задачей. Но, увы, посильной далеко не для всех.

Зачем User ID может понадобиться игроку:

  • найти своих знакомых в конкретном приложении;

  • познакомиться с новыми людьми (например, увидел ссылку или сам ID в соцсетях, ввел у себя код и подружился);

  • дружба в игре или приложении для обмена бонусами и подарками;

  • поиск тиммейтов или иной взаимопомощи в прохождении игры;

  • участие в конкурсах (где для идентификации часто просят как раз указать такой ID);

  • обращение в службу поддержки при возникновении каких-то вопросов или проблем по аккаунту.

Какие задачи решает User ID для компании:

  • логгирование и аналитика поведения пользователей в приложении;

  • решение проблем с аккаунтом пользователя через службу поддержки (потеря/кража аккаунта, непрошедшие платежи, фрод и прочее);

  • идентификатор пользователя может понадобиться и для решения каких-то задач разработки.

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

Разновидности UID

Мы начали с ресерча среди топовых мобильных российских и зарубежных игр на тему, как выглядят их Player ID. Конечно, посмотрели не всех, у кого-то UID и вовсе нет, но покажем несколько для наглядности:

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

Цифровые обычно содержат от 5 до 20 знаков, ниже пример «маленького айдишника». Такой хотя бы реально запомнить с одного раза!

Пример User ID из игры Hustle Custle
Пример User ID из игры Hustle Custle

А вот с запоминанием и переписыванием следующего уже возникнут небольшие проблемы :)

Поди найди эти «айди» в Call of Duty Mobile!
Поди найди эти «айди» в Call of Duty Mobile!

Причем, в серии Call of Duty есть даже два идентификатора: UID и Player ID. Второй равен Activition ID, который, в свою очередь, нужен для регистрации на сайте разработчика и для обращения в службу поддержки. Удобство использования? Не, не слышали…

Игровые ID из букв и цифр могут быть такие:

Пример ID из игры Dragonscapes
Пример ID из игры Dragonscapes

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

Плюс в некоторых играх делают дополнительные коды для приглашения друзей:

Пример кода для приглашения друзей из игры Royal Farm
Пример кода для приглашения друзей из игры Royal Farm

И для гильдии:

Пример кода для приглашения в гильдию из игры Royal Farm
Пример кода для приглашения в гильдию из игры Royal Farm

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

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

Почему UID так неудобен для пользователя

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

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

Есть 4 варианта, как закодировать User ID.

  • Целочисленный и монотонно возрастающий тип идентификатора — это, как можно понять по названию, целое число, которое присваивается по порядку каждому следующему юзеру. Имеет вид, к примеру, от 00001 до 99999 (количество цифр может быть любое).Такой код проще всего обрабатывать в базе данных, именно поэтому подобные «айдишники» имеют разные сущности внутри проекта — от стикерпаков во внутреннем магазине до монстров в игре. Различные автоматизированные тесты и другие системы легко распознают его, потому что цифра «весит» меньше, чем буква или иной символ, соответственно, с таким ID проще всего работать команде разработки. Особенно при больших выборках на масштабных проектах, когда число пользователей и других штук у вас измеряется сотнями тысяч, а то и миллионами.

Пример целочисленного ID из игры Animal Crossing
Пример целочисленного ID из игры Animal Crossing
  • UUID (universally unique identifier) — сертифицированный формат идентификатора в 16-ричной системе, который содержит цифры и буквы от A до F. Он всегда выглядит как стандартный код из 36 символов: 4a27ab2e-ae70-419f-9a26-42a67805d87e. Два одинаковых кода сгенерировать практически невозможно.Часто подобный вид также имеют промокоды, потому что систему генерации «айдишников» легко взять и использовать, все уже придумали за вас. Утилита для генерации таких кодов есть в большистве ОС и библиотеках популярных языков программирования (например, попробуйте сгенерировать код в Terminal на MacOS через команду uuidgen).

  • Хешированный идентификатор — это код, который «под капотом» имеет какой угодно набор символов, но для пользователя преобразуется таким образом, что его нельзя расшифровать обратно. В итоге в базе данных мы можем иметь User ID из 20 цифр, а на выходе пользователь видит 6 букв и цифр, которые легче запомнить. Кроме того, такой код более защищенный с точки зрения хранения данных. 

Пример хешированного UID (под аватаром) из игры Brawl Stars
Пример хешированного UID (под аватаром) из игры Brawl Stars
  • Гибридный тип идентификатора — вариант, когда ник игрока используется как 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 знаков и не более — невозможно. Но вроде бы можно постараться сделать эту штуку просто удобнее. Позволим себе дать разработчикам несколько советов.

  1. Для начала подумайте о том, чтобы сделать UID удобным для пользователя, а не только для разработчика. Если, конечно, пользователю зачем-то вообще нужно его знать. Если не нужно — скройте эту информацию.

  2. Облегчите поиск ID в вашем приложении. Покажите стрелочкой при первом обращении в саппорт, напишите про это в FAQ, периодически напоминайте сообществу о том, как и зачем его искать.

  3. Сделайте его видимым: выделите на экране, подсветите и т. п.

  4. Добавьте рядом иконку копирования, а при нажатии выводите уведомление, что ID скопирован в буфер обмена.

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

Некоторые проекты, например, Homescapes, просто скрывают User ID и позволяют добавлять друзей только через подключение к социальным сетям, Facebook, Instagram или Twitter. Это тоже удобный вариант, мы надеемся, что Gameram тоже однажды войдет в этот список соцсетей :)

Как мы работаем с фичой Gamer ID

Мы увидели, что игроки внутри сети ищут других игроков, и взяли их идею. 

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

Страница постов по хештегу в приложении Gameram
Страница постов по хештегу в приложении Gameram

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

Сейчас постинг с UID выглядит так:

Окно создания поста в приложении Gameram
Окно создания поста в приложении Gameram

А в ленте пользователь видит цветной пост с UID и кнопкой «Копировать» (обычный непокрашенный скриншот автоматически добавляется в галерею второй картинкой):

Пост с UID в ленте приложения Gameram
Пост с UID в ленте приложения Gameram

С момента релиза фичи в июне 2021 г. игроки сделали 3756 постов, чтобы поделиться своим UID, и 37021 кликнули на кнопку Copy, чтобы скопировать чей-то UID и, надеемся, добавили себе нового друга в игре. 

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

Спасибо за внимание!

Комментарии (12)


  1. crazyproger
    01.12.2021 13:43
    +2

    Зоопарка ID никак не избежать, это факт. Здесь стоит смотреть на каждую игру как на отдельную соц.сеть - у каждой соц.сети свои id и частно разного формата. Однако опыт соц.сетей указывает направление куда нужно двигаться - id совсем скрывать считаю не обязательным, однако нужно сделать все чтоб игрока можно было найти без copy'n'paste непосредственно id. По кнопке копирования в игре хорошо бы формировать диплинк, открыв который товарищ сразу попадет на экран моего профиля в внутри игры. В соц.сетях - диплинк это урл страницы пользователя.

    Я мало такого видел в играх, но как по мне это сильно лучше чем идти в меню поиска и там вставлять из буфера.

    Если игра имеет такой механизм диплинков - все просто, я внутри gameram находил бы на странице кнопку-диплинк рядом с интересующей игрой, кликал и сразу попадал бы в профиль игрока в этой игре на своем девайсе, где можно "подружиться"/пойти поиграть сквадом/вызвать на дуэль и т.д. Но здесь нет единого стандарта на стороне ОС, по этому к сожалению наличие фичи остается на откуп разработчикам.

    Однако рано или поздно, думаю, вы будете делать свою sdk для интеграции с играми - и там эту фичу можно предусмотреть как обязательную(ну или рекомендуемую) для реализации со стороны игры.


    1. Darya_Steel Автор
      01.12.2021 13:45

      Спасибо за комментарий и идеи! Да, наверняка будем делать SDK. Насколько мы сможем влиять своим мнением на разработчиков и рекомендовать им делать диплинки — посмотрим, когда вырастем :D


  1. ky0
    01.12.2021 13:49

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


    1. Darya_Steel Автор
      01.12.2021 13:51
      +1

      Что значит «настоящие игры»? :)


      1. ky0
        01.12.2021 13:57

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


        1. Darya_Steel Автор
          01.12.2021 14:12

          Ок :) Посмотрела по диагонали пока, но точка зрения понятна. За ссылки на статьи спасибо, почитаю.
          Институт репутации — хорошая история для игрового сообщества, но слабо верится, что его реалистично создать. Тут всё как в жизни: много кто хочет построить империю и контролировать каждого ее жителя, но всегда будут те, кто сопротивляются =) Игроков, которые не боятся за свою репутацию, и так довольно легко изучить по открытым аккаунтам в сторах или одинаковым/похожим никам, принадлежности к гильдии.


  1. khegay
    01.12.2021 15:46


    1. Darya_Steel Автор
      01.12.2021 16:33

      Аххах, всё так и происходит :D


  1. saboteur_kiev
    01.12.2021 17:06
    +1

    3756 постов, чтобы поделиться своим UID

    Когда игроков будет пару сотен миллионов, как ваш короткий и удобный UID для пользователя справится?

    "Но проблема в том, что длинные и нечитаемые ID усложняют поиск друзей"

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

    А если UID копировать, то неважно какой он длины. С этим согласен, что скрывать его нужно недалеко.


    1. Darya_Steel Автор
      01.12.2021 18:29

      Когда игроков будет пару сотен миллионов, как ваш короткий и удобный UID для пользователя справится?

      Ну, в тексте было про ограничение в количестве, да. Обычно в играх, где короткий uid (например, в LDoE), еще идет привязка к серверу или что-то подобное. Мы внутри соцсети имеем скрытый id пользователя как раз, а вовне можно пошарить ссылку на свой профиль вот такого вида: https://links.gameram.com/a3hzV7g9mmjAf6UAA

      В остальном спасибо за комментарий! Нечего возразить =)


      1. cleverate
        01.12.2021 21:27

        А ещё было бы не плохо, что бы такие профили можно было исследовать через веб, дабы не ожидая запуска игры/с другой платформы закинуть в друзья и пообщаться

        image


        1. Darya_Steel Автор
          02.12.2021 14:48
          +1

          У нас веб-версия в планах на следующий год ;)