Як працює застосунок
Застосунок прогнозує, як реальні гравці пройдуть рівень match3 ще до релізу: вінрейт, хінти, час на хід, розкид між сідами. Він не має доступу до реальної статистики нового рівня — прогноз будується з самого поля і з моделей, навчених на рівнях, які вже грали.
Що відбувається, коли ви відкриваєте рівень
- Читання рівня. Файл
.lvlрозбирається так само, як у грі: поле, желе (yellow_1/2), блокери, конвеєри, портали, мішок кольорів, ліміт, сіди. Позиція в драбині WinStreak береться з номера файлуfield_N— так рахуються рівні у воронках, на яких навчені моделі; порядок уsettings.xmlпоказується окремо. - Еталонні гравці (6 симуляцій). Той самий рівень грають фіксовані боти: неуважний (θ=0), уважний (θ=1), планувальник (θ=3), планувальник із запасом ходів (θ=5), уважний із типовими хінтами і з удвічі більшою кількістю хінтів. Їхні вінрейти — «сигнали» складності саме цього поля.
- Прогноз поведінки людей. Дві моделі, навчені на відкаліброваних рівнях, беруть параметри поля + сигнали + позицію в драбині і видають: пряму оцінку вінрейту і очікувану силу гравців θ з їхніми звичками до хінтів.
- Крива θ (9 симуляцій). Рівень грає популяція з різною силою (θ від −2 до 6), з передбаченими звичками до хінтів. Виходить крива «вінрейт від сили гравців».
- Прогноз. Пряма оцінка і оцінка з кривої змішуються (70/30 у логітах). На кривій знаходиться θ, що дає цей вінрейт.
- Фінальна симуляція. Рівень грає популяція з цим θ — звідси хінти по видах, час кліку, запас ходів/часу на перемогах, недобір цілі на програшах і вінрейт кожного сіду.
Усі симуляції розкладаються на всі ядра процесора (Web Workers). Нічого не відправляється на сервер.
Як рахується складність
складність = 100% − прогноз вінрейту прогноз = σ( 0.7 · logit(пряма оцінка) + 0.3 · logit(вінрейт на кривій θ при передбаченому θ) )Складність — частка стартів, що закінчуються не перемогою, з урахуванням того, що реальні гравці беруть хінти і докуповують ходи у вікні продовження. Це не складність для ідеального бота: ту видно на графіку «бот θ=1 без хінтів».
Блок «Що робить рівень складнішим» розкладає пряму оцінку на внески параметрів: кожен внесок — коефіцієнт моделі × наскільки параметр рівня відрізняється від середнього (у стандартних відхиленнях). Сума внесків плюс середній рівень дає логіт прямої оцінки.
Гравець і світ у симуляції
- Механіка відтворює код гри: генерація стартової дошки з сіду (генератор Кнута), досипання з мішка з вагами, гравітація з діагональним сповзанням і порталами, лінії/бомби/суперкристал і їхні комбо, лід, камінь, ланцюги, туман, мармур, крижані кулі, сталь, скло, конвеєри, мішечки.
- Гравець — не оптимізатор: бачить частину ходів, іноді помиляється, частину ходів планує наперед (цілиться бустерами в желе під блокерами і в «кишені»). Сила θ задає, скільки ходів він помічає і наскільки уважно обирає.
- Популяція різнорідна: кожна спроба — окремий гравець із силою θ ± 1.3.
- Хінти беруться частіше, коли спроба «програється» за поточним темпом. Вікно продовження: коли ліміт вичерпано, гравець бере хронометр (+5 ходів / +45 с) тим охочіше, чим ближче ціль.
Сіди
Рівень має список сідів; гра вибирає один випадково. Сід визначає стартову дошку і всю послідовність нових фішок. Розклад по сідах показує, наскільки результат залежить від везіння зі стартом: широкий розкид означає, що частина гравців отримує «непрохідну» дошку незалежно від уміння. Вінрейт окремого сіду рахується з кількох спроб, тож для точних висновків по сідах ставте більше прогонів (наприклад 5000 — це ≈ 20 спроб на сід).
Час кліку
Віртуальний час одного ходу: обдумування за законом Хіка (довше, коли на великому полі мало можливих ходів), пришвидшення при нестачі часу і анімації каскадів, вибухів, комбо. На рівнях із часом він витрачає ліміт; на рівнях із ходами — показує, наскільки рівень «в'язкий».
Точність і межі
- Сліпа перевірка (рівні, яких модель не бачила): основна група — 54 з 75 рівнів з похибкою вінрейту ≤ 7 п.п., середня 5.3 п.п.; альтернативна група з 10 нових серій — 95 з 150, середня 6.0 п.п.
- Хінти: середня похибка 0.05–0.11 хінта на старт по кожному виду.
- Природна межа: той самий рівень на тій самій позиції в різних серіях має вінрейт, що різниться до 13.5 п.п. — частину розкиду вносить аудиторія серії, і жоден прогноз за полем її не бачить.
- Систематика: середину драбини (позиції 5–7) прогноз вважає трохи легшою, кінець (14–15) — трохи складнішою, ніж для людей.
Механіки (вкладки)
Зараз працює «Золоті плитки» (Crystalls). Вкладки «Опустити предмет», «Відкопати предмет» і «Збір множинних цілей» використовуватимуть той самий двигун: кожна механіка додає свою ціль і фігури, а модель поведінки калібрується на воронках своєї аудиторії.