Вкладка теперь сама говорит, что ваш ход
Отвлеклись на минуту — и партия молча ждёт вас. Теперь вкладка браузера сообщает, чей ход, при переходе к вам один раз звучит сигнал, а кольцо обратного отсчёта наконец начинается полным во всех режимах, а не на пятую часть уже израсходованным.

Простыми словами
В партии opolyx есть таймер хода, и минуты внимания в другом месте достаточно, чтобы этот ход ему проиграть. До сих пор за вами никто не приходил: доска стояла, часы тикали, и единственным способом узнать, что ходить вам, было в этот момент смотреть на доску. Для экрана, который люди естественным образом покидают, это плохая сделка — пока ходят боты, пока думает соперник, пока догружается страница в соседней вкладке.
Теперь в момент, когда ход переходит к вам, происходят три вещи. Меняется заголовок вкладки — и вкладка, на которую вы не смотрите, говорит об этом прямо из полосы вкладок. Один раз звучит короткий сигнал — и только на переходе, никогда при загрузке страницы, чтобы повторное открытие партии не проигрывало целую очередь сигналов. И кольцо вокруг отсчёта начинается полным, чего раньше не было.
Для тех, кому интересны детали
Кольцо, как выяснилось, мерило не те часы. Длина хода была вписана в него постоянным числом — 75 секунд, то есть классическая, — тогда как движок даёт каждому режиму свою. Ход в Blitz длится 60 секунд, а в Speed — 45, так что в этих режимах кольцо рисовало ход, который уже частично истёк, прежде чем кто-либо хоть что-то сделал: в Blitz оно открывалось на пятую часть израсходованным, в Speed — почти наполовину. За последние тридцать дней это больше четверти всех завершённых партий, и хуже всего было именно в том режиме, который новичкам предлагается первым. Теперь кольцо вообще не читает никакой константы — оно измеряет тот ход, который действительно идёт, и берёт за длину самое большое оставшееся время, какое видело у этого срока. Заодно это покрывает две длины, в которые не попала бы ни одна константа: серверную подмену только для Classic и удлинённые часы паузы на оплату.
| Режим | Настоящая длина хода | Кольцо показывало |
|---|---|---|
| Classic | 75s | 75s |
| Blitz | 60s | 75s |
| Speed | 45s | 75s |
Звук — самая странная часть этой истории. Файл уже был. Он был записан, обрезан, нормализован, лицензирован и внесён в каталог со своей громкостью и своим минимальным интервалом — не было только строчки, которая сказала бы, какое событие его проигрывает. То есть он уехал в продакшен, лежал на диске и прозвучал ровно ноль раз. Найти его не стоило ничего; заметить, что его нет, потребовало человека, который спросил, почему игра вообще никогда ни о чём не сообщает.
Чтобы он стал слышен, понадобилось одно осознанное исключение. Звук обычно попросту запрещён, пока вкладка в фоне, — разумная настройка по умолчанию и ровно неверная здесь, потому что фоновая вкладка и есть вся аудитория этого сигнала. Теперь правило живёт в одной небольшой протестированной функции, а не размазано по коду: сначала применяется настройка звука и может наложить вето на что угодно, и только потом именно этот сигнал пропускается туда, куда остальные не пропускаются.
