Re: [問題] 星露谷有人在做繁體中文嗎?

看板 Steam
作者 xpulsar (xpulsar)
時間 2017-10-21 21:12:48
留言 52則留言 (43推 0噓 9→)

因為有些人對怎麼做簡轉繁的方法有興趣. 對於這部分沒興趣的,現在就可以<-離開了. ------------------------------------------------------- 先簡單講一下, 一開始是有打算把文本也換成繁體. 但是, 昨天卡住了, 因為我沒找出來Chinese-X.xnb的運作方法. 才Post了第一篇文章. 問有沒有人已經做出來了. 如果已經有人在做了, 不太想花太多時間在這上面. 但是, 昨天運氣很好, 突然開竅看懂了Stardew的作法. 也看了大家回應, 才決定只去修改字型檔. 雖然不完美, 但是至少有60分了. 廢話不多說, 開始說技術部分, 等大家了解後, 應該會覺得一點都不難. 裡面最重要的是 XNB Extract 0.2.2 我們需要用這個工具, 去把 xnb 檔案解出來. 以下我自己觀察的結果, 也許不太正確, 如果有人知道更詳細的格式, 也請不吝指教. SpriteFont1.zh-CN.xnb 會解出 SpriteFont1.zh-CN.yaml 和 SpriteFont1.zh-CN.texture.png 重點是 SpriteFont1.zh-CN.yaml 是描述某個字在 png 檔的位置. - #!Rectangle x: 127 y: 57 width: 1 height: 1 會有很多個 Rectangle, 是代表一個一個的字. 而代表是哪個字, 就要看後面的資料了. - "三" #!Char - "上" #!Char - "下" #!Char - "不" #!Char 這每個字是一一相對應前面的 Rectangle, 所以我就寫個 nodejs 去處理 .yaml 檔, 轉成之後要用的 json 格式, 裡面記錄了每個字的x,y,width和height. 再用新同文堂的資料去做簡轉繁. 然後利用這轉完的資料, 用 html5 的 canvas 去把 png 檔載入, 再用這兩個API去修改png檔. ctx.clearRect // 清掉原來的簡體字 ctx.fillText // 把新的繁體字寫進去 做完後, 就有新的 png 檔. 然後再使用 XNB Extract 去壓回成 xnb 檔. SmallFont.zh-CN.xnb 也是類似的處理方法. 而讓我卡住的 Chinese-0.xnb Chinese-1.xnb Chinese-2.xnb Chinese-3.xnb 也是類似的方法, 但最大不同的是描述字體的資料是放在 Chinese.fnt (因為不太一樣, 所以當初才會卡住.) 格式也是有點不太一樣. <char id="8273" x="1012" y="0" width="9" height="18" xoffset="6" yoffset="9" xadvance="22" page="1" chnl="15" /> <char id="9825" x="180" y="40" width="19" height="19" xoffset="1" yoffset="9" xadvance="22" page="3" chnl="15" /> <char id="12288" x="1022" y="23" width="1" height="1" xoffset="0" yoffset="0" xadvance="22" page="0" chnl="15" /> id="8273" 這個數字事實上就是 unicode . 以 javascript 來寫, 你可以用下面方式轉回來 String.fromCharCode(8273); 到這邊, 就已經知道某個簡體字的位置. 後面有一個 page="1" 這個數字就是 Chinese-X , 所以 page="1" 就是放在 Chinese-1.png 這樣就照前面的做法就可以了. 然後修改完 Chinese-X.png, 再壓回去 Chinese-X.xnb 檔. 蓋掉原來的 xnb 檔, 再執行星露谷, 就可以看到改完的結果了. 這就大功告成了. :) 比較完美的做法是重建整個字形檔, 因為我還沒有完全看懂他的格式, 所以這就留待有心人了. XD --
※ 批踢踢實業坊(ptt.cc), 來自: 111.248.112.188
※ 文章網址: https://www.ptt.cc/bbs/Steam/M.1508591570.A.669.html

