Реализация системы авторизации и профилей пользователей

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

От иммерсивных приложений до игровых миров и 3D-сцен

Наша выделенная команда для VR/AR/MR-разработки, Unity-продакшна и 3D-моделирования и анимации с собственными кейсами и презентациями.

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Реализация системы авторизации и профилей пользователей
Средняя
от 3 рабочих дней до 2 недель
Часто задаваемые вопросы

Наши компетенции

Какие этапы разработки игры?

Последние работы

  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

Реализация системы авторизации и профилей пользователей

Игра без сохранения прогресса на сервере — это проблема при первой же переустановке или смене устройства. Игрок прошёл 30 уровней, потерял телефон — и всё с нуля. Для casual-игры это критично. Для мидкора с платными апгрейдами — потеря прогресса после покупки создаёт чарджбек и негативный отзыв в сторе.

Серверная авторизация + cloud save — это не «фича для больших игр». Это базовая гигиена для любого проекта с монетизацией.

Архитектура авторизации: что выбрать

Guest account (Device ID) → Upgrade to Full Account. Паттерн, который максимально снижает барьер входа. Игрок запускает игру без регистрации — создаётся гостевой аккаунт, привязанный к Device ID / Apple IDFA / Android GAID. Прогресс сохраняется. При желании — конвертирует в полный аккаунт (email, Apple Sign In, Google Play Games).

Ключевой момент — account merge: у игрока может быть гостевой аккаунт на одном устройстве и полный аккаунт на другом. Нужна логика объединения: какой прогресс «побеждает»? Обычно берём тот, что старше или тот, где выше уровень. Это бизнес-решение, которое нужно принять заранее — не в момент первого бага.

Federated Identity (Social Login). Sign In with Apple (обязателен для iOS если есть другие social logins), Google Play Games (Android), Facebook, Steam. Не нужно хранить пароли — провайдер берёт аутентификацию на себя. Получаем JWT-токен, проверяем его подпись на сервере, выдаём собственный session token.

Sign In with Apple — особый случай. Apple требует поддержки этого метода если в игре есть хотя бы один другой third-party login. Кроме того, Apple может скрывать email пользователя и выдавать relay email. Это нужно учитывать: нельзя полагаться на email как уникальный идентификатор у Apple-пользователей.

Email + Password. Классика, но требует: хранение паролей через bcrypt (не MD5 и не SHA1), rate limiting на login endpoint, secure password reset flow через email с time-limited токенами. В managed backend (PlayFab, Nakama) это есть из коробки. В кастомном — нужно реализовать самостоятельно.

Структура Player Profile

Профиль игрока — не просто {username, email, level}. Правильная структура разделяет данные по типу и частоте обновления:

Аккаунтные данные (persistent, редко меняются):

  • playerId — внутренний UUID, никогда не меняется
  • email, username, avatarUrl
  • linkedAccounts — массив привязанных провайдеров (google, apple, steam)
  • createdAt, lastLoginAt

Игровой прогресс (persistent, часто обновляется):

  • level, experience
  • completedQuests[], unlockedContent[]
  • inventoryId → ссылка на отдельную коллекцию (инвентарь может быть большим)
  • statistics — kills, deaths, playtime, wins/losses

Сессионные данные (ephemeral, не сохраняются):

  • Текущая позиция в матче, временные баффы, сессионная статистика — это в памяти сервера, не в БД

Разделение важно для производительности: при входе в игру загружаем только аккаунтные данные и базовый прогресс. Инвентарь на 200 предметов подгружаем лениво при открытии инвентарного экрана.

Безопасность: что нельзя упустить

JWT validation на каждом запросе. Session token — JWT с подписью RS256 или HS256. Сервер проверяет подпись и expiry при каждом API-вызове. Срок действия — 24–48 часов, refresh token — 30–90 дней.

Server-side validation для экономических операций. Добавление валюты, применение промокодов, результат матча — только через серверный код. Клиент может показать результат оптимистично, но окончательное состояние определяет сервер. Иначе — memory editor дают игроку миллион монет за 5 минут.

Rate limiting. Login endpoint: максимум 5 попыток в минуту с одного IP. Это защита от brute force. В PlayFab и Nakama встроено. В кастомном — через Redis + sliding window.

Реальный кейс: казуальный раннер, Android+iOS. Изначально — local save только. После добавления монетизации (скины за IAP) — срочно нужен cloud save. Добавили PlayFab auth (Guest + Google Play Games + Apple Sign In) за 2 недели. Проблема, которую не предвидели: часть игроков имела прогресс на Android под google-аккаунтом и пытались войти на iPad — account merge выдавал конфликт. Потребовался дополнительный экран «выберите, какой прогресс сохранить» + 3 дня доработки.

Процесс реализации

Начинаем с выбора identity provider и определения Login Flow: Guest → Social → Email. Это UX-решение с техническими последствиями.

Проектируем схему данных профиля с учётом будущего роста (сколько предметов может быть в инвентаре? есть ли клановая система?). Неправильная схема дорого обходится при масштабировании.

Реализуем server-side validation для всех экономических операций — это не опционально.

Тестируем edge cases: потеря соединения во время сохранения, дублирование аккаунтов при повторной установке, expiry токена в середине игровой сессии.

Масштаб задачи Ориентировочные сроки
Guest auth + basic cloud save (PlayFab/Nakama) 1–2 недели
Full auth (Social logins + email) + profile 2–4 недели
Кастомная система авторизации + JWT + PostgreSQL 3–6 недель
Account merge + migration с local save 1–2 недели

Стоимость рассчитывается после анализа требований к авторизации и объёма данных профиля.