Реалізація Spin-the-Wheel (колесо фортуни) у мобільному додатку

Механіка розіграшу здається простою, але саме вона найчастіше зриває залученість: призи «не випадають», інтерфейс підвисає, а користувачі йдуть. Ми розробляємо колесо фортуни під ключ — від логіки видачі призів до анімації — і налаштовуємо чесний рандом так, щоб механіка утримувала, а не дратувала. Беремо на себе весь цикл і передаємо готовий модуль із документацією.

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Реалізація Spin-the-Wheel (колесо фортуни) у мобільному додатку
Середній
~2-3 дні
Часті запитання

Чому колесо фортуни ламає залученість у застосунку

Розробка колеса фортуни майже завжди стартує з анімації та призового фонду, а ламається на нудному — на тому, що відбувається між натисканням кнопки та результатом.

Користувач тисне «Крутити», чекає на відповідь сервера, і якщо механіка розіграшу відповідає довше за пару секунд, інтерес падає: частина аудиторії закриває екран, не дочекавшись призу.

Залученість користувачів просідає не через нудний дизайн, а через затримку відгуку, яку ніхто не закладав в архітектуру.

Друга типова причина — обрив сесії на середині обертання. Застосунок іде у фон, мережа перемикається з Wi-Fi на мобільну, і результат розіграшу губиться: сервер уже списав спробу, а клієнт її не побачив. Користувач повертається до порожнього екрана і вирішує, що механіка нечесна.

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

Четверта — відсутність ідемпотентності. Подвійний тап по кнопці, повторний запит при таймауті, і користувач отримує два обертання за однієї спроби або, навпаки, втрачає виграш.

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

Усі п'ять причин лежать в одній площині — у тому, як влаштований обмін між застосунком і бекендом, а не в графіці. Розбираємо, як це закривається: де рахувати результат, як переживати обрив сесії і що показувати користувачеві, поки відповідь ще в дорозі.

Що дає коректно спроєктована механіка розіграшу

Механіка розіграшу перестає бути «фішкою на свято» і стає регулярним сценарієм повернення, коли її поведінка передбачувана на всіх етапах: від відкриття екрана до нарахування призу. Нижче — чек-ліст ефектів, які видно в метриках, а не в презентації.

  • Зростання повторних запусків. Приз і наступний шанс видаються порціями зі зрозумілим таймером — користувач повертається не «коли згадає», а за розкладом. Частка запусків на другий і третій день після встановлення зростає кратно, бо механіка вбудована в щоденний сценарій, а не висить окремою кнопкою.
  • Зниження частки перерваних сесій. Обертання, результат і нарахування призу проходять без перезавантаження екрана і без втрати стану при згортанні застосунку. Якщо користувач пішов на середині, при поверненні він бачить той самий результат, а не порожній екран — обрив сесії перестає означати втрачений приз.
  • Передбачуване навантаження на серверну частину. Результат визначається на сервері, клієнт лише програє анімацію. Розіграш не створює сплесків при масовому вході: запити обробляються чергою, а ліміти на спроби відсікають накрутку на стороні клієнта.
  • Чесність рандому, яку можна довести. Алгоритм і таблиця призів фіксуються заздалегідь, кожен результат логується з ідентифікатором спроби. При розборі спірної ситуації видно, що випало і чому — це знімає претензії та захищає від звинувачень у підкрутці.
  • Керованість без релізу. Ймовірності, призи та умови змінюються налаштуваннями на сервері. Маркетинг коригує механіку під акцію без нового збирання застосунку і без очікування модерації в сторах.
  • Прозора аналітика. Рахуються не лише обертання, а й шлях до призу: де відвалюються, скільки спроб витрачають марно, який приз мотивує повернутися. На цих даних механіка доналаштовується, а не переробляється з нуля.

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

Варіанти реалізації: нативний модуль, веб-подання, гібрид

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

Варіант Коли підходить Обмеження
Нативний модуль Колесо — постійна механіка в ядрі застосунку, важлива плавність анімації обертання та миттєвий відгук Потребує окремого збирання під кожну платформу, правки проходять через реліз застосунку
Веб-подання Акція тимчасова, призовий фонд і правила змінюються часто, потрібен швидкий запуск без оновлення застосунку Анімація залежить від вбудованого рушія, на слабких пристроях можливі просідання, обмежений доступ до системних функцій
Гібридна реалізація Потрібен баланс: логіка та правила живуть на сервері, анімація обертання й тактильний відгук — у нативному шарі Складніша в підтримці: два контури, потрібна узгоджена обробка результату та захист від підміни

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

Веб-подання запускається за дні й оновлюється на боці сервера без участі користувача. Плата — сумісність платформ: на старих пристроях анімація обертання може смикатися, а доступ до камери чи push обмежений.

Гібридна реалізація знімає більшість цих компромісів: сервер віддає результат, нативний шар його відмальовує, тому правила змінюються без релізу, а відчуття залишається «своїм».

