RubyPlay - огляд та інтеграція
Короткий огляд
RubyPlay - студія HTML5-слотів з акцентом на серії і «збирають» економіки (колекція символів, множники, respin/hold-and-win). Відомі лінійки включають «Immortal Ways» і тайтли з багаторівневими джекпотами. Клієнти легкі, швидко стартують в мобільних WebView. Інтеграція типова: SSO → launch-URL, гаманець по BET/WIN/JACKPOT, події JS-моста для аналітики/CRM/промо.
Кому підходить: операторам/агрегаторам, кому потрібна вітрина з «серійною» подачею контенту, передбачувана експлуатація, висока ротація релізів і готові промо-гачки (місії, турніри, дропи).
Портфель і користувацький досвід
Контент і механіки
Відео-слоти: 5×3/6×N; lines/ways, каскади (на частини ігор), множники xN, expanding/stacked/walking wilds.
Collect / Hold-and-Win / Respin: збір монет/жетонів з фікс-призами, повторні спини, рівні mini/major/mega.
Серійні фічі (наприклад, Immortal Ways): додаткові колонки/доріжки символів, посилені колекції та прогресії.
Бонус-режими: фриспіни з особливими символами/апгрейдами барабанів, pick-bonus, «сходи» множників.
Buy Feature / Bonus Buy: включається по тайтлу і юрисдикції.
Джекпоти: фіксовані/локальні/мережеві - за конфігурацією підключення.
UX/UI
HTML5-клієнт: швидкий FCP/TTI, економні асети, стабільний FPS на мобайлі.
Читабельні таблиці виплат, візуальні лічильники прогресу/колекції, історія раундів.
L10n: мультимовність/мультивалютність, локальні формати чисел/дат і RG-повідомлення.
Технології та продуктивність
Клієнт: Canvas/WebGL, lazy-load асетів, компресія спрайтів/аудіо, передзавантаження критичних ресурсів.
Доставка: CDN/edge-кешування, керовані TTL, резервні launch/CDN-домени (failover).
Мережа: TLS 1. 2 +, HTTP/2 +, цільова latency до найближчого PoP <150-200 мс.
Мобайл: коректний resume після згортання, економія CPU/батареї; стійкість до короткочасних обривів.
Математика, RTP і ліміти
RTP-пули: зазвичай ≈96 %/ ≈94 %/ ≈92% (та інші варіанти) - вибір на рівні білда/каталогу під ринок і договір.
Волатильність: від низької/середньої (класика) до високої (collect/hold-and-win/множники). Бейджі Volatility/Hit Rate рекомендуються на вітрині.
Ліміти: min/max ставка, обмеження авто-спінів, таймаути сесії і ліміти RG по юрисдикції.
Валюти: розрахунок в minor units (цілочисельно), коректні округлення за локальними нормами.
Модель інтеграції (high-level)
1. Гравець → фронтенд оператора → SSO/JWT (короткий TTL).
2. Operator/Aggregator API ↔ RubyPlay API: створення сесії, отримання'launch _ url'.
3. Клієнт (iFrame/нове вікно) ↔ Game Server: ігровий клієнт + JS-міст (postMessage/SDK).
4. Wallet API оператора: BET (auth-дебет), WIN/PAYOUT (кредит), JACKPOT_PAYOUT, рідкісні коригування.
5. BI/Reports: аналітичні події, вивантаження раундів/транзакцій, reconciliation.
Вимоги до оточення
Безпека: IP-allowlist S2S, підпис запитів/відповідей, ротація ключів/секретів, сувора CSP для iFrame-доменів.
Надійність: ретраї з експоненціальною паузою, черги per player/session, дедуп по ключах, sticky-роутинг.
Сумісність: актуальні Chrome/Edge/Safari/Firefox, iOS/Android WebView.
Створення та запуск сесії (псевдо-REST)
Запит:
POST /api/v1/sessions
Authorization: Bearer <operator-key>
{
"player_id": "u_74251",
"currency": "EUR",
"locale": "ru-RU",
"game_id": "rubyplay_<slug>" ,//series/slot: ImmortalWays _, etc.
"return_url": "https://operator. example. com/casino/return",
"limits": { "bet_min_minor": 100, "bet_max_minor": 500000 },
"flags": { "buy_feature": false, "autoplay": true },
"tags": { "vip_level": 1, "aff_id": "AFF-821" }
}
Відповідь:
{
"session_id": "sess_b93f...",
"launch_url": "https://rp. example. com/launch? sess=sess_b93f...",
"expires_in": 3600
}
Запуск клієнта: 'launch _ url'в iFrame/вікні; підтримуються heartbeat/reauth; події - через JS-міст (ACK/NACK).
Wallet API та ідемпотентність
Основні потоки
BET (auth-дебет): заморожування/списання ставки →'APPROVED/DECLINED'( + баланс/причина).
WIN/PAYOUT (кредит): зарахування виграшів/джекпотів → повернення підсумкового балансу.
ADJUST/REVOKE: коригування у виняткових випадках з повним аудит-слідом.
Гарантії доставки
Заголовок'X-Idempotency-Key'( TTL ≥ 24 год), дедуп на стороні оператора.
Черги per player/session → гарантований порядок; DLQ для конфліктів.
Кореляція'round _ id '/' bet _ id '/' session _ id'.
POST /wallet/payouts
Idempotency-Key: 12f0-...
{
"player_id": "u_74251",
"round_id": "r_2025_11_02_20_06_11",
"amount_minor": 167000,
"currency": "EUR",
"reason": "round_win"
}
JS-міст та ігрові події
Клієнт → оператор: `GAME_INIT`, `SPIN/BET`, `WIN`, `FEATURE_TRIGGER`, `BONUS_START/END`, `COLLECT`, `RESPIN`, `JACKPOT_HIT`, `ERROR`.
Транспорт: 'postMessage '/SDK, підтвердження ACK/NACK, сувора перевірка'origin'і підпис/nonce.
Призначення: аналітика, CRM-тригери, підключення кампаній (free rounds/місії/турніри/дропи), динамічні банери.
Промо: фріспіни, місії, турніри, джекпоти
Free Rounds / Free Spins
Видача через Provider/Promo API або синхронізацію з бонус-движком.
Параметри: фікс. ставка/деном, кількість спінів, термін дії,'game _ id'.
Облік: виграші в real/bonus-баланс; вейджер - за правилами оператора/ринку.
Місії/івенти
«Зіграй N спінів», «виграй ≥ X ×», «активуй фічу M раз», «збери K символів» - події'MISSION _ PROGRESS'.
Турніри/лідерборди
Метрики: сума виграшів, max-multiplier, кількість спінів/колекцій; подія'TOURNAMENT _ SCORE'.
Джекпоти/Prize-drops
Multi-tier (mini/major/mega), mystery/prize-drops; параметри'seed/cap', мультивалютні обмеження.
Окремий колбек'JACKPOT _ PAYOUT'з ідемпотентністю і реквізитами пулу.
Гео-конфігурація та комплаєнс
Каталог гео: включення/виключення тайтлів, вибір RTP-профілю, відключення Buy Feature/ризик-ігри, вікові/регіональні обмеження.
Відповідальна гра: self-exclusion/тайм-аути/ліміти, локальні RG-банери та cookie-згоди.
Дані/PII: мінімізація та псевдонімізація ідентифікаторів; терміни зберігання логів; експорт за запитами регуляторів.
Сертифікація: використання сертифікованих білдів для цільових юрисдикцій; частина фіч може бути обмежена ринком.
Моніторинг, звітність і SLA
Ключові метрики
Тих: uptime API/Launch/CDN, p95 гаманців колбеків, швидкість завантаження асетів, частота помилок JS-моста.
Продукт: 'Launch → First Spin','Spin → Bonus', ARP (B) U, утримання, ROI кампаній (фріспіни/місії/турніри/дропи).
Фінанси: частка ретраїв/дедупів, аномалії сум, nightly-розбіжності.
Експорт/Reconciliation
Погодинні/добові вивантаження (CSV/JSON/S3) за раундами/транзакціями/бонусами/джекпотами.
Звірка в minor units по'round _ id/bet _ id/session _ id'; авто-алерти на дублікати/пропуски/» німі» коллбеки.
Орієнтири SLO/SLA
API uptime ≥ 99. 95%, CDN-асети ≥ 99. 9%; p95 коллбеків <500 мс (внутрішньорегіонально).
MTTR - за інцидент-планом; окремі SLO на прайм-тайм/масові кампанії.
Безпека
Транспорт: TLS 1. 2+, HSTS; сувора CSP під iFrame-домен.
Доступ: JWT/OAuth2 (клієнт), IP-allowlist/підпис/при необхідності mTLS (S2S), ротація секретів.
Дані: заборона відкритих PII в логах; токенізація/хеш'player _ id'; шифрування at rest/backup у оператора.
Анти-фрод: аномалії частоти спінів/ставок/collect-івентів, множинні сесії, підозрілі ASN/VPN; квоти/тротлінг/блок-листи.
Масштабування і відмовостійкість
Edge-кеш: маніфести/асети/локалізації - керовані TTL, ручна інвалідація при релізах.
Rate-limits: per player/session/API endpoint; захист від «штормів» подій.
Graceful degradation: спрощення асетів/ефектів, зниження частоти івентів, банер «техроботи».
Failover: резервні launch/CDN-домени; пере-issue токена без втрати контексту.
Чек-листи
Для розробки
- Генерація/валідація SSO-токенів (короткий TTL, захист від clock-skew).
- Wallet API: ідемпотентний дебет/кредит, підпис, черги, DLQ.
- JS-міст/SDK: події, ACK/NACK, безпечний'origin'.
- Promo API: фриспіни/місії/турніри/дропи; облік вейджера.
- Експорт: CSV/JSON/S3; повнота полів (minor units, round/bet/session).
Для запуску
- Гео-каталог, RTP-профілі, вимкнення заборонених фіч.
- Моніторинг SLO (API/CDN/Wallet/JS) + алерти.
- Nightly reconciliation + алерти на дублікати/пропуски.
- RG/кукі-банери, локальні вимоги.
- План інцидентів/статус-сторінка.
FAQ (коротко)
Запуск в iFrame? Так, через'launch _ url'при узгоджених CSP/' X-Frame-Options'.
Доступний Buy Feature? По тайтлу і ринку; включається конфігураційно.
Є мережеві джекпоти? По конфігурації; виплати приходять окремим'JACKPOT _ PAYOUT'.
Як підключити фриспіни/турніри? Через Promo/Provider API + події аналітики.
Як вибрати RTP? На рівні білда/каталогу під конкретну юрисдикцію і договір.
Підсумок
RubyPlay поєднує серійний підхід до дизайну слотів і «збирає» економіку, що дає стійку вітрину і зручні промо-сценарії. Слідуючи описаним патернам (SSO/launch-URL, ідемпотентний Wallet API, JS-міст, промо-кампанії, сувора гео-конфігурація, моніторинг і reconciliation), оператор отримує передбачувану економіку контенту, відповідність регуляториці і стабільність під пікові навантаження.