Часть для гиков —
в таблицах.
На чём сделаны наши игры и страницы, сколько они весят, как общаются с RGS или трекером и что приходит к вам при передаче. Каждая таблица копируется текстом — для вашей тендерной документации или CTO.

HTML5, в первую очередь для телефонов.
Слоты на WebGL, Originals на чистом canvas. И те и другие работают в любом современном браузере, во фрейме вашего лобби.
Никакого Flash. На дворе 2026-й.
Стек
| Слоты | TypeScript, WebGL через PixiJS 8, рантайм Spine 4.2 для персонажей, Effekseer для эффектов частиц. Сборка на Vite. |
|---|---|
| Originals | Чистый HTML, canvas 2D и WebAudio. Ноль сторонних библиотек. |
| Математика | Симуляции на Python; для Stake Engine — математический SDK платформы и его оптимизатор. |
| Арт-пайплайн | Spine 4.2, Blender для 3D-объектов, Krita, Figma для UI-китов. |
| Аудио | Записанные и спродюсированные наборы для слотов; синтез на WebAudio (без файлов) для Originals. |
Экраны и ввод
| Раскладки | Десктоп и мобайл, портретная и альбомная ориентация. Слот получает собственную портретную раскладку, а не сжатую десктопную. |
|---|---|
| Минимальный экран | Проектируем от ширины 375 px и выше. Originals проверяются на 375×812 и 1366×768. |
| Зоны касания | Минимум 40 px в элементах управления Originals. |
| Клавиатура | Пробел — ставка, спин или кэшаут; клавиши конкретной игры перечислены в её правилах (дайс: стрелки двигают цель, X меняет больше/меньше, T включает турбо). |
| Встраивание | Работает в iframe в вашем лобби; звук включается после первого тапа, потому что браузеры требуют действия пользователя. |
Поддержка браузеров
Наша тестовая цель. Если ваша аудитория сидит на чём-то постарше, укажите это в брифе.
| Тестовая матрица | Текущая и предыдущая мажорные версии Chrome, Safari (iOS и macOS), Firefox, Edge и Samsung Internet. |
|---|---|
| Слотам нужен | WebGL. Он есть на каждом телефоне и в каждом браузере из матрицы. |
| Originals нужен | Canvas 2D. WebAudio для звука (без него игра всё равно работает). |
| Страницы тестируются также в | Встроенных браузерах крупных соцсетей — потому что именно там открываются клики по рекламе. |
Вес: наши Originals, замерено
Замерено по файлам на этом сайте в момент генерации страницы: от 38.0 КБ до 427.3 КБ на игру, без учёта шрифтов. Набор инструментов кешируется после первой игры.
| Игра | Код страницы (gzip) | Общий набор инструментов (gzip) | Изображения | Итого |
|---|---|---|---|---|
| Rocket Chip | 7.5 КБ | 15.9 КБ | 1 × WebP, 32.1 КБ | 55.5 КБ |
| Moonshot Limbo | 17.6 КБ | 15.9 КБ | 1 × WebP, 75.9 КБ | 109.4 КБ |
| Gem Mines | 5.2 КБ | 15.9 КБ | 2 × WebP, 79.0 КБ | 100.2 КБ |
| Neon Drop | 4.2 КБ | 15.9 КБ | 1 × WebP, 50.9 КБ | 71.0 КБ |
| Hyper Dice | 13.9 КБ | 15.9 КБ | 1 × WebP, 37.9 КБ | 67.8 КБ |
| Lucky Wheel | 13.2 КБ | 15.9 КБ | 1 × WebP, 47.5 КБ | 76.6 КБ |
| Neon Roulette | 22.0 КБ | 15.9 КБ | Без WebP: SVG / CSS | 38.0 КБ |
| Holo Scratch | 16.8 КБ | 15.9 КБ | 8 × WebP, 394.5 КБ | 427.3 КБ |
| Hi-Lo Heist | 13.0 КБ | 15.9 КБ | 1 × WebP, 47.5 КБ | 76.4 КБ |
| Star Keno | 11.4 КБ | 15.9 КБ | 1 × WebP, 50.9 КБ | 78.3 КБ |
| Sky Tower | 24.1 КБ | 15.9 КБ | 5 × WebP, 283.1 КБ | 323.1 КБ |
| Chip Flip | 12.2 КБ | 15.9 КБ | 3 × WebP, 213.0 КБ | 241.1 КБ |
| Chip & Deal | 19.8 КБ | 15.9 КБ | 2 × WebP, 152.3 КБ | 188.0 КБ |
| Jacks Royale | 18.4 КБ | 15.9 КБ | 1 × WebP, 47.5 КБ | 81.8 КБ |
Вес: слоты
| Бюджет | Согласуется в брифе под каждый проект, потому что слот с двумя персонажами на Spine и слот с жидкими шейдерами — совсем разные звери. |
|---|---|
| Отчётность | Каждый билд идёт с реальными цифрами: вес первой загрузки, общий вес и время загрузки на телефоне среднего класса. |
| Загрузка | Аудио поставляется парами OGG + AAC, чтобы каждый браузер получил формат, который умеет играть; текстуры — атласами. |
Звук
| Слоты | Базовый луп, луп фичи, стингеры, уровни биг-вина, звуки символов и интерфейса. Поставляется парами OGG + AAC (MP4). |
|---|---|
| Originals | Генерируется в коде через WebAudio: ноль аудиофайлов. |
| Originals по умолчанию | В режиме миниатюры без звука. В остальных случаях звук включается после первого тапа; выбор игрока запоминается на устройстве. |
Доступность и комфорт
| Спокойный режим | В Originals есть переключатель, который убирает тряску экрана и вспышки; выбор запоминается. |
|---|---|
| Уменьшение движения | Наши страницы учитывают системную настройку уменьшения движения. |
| Читаемость | Крупные цифры и контрастные множители; каждый результат показывается и текстом (множитель или простое «Boom!»), а не только цветовой вспышкой. |
| Правила | Экран правил с RTP или house edge и формулой — в одном тапе. |
Локализация
| Текст | Все строки в языковых файлах (JSON), никакого текста, вшитого в картинки. |
|---|---|
| Числа и валюты | Форматирование по локали: десятичная запятая, позиция валюты, знаки после запятой для крипты. |
| Режимы формулировок | Игры для Stake Engine переключаются между казино-формулировками и social / свипстейк-формулировками. |
| Справа налево | Оценивается под проект. |
Books на входе, события на выходе.
Как наш клиент общается с RGS Stake Engine. Тот же цикл, что и в нашем работающем слоте.

