文字遊戲的漢化

  這篇文章的定位有點困難,大約是針對有點RE能力,看過些教程,又沒有實際搞過漢化的人。

 

  裏面沒啥技術性的東西,都是些小經驗。

 

  -----------------------------------------------------------------------------------------------------------

 

  1)哪些部分要漢化

      大約有4個部分,人名、文本、選擇項和章節名。各個遊戲不同,並不一定都有。人名和文本比較顯而易見,選擇項一般來說不會出現在序章中,有時會被忽略(而且選擇這邊很容易出問題,所以第一次至少要測試到第一個選擇之後)。章節名一般在存檔的時候出現。

 

      什麼不需要漢化的:圖片名、音效名、背景音樂名,CV名,動畫名、腳本名,效果名等等。不過也不絕對,自行觀察。

 

  2)程序部分的修改

      程序部分主要改3個地方,CreateFont的Charset,SJIS的邊界檢查,如函數(IsDBCS),EnumFontFamilies的Charset。

 

      還有就是改系統菜單,對話框等,一般來說到資源裏面去改,用ResScope即可。

 

  3)文本導出的格式

      我還是推薦Agemo格式,配合AgemoEditor使用。藍山魔導之類的軟件可以用來做測試版本,不要用來做整個遊戲的漢化。

 

      這裏講點編碼的事情,首先要搞清楚Unicode和ANSI的區別,API後面W和A的區別。

 

      把SJIS轉成GB可以使用碼錶,也可以使用API函數(MultiByteToWideChar, WideCharToMultiByte)。用API的話有個麻煩就是發生問題察覺不到,比如1byte的A5,日文環境中是·,但是轉成Unicode再轉GB,最後肯定變成?。還有就是Unicode包容SJIS,但是GB並不包容SJIS,比如♪ (音符)。轉到GB後就沒了。

 

     如果是PC平臺,源程序又不是使用Unicode,那麼還是轉成GB吧,那些GB中不存在的編碼翻譯看到會刪除掉。如果提供給翻譯的是Unicode,那麼這些符號還是會保存下來,再轉成GB導入之後,就等着看??吧。

 

     如果不是PC平臺,或者是需要製作字庫的情況,那還不如用Unicode。

 

     最後就是要善於使用比較軟件,BeyondeCompare可以比較SJIS-GB,Unicode-GB,非常厲害。

 

    4)編程方面

        注意unsigned和signed的區別。

char ch = 0xff;

printf("%d", ch == 0xff);

 

       上面是老代碼了,不過一直會和這些東西打交道,所以要注意。

 

    5)關於封包

 

       如果包本來不大,而且裏面的東西基本上都改動了,比如腳本文件,那麼就把各個文件打成包直接給出好了。但如果包很大,而修改的只是少數,比如圖片,這個時候就要有些考慮。如果修改之後的圖比原來的小,那麼原位塞入。如果比原來的圖大,那麼就放到文件最後,原來的空間就放在那裏不要動。看似是浪費了原來的空間,但保持了這個包大多數地方沒有變化,最後用Patch軟件比較原始包和修正後的包就可以生成補丁程序了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章