JavaPro

          On the Java Road
          隨筆 - 26, 文章 - 0, 評(píng)論 - 63, 引用 - 0
          數(shù)據(jù)加載中……

          【深度研究】暗黑2字體制作修改詳細(xì)教程 + 字體制作套裝工具下載

          很多朋友都有自己修改D2字體的想法。在此之前,熟悉D2MOD的朋友大概對(duì)游戲的各個(gè)方面都改過(guò)了,但唯獨(dú)字體這塊大家恐怕未敢接觸,其主要原因就是字體的修改過(guò)于煩瑣。今天我們講一下在一些工具軟件的幫助下簡(jiǎn)化修改過(guò)程,且看下面的具體說(shuō)明。

          字體說(shuō)明
          對(duì)于現(xiàn)在的游戲而言,一般大都是調(diào)用特定的或系統(tǒng)的字體文件來(lái)顯示字符文字。然而D2卻不太一樣,它的字體文件非常特殊,是專用的,本來(lái)D2的英文版字體是非常另類又非常漂亮的,但字體大且發(fā)虛,屏幕顯示比較亂。而奧美的中文版所制作的字體又不堪入目,所以現(xiàn)今大都采用臺(tái)灣松崗的字體以及2years制作的字體;一直以來(lái)都有不少朋友想換換字體,但不了解的人很難去更改游戲的字體,原因是游戲采用幀包文件(DC6)與碼表文件(TBL)相映射的形式來(lái)顯示文字,這給修改帶來(lái)很大困難,下面來(lái)簡(jiǎn)單說(shuō)明一下上述兩種文件的數(shù)據(jù)結(jié)構(gòu):

          幀包文件(DC6):
          大家應(yīng)該接觸得比較多,它是若干幅尺寸大小各異或相同的圖像幀按特定的數(shù)據(jù)結(jié)構(gòu)打包在一起的壓縮文件。此類文件在游戲中被廣泛的使用,具體到字體來(lái)說(shuō),此種文件就是把游戲中會(huì)出現(xiàn)的所有各不相同的字符文字,以每字符一圖像幀并按一定的順序打包在一個(gè)文件中。文件名一般是"fontX.dc6"(X代表其它字符),英文版的所有這些文件中都包含著256幅圖像幀,分別用來(lái)顯示256個(gè)不同的字符或文字;而對(duì)于漢字來(lái)說(shuō),要包含多少幅圖像幀,就不好說(shuō)了,漢字大多了,恐怕誰(shuí)也說(shuō)不清漢字的具體個(gè)數(shù),但一般常用的也還是GB2312字符集,也就是6763個(gè)漢字,其它的要用再加吧。

          碼表文件(TBL):
          這可不是UI文件夾里的TBL文件哦,是FONT文件夾里TBL文件,雖然都是TBL的擴(kuò)展名,但數(shù)據(jù)結(jié)構(gòu)完全不一樣,前者已有幾個(gè)專用的編輯工具,而后者還沒(méi)有呢。下面是碼表文件的一般結(jié)構(gòu)形式:

          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字節(jié)是文件頭,是不變的;
          byte9 - byte10 = 碼表中包含的字符個(gè)總數(shù),“A0 1D”就表示碼表包含7584個(gè)字符;
          byte11 = 字符的行間距;注意:行間距一定要等于或大于相應(yīng)的圖像幀上的顯示的字體的高度,具體說(shuō),若圖像幀上顯示的字體的高度是12,那么行間距的取值是等于或大于12,否則到了游戲中,分行顯示的文本就會(huì)變成一行疊加顯示,什么效果?自己改一下該值試試吧!
          byte12 = 未知作用,但通常取值為(十進(jìn)制值)0、1、8、9、12、20;
          接下來(lái)就是碼表的具體內(nèi)容信息,每14字節(jié)為一段:
          byte1 - byte2 = 字符的Unicode編碼,“20 00”就是半角的空格;注意:Unicode編碼是指“Unicode little endian”的編碼形式,就是通常說(shuō)的“小尾”編碼,不是“Unicode big endian”,也不是“UTF-8”。
          byte3 = 00
          byte4 = 字符的寬度
          byte5 = 字符的高度
          byte6 = 未知作用,但通常取值為(十進(jìn)制值)0或1;
          byte7 = 00
          byte8 = 00
          byte9 - byte10 = 字符的編號(hào),與幀包文件中的圖像幀排列相對(duì)應(yīng),編號(hào)從0開(kāi)始;
          byte11 = 00
          byte12 = 00
          byte13 = 00
          byte14 = 00
          以上14字節(jié)就是第一個(gè)字符的具體碼表信息,其它字符的碼表信息也如上述格式排列存儲(chǔ)。
          因此,幀包文件與碼表文件就以這樣的方式關(guān)聯(lián)起來(lái),字符與圖像幀是按順序一一對(duì)應(yīng)的,任一文件出現(xiàn)錯(cuò)誤,都無(wú)法正常進(jìn)行游戲。

          字體修改
          有了以上的基本資料,我們就可以對(duì)字體進(jìn)行修改了。要想修改,首先當(dāng)然要有工具了,但相應(yīng)現(xiàn)成的工具恐怕只有幀包文件的編輯修改工具,而其它工具想必大家就找不到了,這里給大家提供幾個(gè)花姐制作的工具,工具不多,但很受用了。

          相關(guān)主要工具:
          DC6 Creator(幀包文件編輯修改工具,可以對(duì)圖像幀進(jìn)行導(dǎo)入導(dǎo)出,創(chuàng)建全新的幀包文件,這里我們主要使用它的「INI→DC6」的「批量導(dǎo)入圖像幀」功能。)
          ExportPreviewImage(預(yù)覽圖像創(chuàng)建工具,用于創(chuàng)建一個(gè)例圖,來(lái)獲得第一手的圖像參數(shù)信息。)
          ExportCharactersImage(字符圖像批量創(chuàng)建工具,用于批量創(chuàng)建所需字符圖像。)
          ImportCharactersTBL(碼表文件創(chuàng)建工具,用于創(chuàng)建相應(yīng)的碼表文件。)
          ImportCharactersINI(圖像批量導(dǎo)入配置文件創(chuàng)建工具,用于創(chuàng)建一分符合用于DC6 Creator工具批量導(dǎo)入圖像幀的INI文件及目錄結(jié)構(gòu),以配合進(jìn)行批量導(dǎo)入并最終生成幀包文件。)
          ExportCharactersTBL(碼表信息導(dǎo)出工具,用于將碼表的基本資料導(dǎo)出到文本文件中,主要是輔助參考之用。)

          其它輔助工具:
          EditPlus
          EmEditor
          WinHex
          ……等等。

          在主要工具中,除了DC6 Creator其余五個(gè)是用java編寫(xiě)的,所以大家使用前請(qǐng)到SUN公司的主頁(yè)http://www.sun.com/下載安裝jre1.5.0.12(或更高版)運(yùn)行環(huán)境,否則有可能無(wú)法正常運(yùn)行程序。

          操作說(shuō)明:
          先確定要?jiǎng)?chuàng)建那個(gè)字體文件,比如我們要?jiǎng)?chuàng)建新的「font16」字體,那么我們只需要?jiǎng)?chuàng)建「font16.dc6」和「font16.tbl」這兩個(gè)文件就行了。
          「font16」字體是游戲中的主要調(diào)用字體,主要用于顯示人物屬性值、物品屬性、技能說(shuō)明等等的窗口寫(xiě)屏信息,因此用途最廣泛;
          「font16」字體是黑底白字,大小一般是12,字符圖像尺寸一般是12(寬)×12(高),最好不要超過(guò)14,不然在游戲中顯示的字符就會(huì)變得很大,畢竟游戲的最高分辨率只有800×600,因此特別要主意;

          ⒈用預(yù)覽圖像創(chuàng)建工具生成某個(gè)字符的圖像看看,執(zhí)行"預(yù)覽圖像創(chuàng)建工具.bat"運(yùn)行工具;
          按提示輸入一個(gè)字符,如字母「g」;
          「字體名稱」輸入字符欲采用的顯示字體的具體名稱,如「微軟雅黑」;
          「字體字形(0[常規(guī)],1[粗體],2[斜體],3[粗斜體])」輸入對(duì)應(yīng)的數(shù)字,如「0」;
          「字體大小」輸入具體的大小值,如「12」;
          「字體顏色- R值(0-255)」、「字體顏色- G值(0-255)」、「字體顏色- B值(0-255)」分別按RGB的色域輸入色值,如字體是白色的,則分別輸入「255」、「255」、「255」;
          「圖像寬度」適當(dāng)輸入,如「12」;
          「圖像高度」適當(dāng)輸入,如「12」;
          「圖像背景色- R值(0-255)」、「圖像背景色- G值(0-255)」、「圖像背景色- B值(0-255)」亦如前面一樣輸入,如黑色是「0」、「0」、「0」;
          「圖像文件類型(JPG,PNG,BMP,GIF)」輸入括號(hào)中的四種類型名稱之一,如「bmp」;
          「預(yù)覽文件輸出路徑與文件名」按實(shí)際輸入,如「d:\tmp.bmp」;
          「X偏移量」是以圖像左上角為原點(diǎn),取值從0開(kāi)始,左偏移為負(fù)值,右偏移為正值,如「0」;
          「Y偏移量」是以圖像左上角為原點(diǎn),取值從0開(kāi)始,從輸出字符實(shí)際尺寸:8(寬)×15(高)來(lái)看,字符的高度顯示高于圖像的高度,因此我們輸入「9」;
          全部輸入數(shù)據(jù)后,字符的圖像文件就會(huì)生成了,快到其輸出目錄看看是什么樣吧。 X和Y的偏移值可能要多試幾次才可獲得適當(dāng)?shù)膱D像,因此請(qǐng)記下這兩個(gè)重要的數(shù)值,接下來(lái)要用到的。

          ⒉用字符圖像批量創(chuàng)建工具按要求一次性生成所有需要的字符的圖像文件,執(zhí)行"字符圖像批量創(chuàng)建工具.bat"運(yùn)行工具;
          「字符列表(txt)目錄與文件名」按實(shí)際路徑輸入字符列表文件的名稱,這個(gè)「字符列表」文件是一份包含了所有的需要用到的字符,是以Unicode編碼保存的文本文件,每個(gè)字符占一行,隨工具一起我提供了一份字符列表文件樣板"mb.txt",該文件包含了GB2312的6763個(gè)漢字字符及821個(gè)其它字符,共7584個(gè)字符,合7585行(注意:行數(shù)一定要比字符數(shù)多1!)。比如這里輸入「d:\mb.txt」;
          「圖像文件輸出目錄」輸入這些圖像文件的輸入文件夾路徑,如果文件夾不存在會(huì)自動(dòng)新建,如輸入「d:\00」;
          「圖像文件類型(JPG,PNG,BMP,GIF)」這里雖然可以生成四種格式的圖片,但DC6Creator只支持256色的BMP、GIF、JPG、PCX、TIF五種格式,而我寫(xiě)的程式雖然可輸出JPG文件,但不是256色的,所以你只有兩種格式可選了,如輸入「bmp」;
          其它按實(shí)際輸入即可,完成后就能獲得所需的字符圖像文件和一份「字符列表文件名_tbl.txt」的文本文件,例如「mb_tbl.txt」,這份文件包含了所有的具體字符及其按字體大小輸出的實(shí)際的寬度值和高度值,此文件稍后也要用到。

          ⒊用碼表文件創(chuàng)建工具創(chuàng)建新的碼表文件,執(zhí)行"碼表文件創(chuàng)建工具.bat"運(yùn)行工具;
          「標(biāo)準(zhǔn)字符表文件(txt)路徑與文件名」這里輸入的就是上面所說(shuō)的新生成的那個(gè)「字符列表文件名_tbl.txt」文件的具體路徑名稱,但在此之前要對(duì)該文件進(jìn)行修改,用文本編輯工具將文件里的第三列數(shù)值改成輸出圖片的實(shí)際高度值,這個(gè)數(shù)值一般都大于實(shí)際高度值,因此要更改后再使用。如輸入「d:\mb_tbl.txt」;
          「碼表文件(tbl)輸出路徑與文件名」按實(shí)際輸入,如輸入「d:\font16.tbl」;
          「字符行間距」按實(shí)際輸入,如輸入「12」;
          接著隨便輸入剩余的兩個(gè)未知數(shù)值,即可完成碼表文件的創(chuàng)建。

          ⒋用圖像批量導(dǎo)入配置文件創(chuàng)建工具創(chuàng)建一份INI文件,執(zhí)行"圖像批量導(dǎo)入配置文件創(chuàng)建工具.bat"運(yùn)行工具;
          「配置設(shè)置目錄」輸入一個(gè)目錄路徑名,如輸入「d:\」;
          「DC6文件名稱」輸入要具體創(chuàng)建的DC6文件名稱,如輸入「font16.dc6」;
          「圖像文件總數(shù)」按實(shí)際輸入,如輸入「7584」;
          「圖像文件類型(JPG,PNG,BMP,GIF)」按實(shí)際輸入,如輸入「bmp」;
          「圖像寬度」、「圖像高度」也按實(shí)際輸入即可,全部完成后,在相應(yīng)的目錄下就會(huì)創(chuàng)建一個(gè)「DC6文件名_圖像文件類型」這樣的文件夾,具體到這個(gè)例子,我們會(huì)在D盤下找到「font16_bmp」的文件夾,里面有一個(gè)「font16_bmp.ini」文件和一個(gè)「00」文件夾,這樣的目錄結(jié)構(gòu)與用DC6Creator工具全部導(dǎo)出DC6文件后的目錄及文件結(jié)構(gòu)完全一樣,再把之前生成的所有字符圖像文件全部移到此目錄中的「00」文件夾里,就萬(wàn)事俱備了。

          ⒌用DC6 Creator工具將所有字符圖像文件導(dǎo)入并生成新的幀包文件,在此操作前提配CPU和Memory性能不高的朋友,最好先重啟系統(tǒng)再進(jìn)行操作;
          運(yùn)行DC6Creator工具,點(diǎn)擊「INI->DC6」按鈕,選擇先前創(chuàng)建好的INI文件,之后就請(qǐng)大家關(guān)閉顯示器,到客廳看看電視或聽(tīng)聽(tīng)音樂(lè)吧,原因是這個(gè)過(guò)程要等上一段時(shí)間,高性能的計(jì)算機(jī)速度會(huì)快些;要一次性導(dǎo)入7584個(gè)圖像文件,對(duì)整機(jī)的運(yùn)算性能有很高的要求。
          總之,等全部完成導(dǎo)入后,程序顯示的畫(huà)面就會(huì)恢復(fù)正常,這時(shí)最重要的是趕快按下「Save」按鈕,輸入一個(gè)文件名保存文件,如「font16」,沒(méi)擴(kuò)展名也沒(méi)關(guān)系;不然突然斷電你就倒霉了!

          ⒍最后當(dāng)然是測(cè)試一下修改效果了,將新創(chuàng)建的幀包文件和碼表文件,如「font16.dc6」和「font16.tbl」,復(fù)制到游戲安裝目錄下的data\local\font\chi文件夾中,替換原有的文件(請(qǐng)注意備份原文件!),進(jìn)入游戲看看效果如何。

          附各字體文件對(duì)應(yīng)的顯示內(nèi)容:
          font16:部分人物浮動(dòng)屬性值、所有物品浮動(dòng)屬性、技能樹(shù)信息和按鈕浮動(dòng)信息等;
          font24:游戲界面部分的副標(biāo)題;
          font30:游戲界面部分的大標(biāo)題;
          font42:游戲存檔標(biāo)題人物名稱;
          font6:部分人物屬性名、雇用兵姓名、召喚物名稱和地圖標(biāo)示名稱等;
          font8:部分人物屬性值、部分人物屬性浮動(dòng)說(shuō)明;
          fontexocet10:游戲界面大按鈕;
          fontformal10:游戲制作人員名單、技能樹(shù)的技能等級(jí);
          fontformal11:任務(wù)窗口的任務(wù)名稱及說(shuō)明;
          fontformal12:游戲版權(quán)說(shuō)明;
          fontingamechat:游戲的消息記錄;
          fontridiculous:游戲界面小按鈕。

          Diablo II 字體制作套裝下載:(有最新制作的漂亮的Comic Sans MS字體)
          http://amooo.ys168.com

          posted on 2008-06-15 08:34 Jason Du 閱讀(7805) 評(píng)論(5)  編輯  收藏 所屬分類: 程序人生

          評(píng)論

          # re: 【深度研究】暗黑2字體制作修改詳細(xì)教程 + 字體制作套裝工具下載[未登錄](méi)  回復(fù)  更多評(píng)論   

          2008-11-11 19:10 | 小剛

          # re: 【深度研究】暗黑2字體制作修改詳細(xì)教程 + 字體制作套裝工具下載  回復(fù)  更多評(píng)論   

          能做個(gè)雅黑字體的么~就是這種
          http://patch.ali213.net/showpatch/5490.html
          的~謝謝
          2009-01-15 23:37 | 暗黑迷

          # re: 【深度研究】暗黑2字體制作修改詳細(xì)教程 + 字體制作套裝工具下載  回復(fù)  更多評(píng)論   

          Javapro 大蝦 我也是個(gè)暗黑迷
          我看了你在impk寫(xiě)的 暗黑字體制作補(bǔ)丁

          我很想學(xué)習(xí)下,但是上面的工具鏈接都失效了

          1. 能給我列個(gè)工具列表嗎、?

          2. 我想制作個(gè)109變量補(bǔ)丁,但是我現(xiàn)在還沒(méi)概念該修改那些文件,該怎么制作
          2009-02-14 23:27 | woniu

          # re: 【深度研究】暗黑2字體制作修改詳細(xì)教程 + 字體制作套裝工具下載  回復(fù)  更多評(píng)論   

          mm1983abc@gmail.com
          能發(fā)到我郵箱嗎?
          2009-02-14 23:29 | woniu

          # re: 【深度研究】暗黑2字體制作修改詳細(xì)教程 + 字體制作套裝工具下載  回復(fù)  更多評(píng)論   

          謝謝lz

          但是更換字體后怎么中文都變成問(wèn)號(hào)了?什么原因?如何解決

          2009-03-16 22:09 | 7935
          主站蜘蛛池模板: 秀山| 新宁县| 九龙县| 高平市| 镇宁| 奉贤区| 乌拉特前旗| 朝阳县| 历史| 镇沅| 瓮安县| 花莲县| 合作市| 读书| 康乐县| 富蕴县| 舟曲县| 天门市| 通许县| 陵川县| 定安县| 嘉善县| 专栏| 梓潼县| 新河县| 南宫市| 从化市| 邵阳市| 周至县| 左贡县| 阿勒泰市| 绥江县| 南安市| 罗定市| 麻栗坡县| 沽源县| 永年县| 长治县| 石林| 澄城县| 榕江县|