Playto PLAYTO / 遊戲翻譯為什麼這麼難

關於品質

一邊玩一邊翻譯遊戲,真的很難

即時讀取正在執行的遊戲畫面、並當場翻譯,是一個困難的工程問題——比從外面看起來難得多,而這正是 Playto 整個設計的核心。與其假裝這是一個已經打勾完成的問題,我們寧可老實說明原因。如果哪次畫面讀錯了,通常是下面這些原因之一,而不是隨便做做——而且每一項我們都還在持續處理。這頁要說的就是背後的工程邏輯,不涉及內部實作細節。

1 · 翻譯

要先讀懂畫面,才能翻譯它

網頁會把乾淨的文字交給翻譯工具。遊戲交給你的卻是一張圖片——文字是以像素畫出來的,底下沒有可讀取的文字流。所以每一次翻譯都要先把畫面上的字重新讀出來,而後面每一步都會繼承第一步犯下的所有錯誤。

就這個讀取步驟來說,遊戲文字幾乎是最難的情況:

  • 為了氣氛而不是可讀性而選用的裝飾字體與手寫風字體。
  • 疊在會動的動畫背景上的低對比度文字。
  • 極小的 UI 標籤,以及直接畫進美術素材裡的文字。

一個字讀錯,就可能整句意思翻轉——而且沒有拼字檢查能抓出來,因為那個詞往往是專有名詞,或是遊戲自創的用語。接著翻譯本身還要面對第二個問題:遊戲文字是以片段的形式出現。一個兩個字的選單標籤。HUD 上的一個數字。還在一個字一個字打出來的半句對話。翻譯模型在完整句子上表現最好;而遊戲丟給它的卻是順序被打散、沒有前後脈絡、用著一般模型從沒見過的詞彙的碎片。

而這一切都得在遊戲執行的同時,在你的機器上跑完。雲端服務可以為單一句話動用地表最強的模型。即時懸浮視窗要和你正在玩的遊戲共用記憶體和 GPU——所以真正的功夫,大多花在如何用小到能和遊戲並存的模型做出好結果,而不是單純去找最大的模型。

2 · 懸浮視窗

在一款靜不下來的遊戲上作畫

在螢幕上放文字很簡單。在正在執行的遊戲上放文字,又不擋路,就沒那麼簡單了。

翻譯該放在哪裡?文字出現的位置無法預測——底部的對話、右側的道具說明、游標處的工具提示、正中央的系統訊息。在錯的時機蓋住錯的東西,懸浮視窗本身就會變成它原本想解決的問題。

畫面一直在動。同一句對話,在捲動、淡出或一個字一個字打出來的過程中,可能橫跨數十個影格都存在。懸浮視窗必須認出「這還是我正在顯示的同一句」,即使底下的像素每一影格都在微微變化——不然就會不停閃爍、反覆重畫。做不好,看起來就是抖動;做好了,就是在底下的畫面從未真正靜止的情況下,依然把翻譯穩穩地撐住。

而這一切都不能犧牲遊戲本身。擷取和繪製都在遊戲自己的執行緒之外運作,不會搶走影格時間,也沒有任何東西被注入遊戲——Playto 從外部讀取螢幕,運作方式和螢幕錄影軟體一樣。

3 · 記錄

判斷你到底讀了什麼

這是比較不起眼的一個問題,卻也可能是最難的。Playto 的工作之一,是記住你遇到過的句子和單字,好讓玩過的遊戲變成之後可以複習的東西。聽起來像是單純的記帳工作,其實不然——因為遊戲文字並不是一份乾淨、界線分明的清單。

  • 同一句話,在一個字一個字打出來的過程中,會出現在很多個影格裡。
  • 你站著不動時,同一個畫面會在每一次擷取中反覆出現。
  • 完全沒變的同一段文字,每一影格讀出來卻可能有些微差異。

所以「這是一句值得保存的新句子」還是「我已經有這句了」,其實是一個真正的判斷,而且每秒都要做很多次。判斷偏向一邊,記錄裡會堆滿同一句話的重複;偏向另一邊,又會悄悄漏掉你想留下的句子。判斷一句話什麼時候算打完本身也是一個難題——一句還在一個字一個字浮現的話,看起來很像一句簡短、已經說完的話。

這些事一旦做對了,你根本不會看到——你看到的只是一份乾淨的閱讀紀錄。而這份「看不見」,正是大部分工夫所在。

為什麼沒有一個設定能通吃所有情況

正因為每款遊戲難的地方都不一樣,不會有單一行為適合所有遊戲——這正是 Playto 提供好幾個選項的原因。讀取模式(從快速的文字辨識,到給美術字用的完整影像辨識)、以及擷取模式(滑鼠跟隨固定區域、或整個視窗)存在的目的,就是讓你依照特定遊戲「壞掉」的方式來選對工具。這些選項怎麼搭配使用,可以看懸浮視窗介紹頁

而且它會持續變好。這是我們一直在做的調校——讀取、懸浮視窗的穩定度、記錄。如果某款遊戲讀取效果不好,Demo 是免費的,告訴我們是哪款遊戲、出了什麼問題,是你能幫上最大忙的事;真實玩家在真實遊戲裡的回饋,正是我們用來改進的訊號。

常見問題

為什麼遊戲翻譯有時候會不準?

因為遊戲畫面上的文字是以像素畫出來的,不是可讀取的文字資料,所以每一次翻譯都得先把畫面上的字重新讀出來(OCR)。美術字、動態背景上的低對比度、極小的 UI 文字,都會讓這一步變難,而任何一個誤讀的字都會一路帶進翻譯結果。遊戲文字通常還是缺乏脈絡的片段,而且經常用到一般模型從沒見過的自創詞彙。這本質上就是一個很難的問題,也是我們把品質當成持續進行中的工作、而不是已經做完的事的原因。

翻譯品質會隨時間變好嗎?

會——讀取和懸浮視窗的行為一直在持續調校,更新也會定期釋出。不同遊戲會用不同方式「壞掉」,所以真實的遊戲是我們能拿到的最好訊號。如果某款遊戲讀取效果不好,免費 Demo 就是確認的方法,把情況告訴我們也很有幫助。

為什麼不直接用最大、最準確的 AI 模型?

雲端服務可以為每一句話都動用一個龐大的模型。但即時懸浮視窗是在你的 PC 上運作,和正在執行的遊戲共用記憶體與 GPU——所以真正的功夫在於,如何用小到能和遊戲共存的模型做出好結果,而不是單純挑選最大的模型。你也可以接上自己的雲端 API 金鑰,但我們大部分的心力都投入在本機這條路徑上。

能讀懂美術字或手寫風的遊戲字體嗎?

標準印刷體文字讀取得又快又準。美術字或手寫風字體是一般文字辨識的弱項,所以我們準備了直接讀取這類文字的影像辨識模式——你可以依遊戲的文字呈現方式來選模式。這是真實存在的取捨:影像辨識比較慢、負載也比較重,所以它是留給真正需要的字體用的,而不是預設一直開著。

在自己的遊戲上試試看

免費 Demo 是最老實的測試——看看它怎麼讀你實際在玩的遊戲,再告訴我們哪裡做得不夠好。那些回饋正是我們調校的依據。