前陣子把 2009scape 這個專案的用戶端和伺服器加上正體中文支援,順手打包了一個免安裝的單機版,有興趣的人可以直接下載來玩玩看。先介紹遊戲,再講做法和版本差別。

這是什麼遊戲

2009scape 是社群以開源方式復刻 2009 年風貌 RuneScape 的專案(AGPL-3.0),跟官方 OSRS 是不同的東西,走的是更早期那種介面和手感:2D 軟體渲染、點地走、技能樹、老Quest、自由交易。官方線上服免費玩(還送會員),也有人在經營。

它本身是英文/德文/法文語系的專案,沒有中文。這就是你可能會想玩這個漢化版的原因。

三個版本怎麼選

發佈都在 GitHub 上,按需求挑:

你想要… 下載
馬上就能玩(多數人選這個) rt4-client-zh-tw Releases 裡的 2009scape-zh-tw-singleplayer-win64.zip(Linux 選 linux64)。約 170MB,解壓後雙擊 start-game.bat 就玩,內含 Java,不用裝任何東西,也不用開伺服器、不用設定兩邊連線——離線單機,進度存在資料夾裡
自己架一台漢化伺服器 2009scape-zh-tw-server Releases 的 server-zh-tw.jar + server-data-zh-tw.zip
已有官方 launcher 之類、只想換客戶端 同上 Releases 裡的 client-zh-tw.jar(附 sha256,沿用官方慣例)

一般玩家第一個就好,其他兩個是給想自己架服或整合的人。

大概怎麼做的(給想做類似漢化的人)

官方專案本身沒有 i18n 框架,所以是硬改的,流程大致:

  1. Fork 官方 rt4-client(用戶端)和 2009scape(伺服器),開 zh-tw 分支
  2. 用戶端字串層:原始碼的字串是 ISO-8859-1 byte 陣列,結構上裝不下中文,加了 UTF-16 分流;中文字渲染走 AWT 畫進原本的軟體渲染緩衝區,字型大小跟原來的行高對齊。要留意反編譯程式碼裡常有漏掉的分支(實測就是一個缺分支導致登入畫面 NPE)
  3. 伺服器端翻譯:在訊息派送和對話腳本處掛一個攔截器,載入 en→zh 的 JSON 詞表做替換。靜態字串好辦,動態拼接的句子(“You need a crafting level of 40 to…”)用模板詞表處理,佔位符整句翻譯
  4. 詞表產生:腳本把遊戲內字串和 NPC/道具設定全萃取出來(幾萬條),丟給本地跑的 LLM(LM Studio + gemma)批次翻譯,配一份九千多條的術語表約束專名一致性,翻譯完回寫成 JSON。道具、NPC、店名這種設定檔資料直接回寫
  5. 發佈:三個 repo 都掛 GitHub Actions,打 v* tag 自動編譯出 Jar 和單機包、自動建 Release(順序先 server 再 client,單機包會抓 server 最新版組裝)

整條路徑裡技術上最繞的其實是用戶端那個字串層和渲染,翻譯管線本身反而單純。

老實講的限制

  • 詞表是 AI 翻的,沒有逐條人工審過。術語不一致、個別誤翻、少量漏翻的長句還是存在,歡迎回報
  • 聊天輸入框還不能打中文(看得懂、打不出)
  • 切換到 OpenGL 渲染模式時中文寬度會變成佔位(預設軟體渲染沒這個問題)
  • 線上官方伺服器不會是中文——要完整漢化得連有這套伺服器的服(單機包內含的就是)

就是個自用順便開源的興趣專案,能用就好。有問題或翻錯的地方,直接在 repo 開 issue 讓我知道即可。