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

看板Steam作者 (xpulsar)時間6年前 (2017/10/21 21:12), 6年前編輯推噓43(4309)
留言52則, 44人參與, 6年前最新討論串3/3 (看更多)
因為有些人對怎麼做簡轉繁的方法有興趣. 對於這部分沒興趣的,現在就可以<-離開了. ------------------------------------------------------- 先簡單講一下, 一開始是有打算把文本也換成繁體. 但是, 昨天卡住了, 因為我沒找出來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 ※ 編輯: xpulsar (111.248.112.188), 10/21/2017 21:13:59

10/21 21:16, 6年前 , 1F
嗯嗯嗯原來如此(?
10/21 21:16, 1F

10/21 21:16, 6年前 , 2F
看不太懂..先推
10/21 21:16, 2F

10/21 21:16, 6年前 , 3F
文組看不懂
10/21 21:16, 3F
※ 編輯: xpulsar (111.248.112.188), 10/21/2017 21:17:48

10/21 21:38, 6年前 , 4F
嗯嗯 我也是這麼想的
10/21 21:38, 4F

10/21 21:51, 6年前 , 5F
看到xnb格式解開先給推
10/21 21:51, 5F

10/21 22:35, 6年前 , 6F
先推以免被人笑說我是文組
10/21 22:35, 6F

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

10/21 22:56, 6年前 , 8F
不明覺厲!
10/21 22:56, 8F

10/21 23:28, 6年前 , 9F
NS版沒法改QQ
10/21 23:28, 9F

10/21 23:29, 6年前 , 10F
先推,但我看不懂 QQ
10/21 23:29, 10F

10/21 23:33, 6年前 , 11F
....供啥咪
10/21 23:33, 11F

10/21 23:40, 6年前 , 12F
看不懂給推
10/21 23:40, 12F

10/21 23:52, 6年前 , 13F
嗯嗯,我也這麼覺得
10/21 23:52, 13F

10/22 00:17, 6年前 , 14F
推好心
10/22 00:17, 14F

10/22 00:30, 6年前 , 15F
push
10/22 00:30, 15F

10/22 00:42, 6年前 , 16F
10/22 00:42, 16F

10/22 01:02, 6年前 , 17F
推 要不是我太忙 不然我也想弄
10/22 01:02, 17F

10/22 01:03, 6年前 , 18F
推 之前想弄Gnomoria但就是沒耐心 這篇寫得好
10/22 01:03, 18F

10/22 01:05, 6年前 , 19F
靠 好有心喔~
10/22 01:05, 19F

10/22 01:09, 6年前 , 20F
其實沒有很複雜啦 只是麻煩而已 而且不是每個遊戲都
10/22 01:09, 20F

10/22 01:09, 6年前 , 21F
可以這樣用的
10/22 01:09, 21F

10/22 01:10, 6年前 , 22F
精簡版懶人包:解包檔案→替換檔案內字體→封包檔案
10/22 01:10, 22F

10/22 01:12, 6年前 , 23F
轉頭望向簡體遊戲
10/22 01:12, 23F

10/22 01:13, 6年前 , 24F
如果把流程寫成程式應該能一次翻譯完吧?
10/22 01:13, 24F

10/22 01:15, 6年前 , 25F
每個xnb檔的格式都不一樣嗎?
10/22 01:15, 25F

10/22 01:40, 6年前 , 26F
嗯嗯 跟我想的一樣
10/22 01:40, 26F

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

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

10/22 02:53, 6年前 , 29F
推 雖然我不懂
10/22 02:53, 29F

10/22 02:55, 6年前 , 30F
有心 推
10/22 02:55, 30F

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

10/22 03:34, 6年前 , 32F
輪重新改簡為繁 不知道其中有沒有困難?
10/22 03:34, 32F

10/22 05:19, 6年前 , 33F
原來是這樣啊 我完全沒有想到呢
10/22 05:19, 33F

10/22 07:33, 6年前 , 34F
專業推
10/22 07:33, 34F

10/22 08:45, 6年前 , 35F
很好,從解包之後就看不懂了XD
10/22 08:45, 35F

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

10/22 09:35, 6年前 , 37F
看不懂…我念化學的QQ
10/22 09:35, 37F

10/22 10:27, 6年前 , 38F
超強的!感謝分享,再仔細研究一下~
10/22 10:27, 38F

10/22 11:15, 6年前 , 39F
快推,不然別人以為我們看不懂
10/22 11:15, 39F

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

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

10/22 12:39, 6年前 , 42F
嗯嗯我也這麼覺得
10/22 12:39, 42F

10/22 12:44, 6年前 , 43F
先推,不然別人以為我看不懂
10/22 12:44, 43F

10/22 14:17, 6年前 , 44F
看起來就很複雜啊XD
10/22 14:17, 44F

10/22 15:33, 6年前 , 45F
用心推 雖然我看不懂QQ
10/22 15:33, 45F

10/22 18:37, 6年前 , 46F
請資工的大大寫程式幫忙跑? 不然一個一個用好拼的FU XD
10/22 18:37, 46F

10/22 23:07, 6年前 , 47F
用心推
10/22 23:07, 47F

10/23 08:23, 6年前 , 48F
恩恩 跟我想得一樣
10/23 08:23, 48F

10/23 10:14, 6年前 , 49F
老實不懂推…
10/23 10:14, 49F

10/23 11:22, 6年前 , 50F
不明覺厲加一
10/23 11:22, 50F

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

10/23 11:43, 6年前 , 52F
所以不像大多數的多語言遊戲直接把文本編碼替換掉那麼簡單
10/23 11:43, 52F
文章代碼(AID): #1PwqVIPf (Steam)
文章代碼(AID): #1PwqVIPf (Steam)