-
Vladimir Zhukov authored
Две ошибки на уровне из 50 нот стоили 26 % результата: точность 96 %, а медаль серебряная. Серия после обрыва набиралась заново от ×1, поэтому цена ошибки зависела не от точности, а от длины уровня — и тем сильнее, чем уровень короче. На первых уровнях золото доставалось только за безошибочный прогон. Сжатие множителя с ×5 до ×2 в прошлой правке решило задачу лишь наполовину: спред стал узким, но обрыв серии по-прежнему отбрасывал игрока в самое начало шкалы. Теперь промах откатывает комбо на одну секцию: недозаполненная секция и последняя полностью заполненная гаснут, комбо встаёт ровно на начало предыдущей ступени, множитель падает на один шаг. На первой ступени терять нечего — уходим в ноль, как и раньше. Пороги ступеней при этом сжаты с 0/4/9/15/22 до 0/3/7/12/18. Без этого правило не работает на уровнях 1-2: там всего 15 и 22 ноты, комбо не выбирается выше второй ступени, и «−1 секция» вырождается в «в ноль». ×2 набирается за 18 нот вместо 22 — разгон почти не короче. Точность, нужная для медали, по длине уровня: 15 нот 50 нот 188 нот золото 93 % 94 % 91 % (было 100 / 98 / 93) серебро 80 % 88 % 88 % бронза 60 % 76 % 79 % То есть медаль наконец зависит от точности, а не от того, какой уровень выбран. Пример из фидбека — 2 ошибки из 50 — даёт 91 % и золото вместо 74 % и серебра. Детали: - Ветка промаха в applyNote возвращала захардкоженные tierAfter: 1 и multiplier: ×1. То же в handleTimeout: HUD показывал ×1 даже когда ступень оставалась. Теперь и то и другое считается от итогового комбо. - Условие lostTier выражено через факт падения ступени (tierAfter < tierBefore), а не через tierBefore > 1. - Подпись всплывашки «комбо сброшено» → «−1 ступень»: сброса больше нет. - Ступенчатая шкала в HUD правки не потребовала — она уже считает прогресс от начала ступени, поэтому секция гаснет целиком. - Живучесть не тронута. Весь блок «баланс» в scoring.test.ts прошёл без правок: инварианты про 10 % ошибок, треть промахов, половину промахов и монотонность держатся. Добавлены тесты на demoteCombo, на то, что одна ошибка не лишает золота ни на одной длине уровня, и на независимость порога золота от длины — последний под старым правилом падал бы на 100 % для 15 нот. Новый Hud.test.tsx проверяет, что шкала гаснет ровно на одну секцию с любой ступени и что с ×2 множитель падает до ×1.75. Co-Authored-By:Claude Opus 5 (1M context) <noreply@anthropic.com>
b2b1e909