Розробка системи лідербордів мобільної гри

Після запуску мобільної гри через місяць активність падає — відсутність здорової конкуренції вбиває retention. Простий глобальний рейтинг не мотивує: гравці не бачать друзів і не відчувають прогресу. Ми стикалися з цим не раз: у 20+ проєктах впровадження сегментованих лідербордів підняло повернення

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка системи лідербордів мобільної гри
Середній
~3-5 днів

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

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

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Після запуску мобільної гри через місяць активність падає — відсутність здорової конкуренції вбиває retention. Простий глобальний рейтинг не мотивує: гравці не бачать друзів і не відчувають прогресу. Ми стикалися з цим не раз: у 20+ проєктах впровадження сегментованих лідербордів підняло повернення на 30–40%. Для mid-core та competitive ігор це обов'язковий елемент: гравці хочуть змагатися з друзями, відстежувати прогрес по тижнях і отримувати нагороди за топ-10. Нижче — як спроєктувати систему, яка працюватиме під навантаженням до 10 000 RPS і блокуватиме чітерів.

Чому серверна валідація очок критична?

Клієнтський score без валідації — прямий шлях до чітерства через Memory Editor або Cheat Engine. Блокуємо до 99% таких спроб. Найкращий метод — серверний розрахунок: клієнт надсилає події, а Cloud Script обчислює фінальні очки.

Метод Опис Надійність
Серверний розрахунок Клієнт надсилає події, сервер рахує score Висока
Плауз-чек Перевірка на аномалії (max можливий score) Середня
Реплей-чек Повторне виконання дій на сервері Дуже висока

Комбінуємо серверний розрахунок із плауз-чеком: Cloud Script отримує події рівня та обчислює фінальний score. Якщо результат аномальний (наприклад, 50 000 при максимумі 10 000), відхиляємо. Економія на інфраструктурі античита — суттєва.

У PlayFab створюється Cloud Script з функцією validateScore, яка приймає масив подій і повертає підсумковий score. Важно налаштувати таймаут виконання (за замовчуванням 10 секунд) та обмеження по пам'яті. Для високонавантажених ігор використовуємо чергу для асинхронної обробки.

Який бекенд обрати для лідербордів?

Рішення Коли підходить Обмеження
Google Play Games Leaderboards Простий глобальний рейтинг, Android Тільки Android, обмежені типи
Game Center Leaderboards iOS, simple global/friends Тільки iOS
PlayFab Leaderboards Крос-платформа, гнучко Платний при високому навантаженні
Firebase Realtime DB / Firestore Гнучко, real-time Потрібна кастомна індексація
Custom backend Повний контроль Розробка та підтримка

Для більшості мобільних ігор PlayFab — оптимальний вибір: не потрібно писати серверну логіку, є вбудований anti-cheat. PlayFab Leaderboards API (документація) розгортається в 10 разів швидше за кастомний сервер. Підтримує сегментовані рейтинги, автоматичне скидання статистики за розкладом та інтеграцію з платформенними акаунтами. Використовуємо його в 80% проєктів — знижує витрати на серверну інфраструктуру на 50%.

Приклад запису та отримання очок

public void SubmitScore(int score, string leaderboardName = "global_score") { PlayFabClientAPI.UpdatePlayerStatistics( new UpdatePlayerStatisticsRequest { Statistics = new List<StatisticUpdate> { new StatisticUpdate { StatisticName = leaderboardName, Value = score } } }, result => Debug.Log("Score submitted"), error => Debug.LogError(error.GenerateErrorReport()) ); } public void GetLeaderboard(string leaderboardName, Action<List<LeaderboardEntry>> callback) { PlayFabClientAPI.GetLeaderboard( new GetLeaderboardRequest { StatisticName = leaderboardName, StartPosition = 0, MaxResultsCount = 100, ProfileConstraints = new PlayerProfileViewConstraints { ShowDisplayName = true, ShowAvatarUrl = true } }, result => { var entries = result.Leaderboard.Select(entry => new LeaderboardEntry { PlayFabId = entry.PlayFabId, DisplayName = entry.DisplayName, Score = entry.StatValue, Rank = entry.Position + 1, AvatarUrl = entry.Profile?.AvatarUrl }).ToList(); callback?.Invoke(entries); }, error => Debug.LogError(error.GenerateErrorReport()) ); } public void GetPlayerRank(string leaderboardName, Action<int> callback) { PlayFabClientAPI.GetLeaderboardAroundPlayer( new GetLeaderboardAroundPlayerRequest { StatisticName = leaderboardName, MaxResultsCount = 1 }, result => { var playerEntry = result.Leaderboard.FirstOrDefault(e => e.PlayFabId == PlayFabSettings.staticPlayer.PlayFabId); callback?.Invoke(playerEntry?.Position + 1 ?? 0); }, error => { } ); } 

