Реалізація механіки Gacha/Lootbox мобільної гри

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

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

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

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

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

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

Етапи розробки

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Реалізація Gacha/Lootbox механики мобільної гри

Gacha — один з найбільш прибуткових механізмів у мобільних грах та одночасно один з найбільш регульованих. Apple з 2022 року вимагає розкриття вероятностей для всіх lootbox-механік. У ряді країн (Бельгія, Нідерланди) gacha з реальними грошима приравнюється до азартних ігор. Правильна реалізація — це баланс привабливої механіки, математично чесних вероятностей та юридичної прозорості.

Математична модель вероятностей

Базова gacha — зважений випадковий виберу з пулу наград. Проста реалізація:

data class GachaItem(val id: String, val rarity: Rarity, val weight: Int)

fun rollGacha(pool: List<GachaItem>): GachaItem {
    val totalWeight = pool.sumOf { it.weight }
    var random = Random.nextInt(totalWeight)
    for (item in pool) {
        random -= item.weight
        if (random < 0) return item
    }
    return pool.last()
}

Приклад розподілу ваг:

  • Common: weight 1000 → ~58.8% шанс
  • Rare: weight 500 → ~29.4%
  • Epic: weight 150 → ~8.8%
  • Legendary: weight 50 → ~2.9%

Сумарна вага: 1700. Шанс legendary: 50/1700 ≈ 2.94%.

Pity-система: обов'язкова для чесної механіки

Pity (гарантована награда) — механіка, яка гарантує legendary після N неудачних спроб. Без pity у гравця може бути streak з 200 роллів без legendary — математично можливо, практично розрушує досвід.

Soft pity — починаючи з N-го ролла вероятність legendary поступово ростет. Genshin Impact використовує цей підхід: з 74-го ролла шанс 5* починає рости на 6% кожен ролл.

Hard pity — ровно на N-му ролле legendary гарантирован. Простіша реалізація та чесніша комунікація гравцю.

data class PlayerGachaPity(
    val rollsSinceLastLegendary: Int,
    val softPityStart: Int = 74,
    val hardPityAt: Int = 90
)

fun calculateEffectiveProbability(baseProbability: Float, pity: PlayerGachaPity): Float {
    if (pity.rollsSinceLastLegendary >= pity.hardPityAt) return 1.0f
    if (pity.rollsSinceLastLegendary >= pity.softPityStart) {
        val excess = pity.rollsSinceLastLegendary - pity.softPityStart
        return minOf(1.0f, baseProbability + excess * 0.06f)
    }
    return baseProbability
}

Pity-счетчик зберігається на сервері, не на клієнті. Клієнтський счетчик обнуляється при переустановці — гравець втрачає накоплений pity, що викликає справедливе обурення та чарджбеки.

Серверна генерація результатів

Результат гача-ролла неможна генерувати на клієнті. Схема:

  1. Клієнт відправляє запрос POST /gacha/roll з userId, gachaPoolId, кількістю роллів, токеном оплати
  2. Сервер перевіряє баланс/транзакцію, отримує pity-счетчик, генерує результат з seeded PRNG
  3. Сервер записує результат, оновлює pity, повертає rollId + результати
  4. Клієнт відображає анімацію та показує результати

Seed для PRNG генерується на сервері, клієнт не може передбачити або вплинути на результат.

Анімація відкриття

Анімація gacha-ролла — не просто прикрашання, це психологічно значимий момент. Тривалість 2–4 секунди, нарастаючий саспенс перед reveal. Для мобільної реалізації використовуємо:

  • Unity Animator або Spine для 2D-анімацій карт/яєць
  • Particle System для ефектів при reveal рідких наград
  • Haptic feedback (UIImpactFeedbackGenerator на iOS, VibrationEffect на Android) у момент reveal

Multi-pull анімації (x10 ролл) вимагають окремої логіки: показуємо усі результати послідовно з зростаючим темпом, common швидко, legendary — з полноэкранним ефектом.

Регуляторні вимоги

App Store (з 2022): застосунки з lootbox повинні відображати вероватности «перед покупкою». Це не опціональна фіча — це обов'язкова умова, порушення якої веде до rejection при ревью.

Google Play: аналогічна вимога з 2024 року. Вероватности мають бути доступні в інтерфейсі до підтвердження покупки.

Реалізація: екран «Детали гача-пула» з таблицею вероватностей по типам наград. Цей екран відкривається кнопкою «i» (інформація) рядом з кнопкою ролла.

Редкість Вероватність Гарантія (hard pity)
Common 58.8%
Rare 29.4%
Epic 8.8% 40 роллів
Legendary 2.9% 90 роллів

Типи gacha-пулів

Rate-up banner — тимчасовий пул з підвищеним шансом конкретного персонажу/предмету. Обмежений за часом (7–14 днів). Створює urgency та піки доходу.

Standard banner — постійний пул без rate-up. Приймає «втрачені» pity-перемоги у грах з системою «гарантований featured 50/50».

Featured banner з guarantee — якщо rate-up не випав на 1-му legendary, наступний legendary guaranteed буде featured. «50/50 система» — добре комунікується гравцям та створює справедливе очікування.

Терміни реалізації: базовий gacha з pity та серверною генерацією — 3–4 дні. Повна система з кількома типами баннерів, UI вероватностей, анімаціями та аналітикою — 7–10 днів.