Розбираємо, який варіант закриває ваше завдання без зайвого перезбирання.

Етапи розробки колеса фортуни під ключ

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

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

Далі фіксуємо схему механіки: скільки секторів, які призи, як часто випадає кожен, що відбувається при обриві мережі між обертанням і нарахуванням.

Налаштування рандому — окремий етап: генератор випадкових чисел працює на сервері, а не в застосунку, інакше результат підмінюється на стороні клієнта за пару хвилин. Ймовірності задаємо вагами й перевіряємо на довгій серії прогонів, щоб розподіл збігався із задуманим.

  1. Аудит застосунку — розбираємо поточну архітектуру, точки інтеграції та обмеження за навантаженням.
  2. Проєктування механіки — описуємо схему: сектори, призи, умови участі, ліміти на користувача.
  3. Налаштування рандому та правил — серверний генератор, ваги випадання, захист від повторних спроб.
  4. Розробка та інтеграція — збираємо інтерфейс обертання й пов'язуємо з бекендом і системою нарахувань.
  5. Тестування — перевіряємо сценарії обриву мережі, повторного входу, вичерпання призового фонду.
  6. Випуск і спостереження — розгортаємо поступово, стежимо за часткою успішних нарахувань.
  7. Передача документації — віддаємо опис механіки, налаштувань та інструкцій для вашої команди.

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

Передача документації закриває проєкт так, щоб ваша команда могла змінювати призи та ймовірності без нас.

Що залишається у замовника після здачі проєкту

Після здачі проєкту у вас залишається не «чорна скринька», а комплект, за яким застосунок можна розвивати, передавати іншій команді або проходити перевірки.

Усе, що ми проєктуємо в межах розробки колеса фортуни, фіксується в репозиторії та в документації — без усних домовленостей і «запитайте у розробника».

  • Конфігурації призів і механік — файли з наборами призів, вагами випадіння, лімітами на користувача та періодом акції. Змінюються без перезбирання застосунку: маркетинг запускає нову акцію правкою конфігурації, а не новим релізом.
  • Схеми взаємодії — діаграми потоків між застосунком, сервером і сховищем: як проходить прокрутка, де фіксується результат, як нараховується приз. За ними новий інженер входить у проєкт за дні, а не тижні.
  • Політики доступу — ролі та права на редагування призів, перегляд статистики й ручне коригування нарахувань. Окремо описано, хто і за яких умов може втрутитися у видачу.
  • Регламенти оновлення призів — порядок дій при запуску, паузі та завершенні акції, правила перевірки конфігурації перед публікацією, точки відкату.
  • Документація щодо API і даних — опис методів, форматів відповідей і структури зберігання результатів прокруток, щоб вивантаження та звітність не залежали від нас.
  • Інструкція з моніторингу — які показники відстежувати (частота прокруток, частка успішних нарахувань, аномалії за користувачем) і як реагувати на відхилення.
  • Чек-лист приймання та передачі — перелік перевірок, що підтверджують, що механіка працює на реальних сценаріях, і порядок передачі доступів вашій команді.

Кожен артефакт ми розбираємо з вашими спеціалістами на передачі: показуємо, де він лежить, як оновлюється і що станеться при типових змінах. Опишіть задачу — повернемося з оцінкою та планом, у якому цей комплект уже враховано.

Кейс: як механіка розіграшу підвищила утримання в застосунку

Клієнт — сервіс доставки готової їжі — прийшов із типовою картиною: встановлення є, а на третій день у застосунку залишається мала частка користувачів. Аналітика показувала, що люди відкривають застосунок, дивляться меню й ідуть без замовлення.

Ми запропонували вбудувати механіку розіграшу як щоденний привід повернутися і водночас зняти навантаження з розділу акцій, який вручну оновлювався щотижня.

Що було до впровадження

  • Частка повторних сесій на третій день — близько 12%.
  • Користувач відкривав застосунок у середньому 1,4 раза на тиждень.
  • Ручне оновлення акцій займало в команди клієнта кілька годин щотижня.
  • Промокоди розсилалися всім підряд, конверсія в замовлення не перевищувала 4%.

Що змінили

Зібрали колесо фортуни на React Native — єдина кодова база під обидві платформи, тому анімація обертання й логіка призів не розходяться між збірками. Призи, імовірності та ліміти винесли в конфігурацію на стороні сервера: маркетолог змінює умови без випуску нової версії.

Додали захист від накрутки — прив'язку до пристрою й облікового запису, ліміт обертань на добу та перевірку результату на сервері, щоб підміна відповіді на клієнті нічого не давала.

Окремо попрацювали над часом відгуку: результат обертання підтверджується сервером, але інтерфейс не чекає відповіді — анімація йде одразу, а приз фіксується за фактом підтвердження. Це прибрало підвисання на слабкому зв'язку.

