Исследование
Как восстановить математику живого слота по открытым данным
Живой слот 3×3 с hold & win, его публичное демо — и больше ничего: ни сервера, ни конфига, ни паршита. Это было тестовое задание одного из нас; играбельный результат — пресет Anvil of Storms.
Задача
Построить математическую модель живого слота, которая играет как оригинал: те же частоты, та же форма бонуса, тот же RTP в пределах того, что позволяют данные. Единственный источник — публичное демо игры.
Игра: сетка 3×3, пять линий, монеты на 1-м и 3-м барабанах, сборщик (Collector) на 2-м, четыре джекпота (25, 50, 150 и 1 000× ставки) и бонус hold & win на молотах. Четыре режима ставки: обычная ставка и три усиленных режима по 1,4 и 2 ставки.
Данные
Из демо записано 350 000 раундов (гостевой вход, минимальная ставка): 200 000 на обычной ставке и по 50 000 в каждом усиленном режиме — всего 4 137 бонусов.
Звучит солидно, но сами по себе записанные раунды определяют RTP обычной ставки лишь с точностью около ±2,8 процентного пункта: 94,4% на 200 000 раундов, 95-процентный интервал — от 91,6 до 97,2%. Поэтому RTP мы не подгоняли. Каждый параметр модели взят из структуры раундов — какие символы, монеты, молоты и множители выпадают и как часто, — а RTP затем посчитала сама модель на сотнях миллионов спинов.
Главная находка: исход решается до того, как нарисована сетка
Обычная модель барабанов игру не воспроизводила. Сервер сначала выбирает, что произойдёт в раунде — бонус, выигрыш по линии, сбор монет или ничего, — и только потом рисует сетку, которая этот исход показывает. Бонус устроен так же: сначала выбирается его сумма, потом под неё разыгрываются удары молотов. Вот на чём это основано:
- Запуск бонуса. Сетка, собранная из барабанов, показывала бы условие запуска примерно раз в 312 спинов; в игре оно выпадает раз в 164. Ещё 38% бонусов приходят через «раш», когда игра открыто добавляет недостающие монеты или сборщика, — вместе бонус раз в 102 спина. За 198 000 раундов без бонуса условие запуска на сетке не появилось ни разу.
- Выигрыши по линиям. Барабаны дают выигрыш по линии в 6,5–6,8% спинов при любом числе наборов барабанов; в игре — 7,5%.
- Молоты обходят монеты. В бонусе монета оказывается под молотом в 11% ударов, а в клетках без удара — в 48%. Сбор на респине решён заранее, остальные монеты — для вида.
- Сумма бонуса узкая. Ниже 15× ставки заканчиваются всего 1,5% бонусов, 58% — между 20× и 50×. Если бы молоты били независимо, бонус был бы гораздо шире: около 8% ниже 10× и 2% выше 200×.
Поэтому и модель устроена так же: сначала исход, потом сетка. Для этой игры такая схема воспроизводит все измеренные частоты сразу; «чистая» модель барабанов — нет.
Барабаны и выплаты
Барабаны физические, а не виртуальные: каждый показывает конечный набор из 460–480 окон по три символа, и после первых 50 000 спинов новые окна почти не появляются. Наборов барабанов четыре, набор выбирается на каждый спин. Видно это по зависимости между барабанами: у независимых барабанов её не было бы, а таблица совместных частот раскладывается ровно на четыре слоя выше шума. Веса наборов — примерно 1 : 1 : 1 : 4, между режимами ставки они не меняются.
| Источник | Как устроен | Записанные раунды | Модель |
|---|---|---|---|
| Линии | 5 линий, три в ряд; Wild заменяет любой символ и платит по верхней ставке | 28,6% | 28,3% |
| Сбор монет | сборщик на 2-м барабане забирает стоимость всех монет на сетке | 20,6% | 20,8% |
| Бонус | hold & win с молотами | 45,2% (±2,7) | 45,4% |
Бонус
- Старт. Сборщик превращается в монету; на сетке 3–8 монет (3 — 39%, 4 — 40%, 5 — 17%), все забираются с множителем ×1, и множители их клеток растут.
- Респины. Над каждым барабаном падает один, два или три молота (45 / 39 / 16%). Монета под молотом забирается с множителем клетки, после чего множитель растёт.
- Счётчик. На старте три респина; сбор возвращает счётчик к 3, промах отнимает один. Правило выполнилось во всех 25 736 записанных шагах бонуса.
- Шанс сбора. Монета под молотом — в 12% ударов по клетке ×1 и в 8–9% по клетке ×4–5; на последнем респине шанс примерно на 20% выше.
- Сумма выбирается заранее: медиана — 39× ставки, среднее — 46×, 90% бонусов укладываются в 20–76×. В среднем бонус длится 13 респинов.
Насколько модель близка
Обычная ставка: 200 000 записанных раундов против 100 млн раундов симуляции модели (сид 20261028).
| Записано | Модель | |
|---|---|---|
| Любой выигрыш | 1 на 8,29 | 1 на 8,29 |
| Бонус | 1 на 102,3 | 1 на 102,3 |
| Доля бонусов через раш | 37,7% | 37,8% |
| Средний бонус, × ставки | 46,2 (±1,7) | 46,5 |
| Респинов за бонус | 13,2 | 13,2 |
RTP по режимам
| Режим | Цена | Записано (95-процентный интервал) | Модель (95-процентный интервал симуляции) |
|---|---|---|---|
| Обычная ставка | 1 | 94,4 (91,6–97,2) | 94,52 (94,40–94,64), 100 млн раундов |
| Шанс бонуса | 1,4 | 92,4 (87,5–97,4) | 91,67 (91,47–91,87), 30 млн |
| Усиленный бонус | 1,4 | 97,1 (88,7–105,5) | 95,50 (95,21–95,79), 30 млн |
| Шанс и усиление | 2 | 92,7 (86,9–98,4) | 94,40 (94,14–94,66), 30 млн |
Интервал модели учитывает только шум симуляции. Главная неопределённость — средний бонус: по данным он известен с точностью около ±3,6%, это ±1,7 пункта RTP, и заявленный RTP оригинала в этот диапазон попадает. Под заявленное значение модель мы не подкручивали — она показывает то, что показывают раунды.
Разница между режимами известна точнее, чем абсолютный уровень. В режиме «шанс бонуса» бонус тот же, что на обычной ставке, поэтому ошибка в бонусе сдвигает оба режима почти одинаково. И модель говорит, что этот режим возвращает примерно на 2,9 пункта меньше обычной ставки: игрок платит за спин на 40% больше, а бонус получает в 1,75 раза чаще — этого не хватает, чтобы окупить надбавку.
Ограничения
- Распределение бонуса построено по 2 811 бонусам (обычная ставка и шанс бонуса) и 1 326 (два усиленных режима). Хвост выше 200× — одна корзина; форма внутри неё следует из механики бонуса и потолка 2 000×, а не из наблюдений.
- Стопки и порядок символов на барабанах не восстанавливались: модель хранит каждый набор барабанов как окна по три символа с весами. Это точный эквивалент барабанов с весами остановок, но не сами барабаны.
- Как именно сервер выбирает сумму бонуса и подгоняет под неё удары, по раундам не видно. Модель воспроизводит результат — распределение суммы, длину, шанс сбора по множителю, — а не сам алгоритм.
Что это показывает
Записанных раундов достаточно, чтобы восстановить рабочую модель живой игры, если каждый параметр мерить по структуре, а RTP оставить симуляции. Те же инструменты — корпуса раундов, паршиты с интервалами, проверка распределений — мы применяем и на своих играх, и при проверке ваших.