Параметры запуска, которые читает клиент
Читаются один раз из адресной строки при загрузке. Значения в примерах — плейсхолдеры.
| Параметр | Пример | Значение |
|---|---|---|
sessionID | abc123… | Сессия, которую RGS выдал этому игроку. |
rgs_url | rgs.example.com | С каким хостом RGS работать. |
lang | en | Язык интерфейса. |
currency | USD | Валюта отображения (у реплеев нет кошелька, поэтому они берут её отсюда). |
social | true | Social / свипстейк-формулировки вместо казино-формулировок. |
replay | true | Реплей одного раунда (с game, version, mode, event). |
Вызовы RGS в порядке раунда
Вызовы, которые делает наш клиент Stake Engine. Деньги — целое число: 1 000 000 единиц = 1.00.
| Вызов | Когда | Что происходит |
|---|---|---|
POST /wallet/authenticate | При загрузке | Открывает сессию. Возвращает баланс, уровни ставок, игровые режимы с их множителями стоимости и флаги юрисдикции. |
POST /wallet/play | Ставка | Отправляет режим + сумму. RGS списывает сумму × множитель стоимости, выбирает book и возвращает раунд: множитель выплаты и события book. |
POST /bet/event | Во время анимации | Записывает, докуда игрок досмотрел, чтобы прерванный раунд можно было продолжить. |
POST /wallet/end-round | Раунд показан | Закрывает выигрышный раунд и зачисляет выплату. Проигрышные раунды уже закрыты. |
POST /wallet/balance | В любой момент | Текущий баланс. |
GET /bet/replay/{game}/{version}/{mode}/{event} | Реплеи | Возвращает события одной book для ссылки на реплей. |
Один раунд глазами фронтенда
Упрощено из нашего клиента. Браузер никогда не решает исход; он анимирует события book, которую выбрал RGS.
// 1. open the session
const auth = await rgs('/wallet/authenticate', { sessionID });
const { betLevels, gameModes, jurisdiction } = auth.config; // honour the flags
// 2. bet: the RGS debits amount × costMultiplier and picks a book
const { round } = await rgs('/wallet/play', { sessionID, mode: 'BASE', amount: 1_000_000 }); // 1.00
// 3. animate the book's events (reveal, tumbles, wins, free spins…)
for (const ev of round.state) {
await animate(ev);
rgs('/bet/event', { sessionID, event: String(ev.index) }); // resume point
}
// 4. settle a winning round
if (round.active) await rgs('/wallet/end-round', { sessionID });Флаги юрисдикции, которые клиент обязан соблюдать
Приходят от RGS при аутентификации. Один билд обслуживает все рынки; флаги включают и выключают функции по юрисдикциям.
socialCasino | Social / свипстейк-формулировки. |
|---|---|
disabledTurbo, disabledSuperTurbo | Скрыть управление скоростью. |
disabledAutoplay | Без автоигры. |
disabledBuyFeature | Скрыть покупку бонуса. |
disabledSlamstop, disabledSpacebar, disabledFullscreen | Убрать эти способы ввода. |
displayRTP, displayNetPosition, displaySessionTimer | Показывать RTP, чистый результат или таймер сессии. |
minimumRoundDuration | Никогда не завершать раунд быстрее этого времени. |
Что мы передаём для Stake Engine
| Математика | Код игры в математическом SDK, файлы публикации (books + таблицы исходов) для каждого режима ставки, статистика по режимам. |
|---|---|
| Фронтенд | Статический билд, готовый к загрузке, плюс исходники. |
| Ревью | Описание игры для ревьюеров: правила, фичи, режимы ставки, RTP, макс. выигрыш. |
| QA | Демо на игровых деньгах, где настоящий клиент работает с локальной заменой RGS и частью реальных books, включая реплеи. |
Цифры, которые можно перепроверить.
Что входит в мат. пакет и какие формулы стоят за нашими Originals.

