青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

李錦俊(mybios)的blog

游戲開發 C++ Cocos2d-x OpenGL DirectX 數學 計算機圖形學 SQL Server

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  86 Posts :: 0 Stories :: 370 Comments :: 0 Trackbacks

公告

QQ:30743734
EMain:mybios@qq.com

常用鏈接

留言簿(16)

我參與的團隊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 373340
  • 排名 - 67

最新評論

閱讀排行榜

評論排行榜

  我們在市場上買了一個游戲,很少會輕易的看到游戲目錄里一堆的BMP,PCX資源圖片。難道他們不使用BMP之類的文件作為圖片資源嗎?非也,其實他們把這些資源圖片進行了打包、壓縮。

  舉幾個游戲的例子吧,大名鼎鼎westernwood的《紅色警戒》的.mix文件就是一種壓縮包,里面包含了一堆堆的游戲圖片,聲音等資源。還有blizzard的《星際爭霸》、《暗黑破壞神》、《魔獸系列》的.mpq文件也是一種壓縮包,里面包含了各種游戲使用的資源。幾乎所有的游戲都用到了壓縮包。

  那么為什么要使用這種壓縮包呢?原因很多,首先就是壓縮,游戲中使用的圖片等資源都是極其適合壓縮的,這樣就減小了游戲的體積。如果把《紅色警戒2》的資源全部解開相信會超過3G。其次壓縮后文件體積的減小會帶來讀盤速度的顯著提高。通常一個2M的BMP文件可以被壓縮到700K以內,讀取一個2M的文件和讀取一個700K的文件然后再內存中解壓的速度對比是可想而知的。最后,將大量的資源文件打包能使得游戲目錄清晰,而不是一堆堆的文件夾和文件,這樣能減少磁盤空間的浪費,也減少了磁盤碎片。

說了那么多壓縮包的好處,我們在游戲中到底怎么使用壓縮包呢?
  1.我們需要定義我們自己的壓縮包文件存儲格式。
  2.根據1我們寫一個壓縮工具來對游戲中的資源進行壓縮存儲。
  3.根據1我們寫一個解壓縮的庫以便我們游戲中使用。
  4.在游戲的代碼中,我們調用這個庫,來讀取我們包中的文件。

  看到這兒,似乎我們需要做的工作還是很多、很復雜的。要定義一個文件結構,又要寫壓縮工具、還要寫解壓庫。而我們真正使用確實在最后一步,而且是簡單的調用一個庫而已。似乎有點得不償失了。好了,我們現在要找一條捷徑來完成我們游戲使用壓縮包的問題,對于1和2來說其實很好辦,現成的就有很多壓縮軟件可以生成壓縮包,winzip,winrar,winace ……都是非常好的壓縮工具,這樣我們不用定義壓縮包的存儲格式,也不用編寫壓縮工具。不費任何力氣就完成了1和2兩步。那么第3步又如何呢?文件存儲格式不是我們設計的,我們無法知道文件是如何組織、如何壓縮的,跟不用說知道如何壓縮了。不過上網搜索一下,我們還是能得到一些winzip,winrar格式的解壓縮源代碼的。不過研究起這些代碼來又是件痛苦的事情,更何況還要用在自己的游戲里。

  到這里,我們又遇到了嚴峻的考驗,現在我向大家隆重介紹我們的壓軸法寶:
MDFile文件系統 。那么,MDFile是個什么東東呢?MDFile是一個可擴展的文件操作庫,可以用最最簡單的方法實現對任意壓縮包格式內文件的讀取。那么到此,我們的3和4也都可以實現了。下面我們就以MDFile為例來說以下怎么使用它來讀取我們包中的文件。

  首先我們先獲取我們需要的
MDFile 庫,到中國游戲開發技術咨詢網上下載 MDFile庫 ,點擊本站原創,找到 MDFile 并下載下來。

  將庫放到你的工程中,并設置好,這里我就不詳細說如何設置一個外部的庫了,如果不會的話你可以參考相關的書。好了,下面我們就開始我們的代碼了,這里以讀取test.zip中的一個test.txt文件為例:

