Реалізація системи авторизації та профілів користувачів

Проєкт на Unity: казуальний раннер на Android та iOS. Гравці проходять 30 рівнів, купують скіни за внутрішню валюту та реальні гроші. Після скидання телефону прогрес зникає, покупки не відновлюються — результат: негативні відгуки, chargeback'и, падіння доходу на 40%. Така ситуація — прямий сигнал: б

Наші компетенції

Інші послуги студії

VR/AR/MR застосунки на замовлення

Вражайте клієнтів і навчайте команду у віртуальній реальності

Розробка ігор на Unity

Від ідеї до релізу — ігри, які запам'ятовуються

3D-моделювання та анімація

Оживимо ваш продукт в об'ємній графіці та анімації

VR-тренажери промислового обладнання

Тренуємо операторів на техніці без ризику і простою

AR-інструкції для виробництва

Покрокові підказки прямо на обладнанні — без паперу

Safety-тренажери

Відпрацювання НС і техніки безпеки без виходу на об'єкт

VR/AR-тренінги

Навчаємо персонал сервісу, адаптації та soft skills у VR

Навчальні вікторини

Перевірка знань у форматі гри — легко і без стресу

Корпоративні відеоінструкції

Зрозумілі ролики для навчання співробітників і клієнтів

Гейміфікація бізнес-процесів

Мотивуємо команду через ігрові механіки в KPI та HR

Застосунки для інфокіосків

Інтерактивні екрани для магазинів, стендів і офісів

VR/AR-інсталяції

Wow-ефект для брендів на виставках, івентах і в шоу-румах

Віртуальні виставки та музеї

Ваша експозиція доступна з будь-якої точки світу — 24/7

Event-квести та брендовані ігри

Незабутні ігри для конференцій та клієнтських івентів

Часті запитання

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    1526
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    1030
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    657
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    738
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Навчальна вікторина для дітей «Покупки в магазині»
    142

Проєкт на Unity: казуальний раннер на Android та iOS. Гравці проходять 30 рівнів, купують скіни за внутрішню валюту та реальні гроші. Після скидання телефону прогрес зникає, покупки не відновлюються — результат: негативні відгуки, chargeback'и, падіння доходу на 40%. Така ситуація — прямий сигнал: без серверної авторизації та cloud save монетизація працює вхолосту.

Ми проєктуємо та впроваджуємо систему авторизації та профілів для ігрових проєктів на Unity, Unreal Engine, Godot. Досвід — 5+ років, реалізовано 30+ проєктів з аудиторією від 10K до 1M+ користувачів. Гарантуємо безпеку, account merge та масштабування під навантаження.

Яку архітектуру авторизації обрати?

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. У порівнянні з кастомною системою, інтеграція social login через PlayFab скорочує час розробки приблизно на 50% (з 4 тижнів до 2 тижнів). Використання готового backend прискорює впровадження вдвічі.

Sign In with Apple — особливий випадок. Apple вимагає підтримки цього методу, якщо в грі є хоча б один інший third-party login. Крім того, Apple може приховувати email користувача та видавати relay email. Це потрібно враховувати: не можна покладатися на email як унікальний ідентифікатор у Apple-користувачів. Apple Developer Documentation: Sign In with Apple

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

Що входить до профілю гравця?

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

Акаунтні дані (persistent, рідко змінюються):

  • playerId — внутрішній UUID, ніколи не змінюється
  • email, username, avatarUrl
  • linkedAccounts — масив прив'язаних провайдерів (google, apple, steam)
  • createdAt, lastLoginAt

Ігровий прогрес (persistent, часто оновлюється):

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

Сесійні дані (ephemeral, не зберігаються):

  • Поточна позиція в матчі, тимчасові баффи, сесійна статистика — це в пам'яті сервера, не в БД

Розділення важливе для продуктивності: при вході в гру завантажуємо тільки акаунтні дані та базовий прогрес. Інвентар на 200 предметів підвантажуємо ліниво при відкритті інвентарного екрану — це скорочує час завантаження на 40%. У проєкті з 500 000 MAU ми таким чином знизили пікове навантаження на базу даних на 60%.

Чому безпека критична?

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.

Метод авторизації Час інтеграції Особливості
Guest (Device ID) 1–2 дні Низький бар'єр, немає відновлення
Social Login 3–7 днів Apple Sign In обов'язковий на iOS, relay email
Email + Password 5–10 днів Вимагає bcrypt, rate limiting, password reset
Federated Identity 2–4 тижні Залежить від кількості провайдерів

Як ми вирішували проблему account merge на реальному проєкті?

Реальний кейс: казуальний раннер, Android+iOS. Спочатку — local save тільки. Після додавання монетизації (скіни за IAP) — терміново потрібен cloud save. Додали PlayFab auth (Guest + Google Play Games + Apple Sign In) за 2 тижні. Проблема, яку не передбачили: частина гравців мала прогрес на Android під google-акаунтом і намагалися зайти на iPad — account merge видавав конфлікт. Знадобився додатковий екран «виберіть, який прогрес зберегти» + 3 дні доопрацювання. Рішення: при конфлікті показуємо обидва профілі, гравець обирає. Автоматика — якщо різниця в рівні більше 5, бере старший. Цей підхід знизив кількість звернень до підтримки на 30% і зменшив відтік гравців після зміни пристрою на 15%.

Процес реалізації

  1. Вибір identity provider та проєктування Login Flow: Guest → Social → Email. Це UX-рішення з технічними наслідками.
  2. Проєктування схеми даних профілю з урахуванням майбутнього зростання (кількість предметів, кланова система).
  3. Реалізація server-side validation для всіх економічних операцій.
  4. Тестування edge cases: втрата з'єднання під час збереження, дублювання акаунтів при повторній установці, expiry токена в середині ігрової сесії.
  5. Деплой та підтримка протягом 30 днів.

Що входить до роботи?

  • Архітектура auth flow та дизайн схеми даних
  • Інтеграція guest auth, social logins, email/password
  • Реалізація JWT-токенів, refresh logic
  • Server-side validation всіх економічних операцій
  • Написання документації та передача доступів
  • Підтримка протягом 30 днів після деплою
Масштаб задачі Орієнтовні терміни
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 тижні

Вартість розраховується після аналізу вимог. Щоб отримати оцінку під ваш проєкт, зв'яжіться з нами — ми підготуємо комерційну пропозицію з урахуванням стеку та обсягу робіт. Отримайте консультацію з архітектури авторизації — це безкоштовно.