Математические материалы
| Материал | Формат | Что он показывает |
|---|---|---|
| PAR-лист | Таблица | Таблица выплат, ленты барабанов или веса, RTP с разбивкой по базовой игре и фичам. |
| Отчёт о симуляции | PDF / Markdown | RTP, частота выигрышей, частота фич, частота макс. выигрыша, стандартное отклонение и распределение выигрышей — по каждому режиму ставки. |
| Код симуляции | Python | Запустите сами. Тот же сид — те же цифры. |
| Барабаны / books | Формат вашей платформы | То, что реально читает игровой сервер. |
| Текст правил | Строки JSON | RTP и макс. выигрыш по каждому режиму, в точности как в отчёте. |
Пример: Vampir: Graveyard Shift, режимы ставки
Из нашего диздока и математической спецификации. Полная карточка — в карточках игр.
| Режим | Стоимость | RTP | Максимальный выигрыш |
|---|---|---|---|
| Базовая игра | 1× | 96.50% | 25,000× |
| Night Owl (усилитель) | 2× | 96.50% | 25,000× |
| Graveyard Shift (покупка) | 100× | 96.50% | 25,000× |
| Overtime Shift (покупка) | 300× | 96.50% | 25,000× |
| Blood Moon Shift (покупка) | 1,000× | 96.50% | 25,000× |
Originals: формулы, которые мы публикуем
House edge 1% в первых девяти строках. В white-label-билдах вместо 0.99 стоит ваше число.
| Краш, лимбо | P(результат достигает x) = 0.99 ÷ x |
|---|---|
| Дайс | множитель = 99 ÷ шанс выигрыша (%) |
| Мины | выплата после k камней при m минах = 0.99 × C(25,k) ÷ C(25−m,k) |
| Hi-Lo | выплата за прогноз = 0.99 ÷ шанс прогноза |
| Башня | выплата после f этажей = 0.99 × (двери ÷ безопасные двери)f |
| Монетка | выплата после n верных прогнозов = 0.99 × 2n |
| Колесо | S множителей секторов в сумме дают 0.99 × S, поэтому каждое колесо возвращает ровно 99% |
| Кено | каждая из 30 таблиц выплат решена так, что Σ P(совпадений) × выплата = 0.99 |
| Плинко | таблицы выплат масштабированы до 99% до округления для отображения |
| Блэкджек | House edge 0.44% при идеальной базовой стратегии (6 колод, дилер стоит на soft 17, 3:2) |
| Видеопокер | 9/6 Jacks or Better: 99.54% при 5 монетах с оптимальными холдами |
| Рулетка | Европейская с одним зеро: любая ставка платит 36 ÷ число покрытых номеров, поэтому 36/37 = 97.30% |
Что приходит к вам.
Папки, файлы и созвон в конце.
Ничего не уходит под именем «final_v7_REAL.zip». У нас есть стандарты.
Передача игры, папка за папкой
Кастомный слот. White-label-работа получает только то, что нужно для деплоя и скина.
game-name/
├─ build/ # static files, ready to deploy or upload
├─ src/ # front-end source + build scripts
├─ math/ # model, simulation code, reels or books, publish files
│ └─ reports/ # simulation report per bet mode
├─ art/ # layered sources, Spine projects, atlases, exports
├─ audio/ # WAV masters, stems, OGG + AAC game files, cue sheet
├─ store-media/ # tiles, covers, banners in your lobby's sizes
└─ docs/ # GDD, rules text, integration notes, licences listЧек-лист передачи
| Сборка | Билд для деплоя, протестированный на согласованной матрице браузеров. |
|---|---|
| Исходник | Репозиторий с историей, инструкция по сборке в README. |
| Математика | Отчёт по каждому режиму + код, чтобы его воспроизвести. |
| Ассеты | Исходники каждого изображения и звука со списком лицензий. |
| Документация | Правила, заметки по интеграции, известные ограничения. |
| Вызов | Разбор с вашей командой, при желании — с записью. |
Статично, быстро, редактируемо.
Страницы, которые загружаются раньше, чем посетитель передумает, и которые можно править, не звоня нам.