我們在程序中添加一個LoadFile的函數來載入一個包里的文件。
bool LoadFile(char* filename,char* packfile)
{
??? BYTE* buf=NULL; // 用來存放讀取出的文件的內容
???
CMD_File cmdfile(“ZipExt.dll”); // 我們先生成一個實例
???
cmdfile.Open(“test.zip”,true,true); // 打開test.zip這個壓縮包
???
cmdfile.Locate(“test.txt”); // 定位到test.txt文件
???
buf=new BYTE[cmdfile.GetLength()];// 根據test.txt的大小分配內存
???
cmdfile.Read(buf); // 讀取文件到我們的內存中
???
// 至此,buf中已經存儲了我們需要的test.zip中的test.txt文件的內容了
???
// 是不是很簡單呢?
}


細心的朋友可能已經注意到了,
CMD_File cmdfile(“ZipExt.dll”);

  這個初始化是什么意思呢?就是用ZipExt.dll這個擴展庫來打開我們的test.zip文件,因為MDFile本身并不支持Zip格式,他支持內部的一種叫epk的壓縮包格式,為了讓他支持Zip你必須獲得ZipExt.dll這個擴展庫,同樣的如果你需要Rar支持你需要獲得RarExt.dll這個擴展庫。好在我們剛下載的MDFile包中已經包括了一個ZipExt.dll(在Sample\Sample4\Release中),也好在@J--S Studio在不停的開發MDFile的擴展庫,以便我們能夠使用更多的壓縮包格式。

  需要一提的是:使用這些現成的壓縮軟件制作文件包雖然簡單,但是也有很多問題,例如安全性,有時候我們不想被其他人看到游戲中用到的資源,這時如果我們用的是Zip格式,那就可能輕易的被別人解開并修改了。這時,其實使用MDFile內部的epk格式就比較好,他使用動態加密技術,同時epk格式不被其他壓縮軟件支持,另外他的其他一些特性都是非常不錯的。同時為了支持epk格式,他還提供了一個JSFilePacker程序用來打包需要的文件并存成epk格式。所有的這些都可以在我們下載的MDFile中得到。 ? (JSFilePacker在tools下)


  立即下載MDFile庫