Що стало після

  • Частка повторних сесій на третій день зросла з 12% до 27%.
  • Частота відкриттів застосунку — з 1,4 до 2,6 раза на тиждень.
  • Частка перерваних обертань (користувач закрив екран до результату) знизилася до 3% — завдяки миттєвій відмальовці.
  • Конверсія промокодів із розіграшу — 11% проти колишніх 4%.
  • Ручна робота маркетолога звелася до правки конфігурації призів.

Через два місяці клієнт розширив механіку: додав сезонні набори призів і прив'язав обертання до виконання цільової дії — замовлення від певної суми. Колесо перестало бути окремою акцією й стало частиною основного сценарію повернення в застосунок.

Чим відрізняється чесний рандом від псевдовипадкового вибору призу

Різниця між чесним рандомом і псевдовипадковим вибором призу — не в назві алгоритму, а в тому, хто і коли визначає переможця. Псевдовипадковий вибір — це детермінована послідовність: генератор чисел ініціалізується зерном (seed), і за однакового зерна видає однаковий результат.

Для розіграшу це означає, що результат технічно передбачуваний: якщо зерно відоме або відтворюване, приз можна обчислити заздалегідь.

Чесний рандом у мобільному застосунку будується інакше — джерело ентропії береться ззовні, а результат фіксується до того, як користувач натиснув кнопку обертання.

Ключовий інженерний момент — момент ухвалення рішення. У слабких реалізаціях приз обирається в момент зупинки анімації, і код може «підкрутити» сектор під потрібний результат.

У коректній схемі результат визначається на сервері в момент старту обертання, підписується й передається клієнту як зобов'язання: анімація лише візуалізує вже ухвалене рішення. Користувач не може вплинути на результат, а застосунок — заднім числом змінити його.

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

Другий — юридична чистота: для рекламних акцій і промо-механік важливо довести, що вибір призу не керувався вручну й не залежав від профілю учасника. Перевірюваний лог із міткою часу та підписом результату — це доказ, який приймає і служба підтримки, і регулятор.

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

Технічні сумніви та відповіді щодо механіки розіграшу

Колесо фортуни — це не анімація, а сервіс зі станом: видача призу, списання залишку, захист від повторних прокруток. Тому до старту розробки ми фіксуємо, як механіка поводитиметься під навантаженням і що станеться при збої на будь-якому кроці.

Як механіка витримає пікове навантаження?

Розіграш запускається хвилею — у момент акції сотні користувачів крутять колесо одночасно. Рішення — винести логіку прокрутки на сервер, а результат обчислювати до початку анімації: клієнт лише програє сектор, що випав.

Запити на приз ідуть через чергу, залишки лімітованих нагород списуються атомарно, тому при піку жоден приз не видається двічі й не «іде в мінус». Колесо залишається чутливим, бо клієнт не чекає відповіді сервера в момент обертання.

Як закривається накрутка та повторні спроби?

Спроби прив'язані до серверної сесії та облікового запису, а не до пристрою — перевстановлення застосунку або скидання кешу не дає нових прокруток. Частоту обмежує правило на стороні сервера: інтервал між спробами та добовий ліміт.

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

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

Механіка підключається до вже працюючого сховища нагород через окремий шар інтеграції: колесо запитує доступний приз, а видача, термін дії та списання залишку залишаються у вашій системі.

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

Що відбувається при збої в момент видачі призу?

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

Якщо залишилися питання щодо вашої механіки — опишіть задачу, повернемося з оцінкою та планом.

Обговоримо задачу та повернемося з оцінкою й планом

Щоб оцінка була реалістичною, а не «середньою по ринку», нам потрібно зрозуміти вашу поточну ситуацію: на чому побудовано застосунок, як влаштовано облік користувачів і чи є механіка нарахування бонусів.

Колесо фортуни рідко живе саме по собі — воно майже завжди чіпляється за баланс балів, історію замовлень і правила нарахування призів. Від того, що вже реалізовано, напряму залежить склад робіт і строки.

Опишіть задачу у вільній формі — цього достатньо, щоб ми повернулися з планом. Корисно вказати:

  • на якій платформі та стеку працює застосунок і чи є доступ до вихідного коду;
  • як зараз влаштовані акаунти користувачів і авторизація;
  • чи є система балів, купонів або бонусів, до якої потрібно прив'язати призи;
  • яка механіка потрібна: разове обертання, щоденне, за покупку чи за дію;
  • чи потрібен захист від накруток і повторних обертань з одного пристрою;
  • як ви хочете керувати призами — через адмінку, вручну чи за розкладом;
  • чи є дизайн колеса або потрібна допомога з візуальною частиною;
  • чи плануєте аналітику: скільки обертань, які призи випадають, конверсія в покупку.

Після цього ми розберемо сценарії, запропонуємо склад робіт і повернемося з оцінкою строків за етапами. Якщо під час обговорення з'ясується, що частина механіки вже є в коді, — це скоротить і обсяг, і час.

Обговорення задачі ні до чого не зобов'язує: ви отримуєте план робіт і розуміння, що саме потрібно зробити, а рішення ухвалюєте після.

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

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

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714