很多朋友都有自己修改D2字體的想法。在此之前,熟悉D2MOD的朋友大概對游戲的各個方面都改過了,但唯獨字體這塊大家恐怕未敢接觸,其主要原因就是字體的修改過于煩瑣。今天我們講一下在一些工具軟件的幫助下簡化修改過程,且看下面的具體說明。
字體說明
對于現在的游戲而言,一般大都是調用特定的或系統的字體文件來顯示字符文字。然而D2卻不太一樣,它的字體文件非常特殊,是專用的,本來D2的英文版字體是非常另類又非常漂亮的,但字體大且發虛,屏幕顯示比較亂。而奧美的中文版所制作的字體又不堪入目,所以現今大都采用臺灣松崗的字體以及2years制作的字體;一直以來都有不少朋友想換換字體,但不了解的人很難去更改游戲的字體,原因是游戲采用幀包文件(DC6)與碼表文件(TBL)相映射的形式來顯示文字,這給修改帶來很大困難,下面來簡單說明一下上述兩種文件的數據結構:
幀包文件(DC6):
大家應該接觸得比較多,它是若干幅尺寸大小各異或相同的圖像幀按特定的數據結構打包在一起的壓縮文件。此類文件在游戲中被廣泛的使用,具體到字體來說,此種文件就是把游戲中會出現的所有各不相同的字符文字,以每字符一圖像幀并按一定的順序打包在一個文件中。文件名一般是"fontX.dc6"(X代表其它字符),英文版的所有這些文件中都包含著256幅圖像幀,分別用來顯示256個不同的字符或文字;而對于漢字來說,要包含多少幅圖像幀,就不好說了,漢字大多了,恐怕誰也說不清漢字的具體個數,但一般常用的也還是GB2312字符集,也就是6763個漢字,其它的要用再加吧。
碼表文件(TBL):
這可不是UI文件夾里的TBL文件哦,是FONT文件夾里TBL文件,雖然都是TBL的擴展名,但數據結構完全不一樣,前者已有幾個專用的編輯工具,而后者還沒有呢。下面是碼表文件的一般結構形式:
00000000→57 6F 6F 21 01 00 00 00 A0 1D 0C 00 20 00 00 03
00000010→0D 01 00 00 00 00 00 00 00 00 21 00 00 04 0D 01
00000020→00 00 01 00 00 00 00 00
byte1 - byte4 = 57 6F 6F 21
byte5 - byte8 = 01 00 00 00
以上8字節是文件頭,是不變的;
byte9 - byte10 = 碼表中包含的字符個總數,“A0 1D”就表示碼表包含7584個字符;
byte11 = 字符的行間距;注意:行間距一定要等于或大于相應的圖像幀上的顯示的字體的高度,具體說,若圖像幀上顯示的字體的高度是12,那么行間距的取值是等于或大于12,否則到了游戲中,分行顯示的文本就會變成一行疊加顯示,什么效果?自己改一下該值試試吧!
byte12 = 未知作用,但通常取值為(十進制值)0、1、8、9、12、20;
接下來就是碼表的具體內容信息,每14字節為一段:
byte1 - byte2 = 字符的Unicode編碼,“20 00”就是半角的空格;注意:Unicode編碼是指“Unicode little endian”的編碼形式,就是通常說的“小尾”編碼,不是“Unicode big endian”,也不是“UTF-8”。
byte3 = 00
byte4 = 字符的寬度
byte5 = 字符的高度
byte6 = 未知作用,但通常取值為(十進制值)0或1;
byte7 = 00
byte8 = 00
byte9 - byte10 = 字符的編號,與幀包文件中的圖像幀排列相對應,編號從0開始;
byte11 = 00
byte12 = 00
byte13 = 00
byte14 = 00
以上14字節就是第一個字符的具體碼表信息,其它字符的碼表信息也如上述格式排列存儲。
因此,幀包文件與碼表文件就以這樣的方式關聯起來,字符與圖像幀是按順序一一對應的,任一文件出現錯誤,都無法正常進行游戲。
字體修改
有了以上的基本資料,我們就可以對字體進行修改了。要想修改,首先當然要有工具了,但相應現成的工具恐怕只有幀包文件的編輯修改工具,而其它工具想必大家就找不到了,這里給大家提供幾個花姐制作的工具,工具不多,但很受用了。
相關主要工具:
DC6 Creator(幀包文件編輯修改工具,可以對圖像幀進行導入導出,創建全新的幀包文件,這里我們主要使用它的「INI→DC6」的「批量導入圖像幀」功能。)
ExportPreviewImage(預覽圖像創建工具,用于創建一個例圖,來獲得第一手的圖像參數信息。)
ExportCharactersImage(字符圖像批量創建工具,用于批量創建所需字符圖像。)
ImportCharactersTBL(碼表文件創建工具,用于創建相應的碼表文件。)
ImportCharactersINI(圖像批量導入配置文件創建工具,用于創建一分符合用于DC6 Creator工具批量導入圖像幀的INI文件及目錄結構,以配合進行批量導入并最終生成幀包文件。)
ExportCharactersTBL(碼表信息導出工具,用于將碼表的基本資料導出到文本文件中,主要是輔助參考之用。)
其它輔助工具:
EditPlus
EmEditor
WinHex
……等等。
在主要工具中,除了DC6 Creator其余五個是用java編寫的,所以大家使用前請到SUN公司的主頁http://www.sun.com/下載安裝jre1.5.0.12(或更高版)運行環境,否則有可能無法正常運行程序。
操作說明:
先確定要創建那個字體文件,比如我們要創建新的「font16」字體,那么我們只需要創建「font16.dc6」和「font16.tbl」這兩個文件就行了。
「font16」字體是游戲中的主要調用字體,主要用于顯示人物屬性值、物品屬性、技能說明等等的窗口寫屏信息,因此用途最廣泛;
「font16」字體是黑底白字,大小一般是12,字符圖像尺寸一般是12(寬)×12(高),最好不要超過14,不然在游戲中顯示的字符就會變得很大,畢竟游戲的最高分辨率只有800×600,因此特別要主意;
⒈用預覽圖像創建工具生成某個字符的圖像看看,執行"預覽圖像創建工具.bat"運行工具;
按提示輸入一個字符,如字母「g」;
「字體名稱」輸入字符欲采用的顯示字體的具體名稱,如「微軟雅黑」;
「字體字形(0[常規],1[粗體],2[斜體],3[粗斜體])」輸入對應的數字,如「0」;
「字體大小」輸入具體的大小值,如「12」;
「字體顏色- R值(0-255)」、「字體顏色- G值(0-255)」、「字體顏色- B值(0-255)」分別按RGB的色域輸入色值,如字體是白色的,則分別輸入「255」、「255」、「255」;
「圖像寬度」適當輸入,如「12」;
「圖像高度」適當輸入,如「12」;
「圖像背景色- R值(0-255)」、「圖像背景色- G值(0-255)」、「圖像背景色- B值(0-255)」亦如前面一樣輸入,如黑色是「0」、「0」、「0」;
「圖像文件類型(JPG,PNG,BMP,GIF)」輸入括號中的四種類型名稱之一,如「bmp」;
「預覽文件輸出路徑與文件名」按實際輸入,如「d:\tmp.bmp」;
「X偏移量」是以圖像左上角為原點,取值從0開始,左偏移為負值,右偏移為正值,如「0」;
「Y偏移量」是以圖像左上角為原點,取值從0開始,從輸出字符實際尺寸:8(寬)×15(高)來看,字符的高度顯示高于圖像的高度,因此我們輸入「9」;
全部輸入數據后,字符的圖像文件就會生成了,快到其輸出目錄看看是什么樣吧。 X和Y的偏移值可能要多試幾次才可獲得適當的圖像,因此請記下這兩個重要的數值,接下來要用到的。
⒉用字符圖像批量創建工具按要求一次性生成所有需要的字符的圖像文件,執行"字符圖像批量創建工具.bat"運行工具;
「字符列表(txt)目錄與文件名」按實際路徑輸入字符列表文件的名稱,這個「字符列表」文件是一份包含了所有的需要用到的字符,是以Unicode編碼保存的文本文件,每個字符占一行,隨工具一起我提供了一份字符列表文件樣板"mb.txt",該文件包含了GB2312的6763個漢字字符及821個其它字符,共7584個字符,合7585行(注意:行數一定要比字符數多1!)。比如這里輸入「d:\mb.txt」;
「圖像文件輸出目錄」輸入這些圖像文件的輸入文件夾路徑,如果文件夾不存在會自動新建,如輸入「d:\00」;
「圖像文件類型(JPG,PNG,BMP,GIF)」這里雖然可以生成四種格式的圖片,但DC6Creator只支持256色的BMP、GIF、JPG、PCX、TIF五種格式,而我寫的程式雖然可輸出JPG文件,但不是256色的,所以你只有兩種格式可選了,如輸入「bmp」;
其它按實際輸入即可,完成后就能獲得所需的字符圖像文件和一份「字符列表文件名_tbl.txt」的文本文件,例如「mb_tbl.txt」,這份文件包含了所有的具體字符及其按字體大小輸出的實際的寬度值和高度值,此文件稍后也要用到。
⒊用碼表文件創建工具創建新的碼表文件,執行"碼表文件創建工具.bat"運行工具;
「標準字符表文件(txt)路徑與文件名」這里輸入的就是上面所說的新生成的那個「字符列表文件名_tbl.txt」文件的具體路徑名稱,但在此之前要對該文件進行修改,用文本編輯工具將文件里的第三列數值改成輸出圖片的實際高度值,這個數值一般都大于實際高度值,因此要更改后再使用。如輸入「d:\mb_tbl.txt」;
「碼表文件(tbl)輸出路徑與文件名」按實際輸入,如輸入「d:\font16.tbl」;
「字符行間距」按實際輸入,如輸入「12」;
接著隨便輸入剩余的兩個未知數值,即可完成碼表文件的創建。
⒋用圖像批量導入配置文件創建工具創建一份INI文件,執行"圖像批量導入配置文件創建工具.bat"運行工具;
「配置設置目錄」輸入一個目錄路徑名,如輸入「d:\」;
「DC6文件名稱」輸入要具體創建的DC6文件名稱,如輸入「font16.dc6」;
「圖像文件總數」按實際輸入,如輸入「7584」;
「圖像文件類型(JPG,PNG,BMP,GIF)」按實際輸入,如輸入「bmp」;
「圖像寬度」、「圖像高度」也按實際輸入即可,全部完成后,在相應的目錄下就會創建一個「DC6文件名_圖像文件類型」這樣的文件夾,具體到這個例子,我們會在D盤下找到「font16_bmp」的文件夾,里面有一個「font16_bmp.ini」文件和一個「00」文件夾,這樣的目錄結構與用DC6Creator工具全部導出DC6文件后的目錄及文件結構完全一樣,再把之前生成的所有字符圖像文件全部移到此目錄中的「00」文件夾里,就萬事俱備了。
⒌用DC6 Creator工具將所有字符圖像文件導入并生成新的幀包文件,在此操作前提配CPU和Memory性能不高的朋友,最好先重啟系統再進行操作;
運行DC6Creator工具,點擊「INI->DC6」按鈕,選擇先前創建好的INI文件,之后就請大家關閉顯示器,到客廳看看電視或聽聽音樂吧,原因是這個過程要等上一段時間,高性能的計算機速度會快些;要一次性導入7584個圖像文件,對整機的運算性能有很高的要求。
總之,等全部完成導入后,程序顯示的畫面就會恢復正常,這時最重要的是趕快按下「Save」按鈕,輸入一個文件名保存文件,如「font16」,沒擴展名也沒關系;不然突然斷電你就倒霉了!
⒍最后當然是測試一下修改效果了,將新創建的幀包文件和碼表文件,如「font16.dc6」和「font16.tbl」,復制到游戲安裝目錄下的data\local\font\chi文件夾中,替換原有的文件(請注意備份原文件!),進入游戲看看效果如何。
附各字體文件對應的顯示內容:
font16:部分人物浮動屬性值、所有物品浮動屬性、技能樹信息和按鈕浮動信息等;
font24:游戲界面部分的副標題;
font30:游戲界面部分的大標題;
font42:游戲存檔標題人物名稱;
font6:部分人物屬性名、雇用兵姓名、召喚物名稱和地圖標示名稱等;
font8:部分人物屬性值、部分人物屬性浮動說明;
fontexocet10:游戲界面大按鈕;
fontformal10:游戲制作人員名單、技能樹的技能等級;
fontformal11:任務窗口的任務名稱及說明;
fontformal12:游戲版權說明;
fontingamechat:游戲的消息記錄;
fontridiculous:游戲界面小按鈕。
Diablo II 字體制作套裝下載:(有最新制作的漂亮的Comic Sans MS字體) 
http://amooo.ys168.com