posted on 2006-11-19 08:16 李錦俊(mybios) 閱讀(3715) 評論(0)  編輯 收藏 引用 所屬分類: 資源壓縮打包
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线高清| 国产一区二区视频在线观看| 亚洲二区在线视频| 欧美一站二站| 久久久精品性| 久久视频精品在线| 久久久国际精品| 欧美风情在线| 中文精品视频一区二区在线观看| 日韩午夜激情av| 一区二区欧美精品| 亚洲在线播放电影| 久久一区二区三区四区| 欧美精品免费在线观看| 国产精自产拍久久久久久蜜 | 一区二区三区高清视频在线观看| 欧美激情bt| 妖精视频成人观看www| 午夜精品福利一区二区蜜股av| 亚洲欧美日韩电影| 免费成人在线视频网站| 国产精品vvv| 在线日本欧美| 欧美一区二区视频免费观看| 亚洲国产精品悠悠久久琪琪| 亚洲午夜免费福利视频| 欧美成人精品激情在线观看 | 9色国产精品| 久久婷婷麻豆| 国模私拍一区二区三区| 性欧美videos另类喷潮| 一区二区三区四区蜜桃| 欧美片在线观看| av成人黄色| 亚洲免费观看高清完整版在线观看熊| 久久精品一区二区三区不卡牛牛 | 欧美久久成人| 最新亚洲激情| 亚洲欧洲偷拍精品| 欧美精品在线观看| 亚洲图片欧洲图片av| 亚洲欧洲一区二区三区| 欧美日韩国产精品一区二区亚洲| 亚洲欧洲午夜| 日韩视频永久免费观看| 亚洲激情视频网| 欧美成人精品影院| 亚洲一区二区高清| 久久丁香综合五月国产三级网站| 韩日成人在线| 亚洲破处大片| 国内成人精品视频| 亚洲国产精品一区| 国产精品久久久久久av福利软件 | 性色av一区二区三区在线观看| 亚洲一区二区三区涩| 亚洲国语精品自产拍在线观看| 日韩视频二区| 最新69国产成人精品视频免费| 一区二区三区久久网| 日韩网站在线观看| 久久久久久亚洲精品不卡4k岛国| 亚洲视频观看| 久久人人爽人人爽| 久久久高清一区二区三区| 欧美日韩午夜精品| 亚洲国产日韩精品| 在线看成人片| 久久亚洲高清| 美腿丝袜亚洲色图| 亚洲第一网站| 久久综合福利| 欧美激情精品久久久久久大尺度 | 99精品国产福利在线观看免费| 在线观看视频欧美| 美女视频黄免费的久久| 国产区欧美区日韩区| 亚洲一级二级| 久久福利电影| 国产色产综合色产在线视频| 欧美亚洲免费在线| 久久综合色88| 亚洲国产一成人久久精品| 久久天天躁狠狠躁夜夜av| 毛片一区二区| 99精品欧美| 国产精品久久久一本精品| 午夜精品久久久久久久久| 另类激情亚洲| 日韩亚洲精品在线| 国产午夜精品视频免费不卡69堂| 欧美中文字幕在线观看| 欧美激情精品| 欧美一区二区三区视频免费| 狠狠色丁香婷婷综合| 欧美日韩视频在线一区二区| 欧美一区二视频| 亚洲麻豆av| 亚洲第一精品在线| 久久亚洲综合网| 亚洲一区二区三区激情| 亚洲国产精品高清久久久| 国产女人18毛片水18精品| 欧美国产高清| 欧美暴力喷水在线| 久久天天躁狠狠躁夜夜av| 午夜精品福利一区二区三区av| 亚洲日韩欧美一区二区在线| 久久尤物电影视频在线观看| 亚洲综合好骚| 亚洲欧美日韩在线高清直播| 一本久道久久综合中文字幕| 在线观看中文字幕不卡| 国内精品美女在线观看| 国产主播一区二区三区| 亚洲男女自偷自拍图片另类| 亚洲激情在线播放| 亚洲精品视频在线观看免费| 亚洲第一在线视频| 亚洲电影免费| 一本一本久久| 午夜国产精品影院在线观看| 午夜影院日韩| 久久精品夜色噜噜亚洲a∨| 久久视频国产精品免费视频在线| 欧美伊久线香蕉线新在线| 老司机午夜精品| 欧美日韩亚洲高清一区二区| 欧美日韩中文| 韩国一区二区三区在线观看| 亚洲三级免费电影| 亚洲一区二区3| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美激情1区2区3区| 中文一区二区在线观看| 久久夜色精品国产欧美乱极品| 欧美精品在线免费观看| 国产精品素人视频| 亚洲精品国产精品国自产在线| 亚洲尤物视频网| 亚洲国产影院| 久久高清一区| 国产精品欧美精品| 一本久久综合亚洲鲁鲁五月天| 久久国产一区二区| 在线亚洲欧美专区二区| 免费不卡中文字幕视频| 玉米视频成人免费看| 久久精品99| 亚洲欧美自拍偷拍| 国产美女精品免费电影| 亚洲无限av看| 一区二区毛片| 国产精品盗摄一区二区三区| 亚洲美女av电影| 亚洲精选久久| 欧美视频在线一区| 亚洲男人影院| 一区二区三区高清| 亚洲国产天堂网精品网站| 久久精品2019中文字幕| 黑人一区二区| 女人天堂亚洲aⅴ在线观看| 久久精视频免费在线久久完整在线看| 国产日韩欧美在线视频观看| 久久婷婷丁香| 欧美激情亚洲国产| 欧美一区二区视频97| 麻豆久久婷婷| 香港久久久电影| 欧美va亚洲va国产综合| 亚洲一区二区三区视频播放| 欧美亚洲色图校园春色| 91久久亚洲| 久久全球大尺度高清视频| av成人免费观看| 久久久久久久综合日本| 一区二区毛片| 欧美国产成人在线| 久久综合伊人| 国产精品久久久亚洲一区| 亚洲电影在线观看| 亚洲高清一区二区三区| 欧美一区二区日韩| 亚洲男女自偷自拍图片另类| 欧美激情第9页| 亚洲国产精品嫩草影院| 韩国av一区二区三区四区| 亚洲免费影院| 欧美主播一区二区三区美女 久久精品人| 久久精品亚洲国产奇米99| 欧美一区二区三区男人的天堂| 欧美女同在线视频| 亚洲日本在线视频观看| 亚洲美女性视频| 欧美日韩国产一区二区| 99www免费人成精品| 亚洲欧美综合另类中字| 国产农村妇女毛片精品久久麻豆| 在线视频精品一区|