前陣子玩一款只有日文的橫版遊戲,對話方塊貼著螢幕底邊,翻譯窗正好壓住字幕。把視窗拖到角落,眼睛又得來回跳。玩到半夜我一直在想:都能翻了,為什麼不能把遊戲裡的字直接換成中文?

《Gaming Copilot:遊戲搭子》是我的作品,我自己也在用。一個給玩家用的 AI 遊戲搭子,他有翻譯功能,目前是走截圖識別:選視窗或框區域,按快捷鍵翻一次,也能自動隔幾秒掃一遍;聯網用大模型,斷網切本地引擎,速度和質量能調。
譯文放在懸浮窗裡,原文留在畫面上。它不碰遊戲檔案,也不改記憶體,絕大多數遊戲都能用。這是最大的優點,也決定了天花板:譯文永遠在遊戲外面。
現在的翻譯,能用但有邊界
劇情對話、道具說明、聯機外語,框一下就能明白,夠用了。但毛病也明顯:原文和譯文分在兩個視窗,誰對應誰得自己拼。

直接替換可不可以呢?
不用大家說,我自己也有這個需求。真把遊戲裡的字換成中文,玩家不用來回掃,截圖也不帶翻譯窗。可它和螢幕翻譯不是一個難度:螢幕翻譯只要看得到畫面,替換文字得先找到字畫在哪裡。

最理想的是文字表。不少遊戲把對白、道具名、UI 文案放在本地化檔案裡,改完重新打包就行,但只覆蓋一部分。有的把字畫進貼圖,路牌、字幕都是圖,得重畫;有的把字串和邏輯綁在一起,改一個詞,任務判定可能跟著壞。

遊戲引擎上,Unity 有 TextMeshPro 和字型圖集,Unreal 有 UMG 和 .locres,Godot、RPG Maker、Ren'Py 各有一套文字層。想自動適配,主流引擎是必須要覆蓋的;社群外掛大多按引擎或按遊戲做適配,還得盯著更新。

字型也是坑。很多遊戲字型沒有中文字形,換了字串也畫不出來,得往字型圖集裡塞字,還得調字重、行高和換行;中文通常更短,對話方塊寬度卻寫死了,短了留白,長了溢位。
再往下是注入:改記憶體、掛鉤子,都要往遊戲程序裡伸手,聯機遊戲一碰反作弊就可能封號,更新一次就全變。
不碰遊戲,也有半條路
折中的做法是視覺替換:截下原文那塊畫面,識別文字,抹掉原文,再把譯文畫回原位。介面不變,字變了。難點在抹得乾不乾淨、字號字色對不對得上,以及字一動就穿幫;適合靜態 UI,不適合滿屏亂飛的戰鬥提示。

還有個容易忽略的點:譯文嵌進遊戲後,看起來就像官方寫的。螢幕翻譯翻錯了,你知道是機器翻的;替換之後翻錯了,玩家會以為遊戲本來就這麼寫。人名不一致、語氣不對、技能名翻錯,在懸浮窗裡能忍,嵌進 UI 裡就很扎眼了。

實話實說,嵌入翻譯這塊我還在嘗試各種技術方案,需求是明確的。但是最好是不動遊戲本身,就能做到的,如果大家有更多想法的話,歡迎評論留言一起討論下,有可以參考學習的軟體也可以戳我哈,感謝~