Стек страниц
| Код | Статический HTML, один CSS-файл, небольшой vanilla JS-файл. Никаких фреймворков и конструкторов. |
|---|---|
| Изображения | WebP под размер места, которое картинка занимает; видео только там, где оно оправдывает свой вес. |
| Шрифты | Одно-два семейства или системный стек, когда важнее всего скорость. |
| Формы | Только если оффер её требует; иначе кнопка ведёт прямо на оффер. |
Целевые показатели скорости
| LCP | ≤ 2,5 с порог «хорошо» по Google |
|---|---|
| INP | ≤ 200 мс порог «хорошо» по Google |
| CLS | ≤ 0,1 порог «хорошо» по Google |
| Lighthouse (мобайл) | 90+ по производительности, доступности, лучшим практикам и SEO Наша цель, проверяем перед передачей |
Вес: наши демо-страницы, замерено
Только код: HTML и подключаемые CSS и JS, в gzip, замерено по файлам в момент генерации этой страницы. Шрифты, картинки и видео — сверху. Диапазон охватывает все страницы одного шаблона.
| Страница | HTML + CSS + JS (gzip) |
|---|---|
| Лендинг казино (Velvet Ace, 5 страниц) | 8.4–8.5 КБ |
| Лендинг букмекера (Kickrush, 4 страницы) | 9.8–10.1 КБ |
| Лобби криптоказино (Hashtide) | 14.3 КБ |
| VIP-страница (Sable Crown) | 9.0 КБ |
| Страница установки приложения (Spindle) | 9.5 КБ |
| Свипстейк-лендинг (CoinHarbor) | 24.3 КБ |
| Страница соцказино (Velvet Vegas) | 23.3 КБ |
| Страница «топ-10» (ReelVerdict) | 30.6 КБ |
| Обзорная страница (Payline Journal) | 30.6 КБ |
| Сравнение бонусов (WagerWise) | 30.7 КБ |
| Прелендинги (6 механик, один кит) | 22.2–23.4 КБ |
Хостинг
| Ваш домен, ваш хостинг | Мы присылаем zip. Загрузите его на любой статический хостинг, CDN или сервер. |
|---|---|
| Наш вариант | Размещаем на быстром CDN, а вы направляете на него (под)домен через CNAME. Файлы всё равно ваши. |
| В трекере | Работает как лендинг внутри Keitaro, Binom и подобных: это просто статические файлы. |
Смена гео и языка
| Как | Один билд. Контент по рынкам лежит в небольшом файле данных; страница выбирает его по параметру URL (?geo=de), токену трекера или гео-заголовку хостинга. |
|---|---|
| Что меняется | Язык, валюта, формулировки бонуса, T&C, строки о лицензии и ответственной игре, логотипы платёжек. |
| Что не меняется никогда | То, что видит ревьюер, по сравнению с тем, что видит пользователь на том же рынке. Иначе это был бы клоакинг. |
Инструкция по редактированию (входит)
| Ссылка на оффер | Одно место в начале конфига. Каждая кнопка читает её оттуда. |
|---|---|
| Текст бонуса и условия | Простой текст в том же конфиге, по каждому рынку. |
| Изображения | Замените файл, сохранив имя и размер. |
| Юридические строки | По каждому рынку, рядом с текстом бонуса. |
| Что не трогать | Отмечено в README, с причиной. |
Zip лендинга
Что вы получаете за страницу.
offer-page/
├─ index.html
├─ assets/
│ ├─ page.css
│ ├─ page.js # tracking pass-through, geo/lang swap
│ └─ img/ # WebP, sized for their slots
├─ config.js # offer link, bonus text, T&Cs, legal lines per market
└─ README.md # editing guideКаждый клик на счету.
Передача параметров, постбэки, пиксели и согласие: скучная часть, сделанная правильно.
Если в отчёте вашего трекера виден {clickid}, кто-то ошибся в скобке. Не мы.
Параметры, которые мы передаём
Всё, что приходит в URL страницы, добавляется к ссылке на оффер. Переименуйте под свой трекер.
clickid (или как он называется в вашем трекере) | Сопоставляет конверсию с кликом. |
|---|---|
sub1 … sub5 | Разбивка по вашим кампаниям, креативам и площадкам. |
utm_source, utm_medium, utm_campaign, utm_content, utm_term | Атрибуция в аналитике. |
gclid, fbclid, ttclid | Click ID рекламных платформ, сохраняются, если есть. |
Передача параметров — весь фокус
Каждая ссылка с пометкой data-offer получает входящие параметры.
// copy incoming URL parameters (clickid, sub1…sub5, utm_*) onto every offer link
const incoming = new URLSearchParams(location.search);
document.querySelectorAll('a[data-offer]').forEach(a => {
const url = new URL(a.href);
incoming.forEach((value, key) => url.searchParams.set(key, value));
a.href = url.toString();
});Шаблон постбэка (пример)
Настраивается в панели оператора или сети и указывает на ваш трекер. Плейсхолдеры в фигурных скобках заполняет отправитель; названия зависят от платформы.
https://tracker.example.com/postback?cid={clickid}&payout={payout}&status={status}&txid={transaction_id}Пиксели и согласие
| Поддерживаются | Meta, TikTok, Google tag (GA4 / Ads) и другие по запросу. |
|---|---|
| Конверсии | Отправляются вашим оператором или сетью сервер-сервер (постбэк). Лендинг только фиксирует визиты и клики. |
| Согласие | Баннер согласия там, где этого требует рынок, а теги ждут согласия. |
| Вес | Каждый тег стоит скорости; мы добавляем только те, которыми вы реально будете пользоваться. |
Маленький файл, большой тап.
Однофайловая HTML5-реклама, которая соблюдает спецификацию сети и правила гемблинг-рекламы.