Як захистити лідерборд від чітерів?

Окрім серверного розрахунку, використовуємо моніторинг аномальних патернів: якщо гравець надсилає score у нереальний час (менше 1 секунди на рівень) або з нехарактерною частотою — блокуємо акаунт. Додатково аналізуємо історію дій через Big Data. Це знижує кількість чітерів до поодиноких випадків.

Як ми реалізуємо лідерборди поетапно?

  1. Аналітика та проєктування — визначаємо типи рейтингів, правила скидання, цільове навантаження (до 10 000 RPS).
  2. Налаштування PlayFab — створюємо статистику, конфігуруємо античит та резервне копіювання.
  3. Реалізація серверної логіки — Cloud Script для валідації очок (серверний розрахунок або плауз-чек).
  4. Інтеграція з платформами — Google Play Games / Game Center для cross-platform видимості.
  5. UI-компоненти — список з аватарами, закріплена позиція гравця, фільтри (global/friends).
  6. Тестування та навантаження — перевірка при 10 000+ одночасних запитів.
  7. Деплой та моніторинг — автооновлення та алерти при аномаліях.

Для сегментованих лідербордів використовуємо версіонування статистики або окремі імена для кожного рівня. Щотижневе скидання налаштовується в PlayFab Game Manager → Statistics → Reset interval. З push-сповіщеннями (APNs/FCM) гравці дізнаються про скидання та нові нагороди — retention додатково зростає.

Google Play Games та Game Center

Для платформенних лідербордів, які видно в інтерфейсі магазину:

PlayGamesPlatform.Instance.ReportScore( score, GPGSIds.leaderboard_global_score, success => Debug.Log($"Score reported: {success}") ); PlayGamesPlatform.Instance.LoadScores( GPGSIds.leaderboard_global_score, LeaderboardStart.TopScores, 100, LeaderboardCollection.Public, LeaderboardTimeSpan.AllTime, data => { /* data.Scores */ } ); 

Платформенні лідерборди хороші для discovery — гравець бачить рейтинг прямо в Google Play без запуску гри. Але обмежений контроль над дизайном і немає cross-platform. Deep linking (Universal Links / App Links) дозволяє надсилати пряме запрошення на конкретну позицію.

UI-патерни

Хороший лідерборд відображає:

  • Позицію та очки поточного гравця завжди видимі (закріплені вгорі або внизу)
  • Гравці навколо поточного (±5 позицій) — GetLeaderboardAroundPlayer
  • Топ-3 виділені візуально
  • Аватари (з PlayFab Profile або платформенного акаунту)

Пагінація або нескінченний скрол з GetLeaderboard(startPosition: offset) — для доступу до нижніх рядків.

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

  • Налаштування PlayFab Statistics з потрібними іменами та правилами скидання
  • Реалізація submit, get top, get around player
  • Лідерборд серед друзів
  • Серверна валідація очок (Cloud Script)
  • Платформенна інтеграція (Google Play Games / Game Center)
  • UI: список, позиція гравця, аватари, фільтри (global/friends/weekly)

Строки та вартість

Глобальний лідерборд на PlayFab займає 2–4 дні. Повна система з сегментацією, серверною валідацією та UI — від 1 до 2 тижнів. Вартість розраховується індивідуально, економія часу досягає 10 разів порівняно з кастомним сервером. При навантаженні до 50 000 одночасних гравців час відгуку залишається менше 50 мс. Замовте консультацію інженера, і ми підберемо оптимальну архітектуру під ваше навантаження. Зв'яжіться з нами для розрахунку вартості вашого проєкту — ми гарантуємо стабільну роботу під високим навантаженням і даємо 30 днів безкоштовної підтримки після запуску.