分頁現在會告訴你輪到你了
你移開視線片刻,牌局就靜靜地等著你。現在瀏覽器分頁會說輪到誰了,輪到你的那一刻會響一聲提示音,而倒數計時圓環終於在所有模式下都從滿開始,不再一上來就已經走掉五分之一。

通俗版
opolyx 的一局有回合計時,把注意力挪開一分鐘,就足以讓這個計時器吃掉你一個回合。在此之前沒有任何東西會來找你:棋盤就擺在那裡,鐘在走,而知道輪到你的唯一辦法,就是那一刻剛好在看棋盤。對一塊人們自然會離開的螢幕來說,這是一筆糟糕的交易——機器人在走棋的時候,對手在思考的時候,另一個分頁裡的網頁正要載入完的時候。
現在,在回合輪到你的那一刻會發生三件事。瀏覽器分頁的標題會改變,於是一個你根本沒在看的分頁,會從分頁列裡把這件事說出來。一聲短提示音只響一次——而且只在切換的那一刻響,絕不會在頁面載入時響,這樣重新打開一局不會把一整排提示音補放一遍。而倒數計時的圓環從滿開始,這是以前沒有的。
技術細節
結果是,這個圓環量的是錯的那口鐘。回合長度被當成固定數字寫死在裡面——75 秒,也就是經典模式的——而引擎給每個模式各自的長度。Blitz 的一個回合是 60 秒,Speed 是 45 秒,所以在這兩個模式裡,圓環畫出來的是一個在任何人做任何事之前就已經部分流逝的回合:在 Blitz 裡它一開始就已走掉五分之一,在 Speed 裡接近一半。過去三十天裡這佔了全部已結束對局的四分之一以上,而且最嚴重的恰恰是最先推薦給新玩家的那個模式。現在圓環根本不讀任何常數:它量的是真正在跑的這一個回合,把它在這個截止時刻上見過的最長剩餘時間,當作用來作圖的長度。這樣還順帶涵蓋了兩種任何常數都對不上的長度:伺服器只對經典模式生效的覆寫值,以及付款暫停被給到的那口更長的鐘。
| 模式 | 真實回合長度 | 圓環顯示為 |
|---|---|---|
| Classic | 75s | 75s |
| Blitz | 60s | 75s |
| Speed | 45s | 75s |
聲音才是這個故事裡古怪的部分。檔案早就在了。它被錄製、裁剪、做過響度正規化、取得了授權,還帶著自己的音量和自己的最小間隔被登記在目錄裡——什麼都有,唯獨少了一行說明「哪個事件應該播放它」。於是它上線了,躺在磁碟上,總共響過零次。找到它沒花什麼力氣;察覺它不在,則需要有人問一句:這遊戲怎麼從來什麼都不提示。
讓它出聲需要一個刻意的例外。當分頁位於背景時,聲音通常被直接拒絕——這是一個合理的預設值,而在這裡恰恰是錯的,因為背景分頁正是這聲提示的全部受眾。現在這條規則住在一個小而有測試的函式裡,而不是散落各處:先套用靜音設定,它可以否決任何東西,之後才讓這一聲提示從別的聲音過不去的地方通過。