Сначала проверьте политику. Многие рекламные сети ограничивают гемблинг-рекламу по рынкам, требуют предварительного одобрения или вообще не принимают для неё плейаблы. Мы проверяем ваши сети до раскадровки.
Спецификация playable-рекламы
| Файл | Один HTML-файл. Изображения, звук и код встроены; никаких внешних запросов. |
|---|---|
| Лимит размера | Обычно 2–5 МБ в зависимости от сети; некоторые просят меньше. Отраслевой диапазон. Всегда проверяйте актуальную спецификацию каждой сети. |
| Ориентация | Портретная и альбомная, перестраивается на лету. |
| Длительность | Несколько секунд игры, затем финальный экран. Обычно — заметно меньше минуты. |
| Звук | Стартует без звука; звук включается после первого тапа. |
| Призыв к действию | Через MRAID (mraid.open) или собственный метод сети; никогда не голый редирект. |
| Поведение | Никаких авторедиректов, фейковых системных диалогов и фейковых кнопок закрытия. |
Основы MRAID
Дождаться контейнера, открывать ссылки через него, откатываться на обычную ссылку, если MRAID нет.
function cta(url) {
if (window.mraid && typeof mraid.open === 'function') mraid.open(url);
else window.open(url, '_blank');
}
function boot() { /* start the game once the ad container is ready */ }
if (window.mraid) {
if (mraid.getState() === 'loading') mraid.addEventListener('ready', boot);
else boot();
} else boot();
Ничего по запросу .
Ни один блок спецификаций не подошёл, так что Чип прилёг вздремнуть. Попробуйте «MRAID», «postback», «Safari» или «RGS».
Нужна спецификация, которой нет в списке?
Пришлите документацию платформы или список сетей. Ответим письменно, что подходит, а что нет.