關於品質
一邊玩一邊翻譯遊戲,真的很難
即時讀取正在執行的遊戲畫面、並當場翻譯,是一個困難的工程問題——比從外面看起來難得多,而這正是 Playto 整個設計的核心。與其假裝這是一個已經打勾完成的問題,我們寧可老實說明原因。如果哪次畫面讀錯了,通常是下面這些原因之一,而不是隨便做做——而且每一項我們都還在持續處理。這頁要說的就是背後的工程邏輯,不涉及內部實作細節。
1 · 翻譯
要先讀懂畫面,才能翻譯它
網頁會把乾淨的文字交給翻譯工具。遊戲交給你的卻是一張圖片——文字是以像素畫出來的,底下沒有可讀取的文字流。所以每一次翻譯都要先把畫面上的字重新讀出來,而後面每一步都會繼承第一步犯下的所有錯誤。
就這個讀取步驟來說,遊戲文字幾乎是最難的情況:
- 為了氣氛而不是可讀性而選用的裝飾字體與手寫風字體。
- 疊在會動的動畫背景上的低對比度文字。
- 極小的 UI 標籤,以及直接畫進美術素材裡的文字。
一個字讀錯,就可能整句意思翻轉——而且沒有拼字檢查能抓出來,因為那個詞往往是專有名詞,或是遊戲自創的用語。接著翻譯本身還要面對第二個問題:遊戲文字是以片段的形式出現。一個兩個字的選單標籤。HUD 上的一個數字。還在一個字一個字打出來的半句對話。翻譯模型在完整句子上表現最好;而遊戲丟給它的卻是順序被打散、沒有前後脈絡、用著一般模型從沒見過的詞彙的碎片。
而這一切都得在遊戲執行的同時,在你的機器上跑完。雲端服務可以為單一句話動用地表最強的模型。即時懸浮視窗要和你正在玩的遊戲共用記憶體和 GPU——所以真正的功夫,大多花在如何用小到能和遊戲並存的模型做出好結果,而不是單純去找最大的模型。
2 · 懸浮視窗
在一款靜不下來的遊戲上作畫
在螢幕上放文字很簡單。在正在執行的遊戲上放文字,又不擋路,就沒那麼簡單了。
翻譯該放在哪裡?文字出現的位置無法預測——底部的對話、右側的道具說明、游標處的工具提示、正中央的系統訊息。在錯的時機蓋住錯的東西,懸浮視窗本身就會變成它原本想解決的問題。
畫面一直在動。同一句對話,在捲動、淡出或一個字一個字打出來的過程中,可能橫跨數十個影格都存在。懸浮視窗必須認出「這還是我正在顯示的同一句」,即使底下的像素每一影格都在微微變化——不然就會不停閃爍、反覆重畫。做不好,看起來就是抖動;做好了,就是在底下的畫面從未真正靜止的情況下,依然把翻譯穩穩地撐住。
而這一切都不能犧牲遊戲本身。擷取和繪製都在遊戲自己的執行緒之外運作,不會搶走影格時間,也沒有任何東西被注入遊戲——Playto 從外部讀取螢幕,運作方式和螢幕錄影軟體一樣。
3 · 記錄
判斷你到底讀了什麼
這是比較不起眼的一個問題,卻也可能是最難的。Playto 的工作之一,是記住你遇到過的句子和單字,好讓玩過的遊戲變成之後可以複習的東西。聽起來像是單純的記帳工作,其實不然——因為遊戲文字並不是一份乾淨、界線分明的清單。
- 同一句話,在一個字一個字打出來的過程中,會出現在很多個影格裡。
- 你站著不動時,同一個畫面會在每一次擷取中反覆出現。
- 完全沒變的同一段文字,每一影格讀出來卻可能有些微差異。
所以「這是一句值得保存的新句子」還是「我已經有這句了」,其實是一個真正的判斷,而且每秒都要做很多次。判斷偏向一邊,記錄裡會堆滿同一句話的重複;偏向另一邊,又會悄悄漏掉你想留下的句子。判斷一句話什麼時候算打完本身也是一個難題——一句還在一個字一個字浮現的話,看起來很像一句簡短、已經說完的話。
這些事一旦做對了,你根本不會看到——你看到的只是一份乾淨的閱讀紀錄。而這份「看不見」,正是大部分工夫所在。
常見問題
為什麼遊戲翻譯有時候會不準?
因為遊戲畫面上的文字是以像素畫出來的,不是可讀取的文字資料,所以每一次翻譯都得先把畫面上的字重新讀出來(OCR)。美術字、動態背景上的低對比度、極小的 UI 文字,都會讓這一步變難,而任何一個誤讀的字都會一路帶進翻譯結果。遊戲文字通常還是缺乏脈絡的片段,而且經常用到一般模型從沒見過的自創詞彙。這本質上就是一個很難的問題,也是我們把品質當成持續進行中的工作、而不是已經做完的事的原因。
翻譯品質會隨時間變好嗎?
會——讀取和懸浮視窗的行為一直在持續調校,更新也會定期釋出。不同遊戲會用不同方式「壞掉」,所以真實的遊戲是我們能拿到的最好訊號。如果某款遊戲讀取效果不好,免費 Demo 就是確認的方法,把情況告訴我們也很有幫助。
為什麼不直接用最大、最準確的 AI 模型?
雲端服務可以為每一句話都動用一個龐大的模型。但即時懸浮視窗是在你的 PC 上運作,和正在執行的遊戲共用記憶體與 GPU——所以真正的功夫在於,如何用小到能和遊戲共存的模型做出好結果,而不是單純挑選最大的模型。你也可以接上自己的雲端 API 金鑰,但我們大部分的心力都投入在本機這條路徑上。
能讀懂美術字或手寫風的遊戲字體嗎?
標準印刷體文字讀取得又快又準。美術字或手寫風字體是一般文字辨識的弱項,所以我們準備了直接讀取這類文字的影像辨識模式——你可以依遊戲的文字呈現方式來選模式。這是真實存在的取捨:影像辨識比較慢、負載也比較重,所以它是留給真正需要的字體用的,而不是預設一直開著。