Обсудить проект

Исследование

Как восстановить математику живого слота по открытым данным

Живой слот 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%

Откуда берётся RTP

Бонус

  • Старт. Сборщик превращается в монету; на сетке 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 оставить симуляции. Те же инструменты — корпуса раундов, паршиты с интервалами, проверка распределений — мы применяем и на своих играх, и при проверке ваших.

Сыграть в реконструкцию Обсудить проект