five2six2: 嗯嗯嗯原來如此(? 10/21 21:16

milkkiss: 看不太懂..先推 10/21 21:16

five2six2: 文組看不懂 10/21 21:16

ansonandan: 嗯嗯 我也是這麼想的 10/21 21:38

a007son: 看到xnb格式解開先給推 10/21 21:51

taleschia: 先推以免被人笑說我是文組 10/21 22:35

stupigII: 其實我也很想把一些遊戲弄成繁體,但是我文組的的T_T 10/21 22:49

af42022003: 不明覺厲! 10/21 22:56

tennyleaz: NS版沒法改QQ 10/21 23:28

darkdeus: 先推,但我看不懂 QQ 10/21 23:29

qmaper: ....供啥咪 10/21 23:33

Vilehawk: 看不懂給推 10/21 23:40

ice76824: 嗯嗯,我也這麼覺得 10/21 23:52

elfswordsman: 推好心 10/22 00:17

hot4321: push 10/22 00:30

imjun: 推 10/22 00:42

sampp1213205: 推 要不是我太忙 不然我也想弄 10/22 01:02

NgJovi: 推 之前想弄Gnomoria但就是沒耐心 這篇寫得好 10/22 01:03

iceyeman: 靠 好有心喔~ 10/22 01:05

tzouandy2818: 其實沒有很複雜啦 只是麻煩而已 而且不是每個遊戲都 10/22 01:09

tzouandy2818: 可以這樣用的 10/22 01:09

tzouandy2818: 精簡版懶人包:解包檔案→替換檔案內字體→封包檔案 10/22 01:10

ctes940008: 轉頭望向簡體遊戲 10/22 01:12

vi000246: 如果把流程寫成程式應該能一次翻譯完吧? 10/22 01:13

vi000246: 每個xnb檔的格式都不一樣嗎? 10/22 01:15

cart76002: 嗯嗯 跟我想的一樣 10/22 01:40

lynnlin: 嗯嗯,我也這麼覺得,雖然看不懂XD 有心大推! 10/22 01:58

wacoal: 推,現在玩遊戲的時間都不夠,除非真有愛不然都很懶得研究 10/22 02:11

RMEXZ: 推 雖然我不懂 10/22 02:53

bolue: 有心 推 10/22 02:55

CJhang: 感覺依照原po講法 可以寫個程式 在每次更新後都能run個一 10/22 03:34

CJhang: 輪重新改簡為繁 不知道其中有沒有困難? 10/22 03:34

alan4023: 原來是這樣啊 我完全沒有想到呢 10/22 05:19

cheexe: 專業推 10/22 07:33

UIYN: 很好,從解包之後就看不懂了XD 10/22 08:45

UIYN: 想用找來的工具來繁化的我果然太天真了(′・ω・`) 10/22 08:45

leo255112: 看不懂…我念化學的QQ 10/22 09:35

ToddHo: 超強的!感謝分享,再仔細研究一下~ 10/22 10:27

fly40314: 快推,不然別人以為我們看不懂 10/22 11:15

spfy: 手動做語系的難度要看當初底層設計的時候有沒有考慮到這點 10/22 11:17

spfy: 有些就是希望其他人來做別的語系 就直接把語言弄整語系包了 10/22 11:19

kenlin96: 嗯嗯我也這麼覺得 10/22 12:39

a840901: 先推,不然別人以為我看不懂 10/22 12:44

t95912: 看起來就很複雜啊XD 10/22 14:17

jiasel: 用心推 雖然我看不懂QQ 10/22 15:33

vion321: 請資工的大大寫程式幫忙跑? 不然一個一個用好拼的FU XD 10/22 18:37

Agreya: 用心推 10/22 23:07

cloudin: 恩恩 跟我想得一樣 10/23 08:23

dsct: 老實不懂推… 10/23 10:14

s31364663: 不明覺厲加一 10/23 11:22

germun: 簡單講就是要重新造字的意思 因為作者起初沒想過要多語言 10/23 11:42

germun: 所以不像大多數的多語言遊戲直接把文本編碼替換掉那麼簡單 10/23 11:43

您可能感興趣