• <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>

            李錦俊(mybios)的blog

            游戲開發(fā) C++ Cocos2d-x OpenGL DirectX 數(shù)學(xué) 計(jì)算機(jī)圖形學(xué) SQL Server

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

            公告

            QQ:30743734
            EMain:mybios@qq.com

            常用鏈接

            留言簿(16)

            我參與的團(tuán)隊(duì)

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 370226
            • 排名 - 67

            最新評論

            閱讀排行榜

            評論排行榜

              本人正在準(zhǔn)備做一個(gè)游戲引擎(你就當(dāng)我準(zhǔn)備產(chǎn)生垃圾好了~呵呵!),準(zhǔn)備寫文檔,就順便把這篇文章寫出來了,初次發(fā)稿,寫得可能不是很好,請多多包涵~謝謝!~~

              資源打包就是將一些零碎資源(如圖片,音樂文件)。打包的好處有哪些呢?

              1、減少碎片。因?yàn)閃INDOWS的文件管理系統(tǒng)的原因,將這些資源按原樣放在硬盤里,會產(chǎn)生“碎片”。比如1個(gè)字節(jié)的文件,占用的空間就高達(dá)8KB。這樣,資源可以說“膨脹”了。

              2、安全。將這些數(shù)據(jù)集合起來打包的話,就可以隱藏這些文件,讓用戶不能修改(如果某位高手破解了文件結(jié)構(gòu)并提取出來了的話你當(dāng)我沒說~)

              我想到的只有這些,如果哪位大蝦認(rèn)為還可以補(bǔ)充的,請聯(lián)系我:)

              好了!我們現(xiàn)在來構(gòu)造一個(gè)結(jié)構(gòu)來儲存這些文件吧!在這里因?yàn)槲覝?zhǔn)備寫的是只儲存圖形的游戲引擎,所以我想到的只是圖片的儲存,其他文件的儲存,這里沒有涉及。
              
              我們先構(gòu)造一個(gè)文件頭,這個(gè)文件頭描述了一些基本的信息,有長度,文件版本,壓縮類型,還有儲存的圖片總數(shù)。現(xiàn)在詳細(xì)的說一下,長度就不用說了吧,文件頭的大小。文件版本是給打包工具看的東東,游戲引擎里也可以使用,根據(jù)版本來用不同的方法打開文件(不同的結(jié)構(gòu),或者其他的)。壓縮類型是一個(gè)以備擴(kuò)展用的東東,根據(jù)標(biāo)識來使用不同的壓縮方法解壓縮,在這里可以選一個(gè)速度和容量折中的壓縮方法。圖片總數(shù)說的不是單個(gè)圖片的總數(shù),而是靜態(tài)圖片和動態(tài)圖片的總數(shù),靜態(tài)圖片可以理解成一個(gè)圖片,動態(tài)圖片就是一系列靜態(tài)圖片的集合,這個(gè)在后面會說到。講一個(gè)文件頭就說了這么多話。我講得是太詳細(xì)了還是太水了?

              struct FileHeader

              {

              unsigned long headsize; //文件頭長度

              int Version; //文件版本

              int Compress; //壓縮類型

              int AllNumber; //圖片總數(shù)

              }

              然后緊跟一個(gè)結(jié)構(gòu)數(shù)組,這個(gè)結(jié)構(gòu)描述了每個(gè)圖片的起始偏移量,這個(gè)偏移量是以文件頭的長度+索引結(jié)構(gòu)數(shù)組的長度+1為基址的,還描述了圖片的幀數(shù),為1則表示為靜態(tài)圖片,大于1則表示動態(tài)圖片(動態(tài)圖片很有用處,比如海面,被風(fēng)吹動的樹,這些就可以很容易的表示出來)

              struct PicIndex

              {

              int offset; //圖片偏移量

              unsigned long PicSize //圖片長度(如果是多幀的則代表這個(gè)圖片集的總共長度)

              int nFrameNumber; //圖片幀數(shù)

              unsigned long nFrameSize[nFrameNumber]; //每一幀的偏移量,這里的偏移量就是基址+offset+這一個(gè)偏移量。。#··%…!天書?

              //當(dāng)然上面這個(gè)數(shù)組定義編譯時(shí)不能這樣寫

              }

              PicIndex結(jié)構(gòu)是一個(gè)數(shù)組,它的下標(biāo)為AllNumber個(gè)。例如:

              PicIndex Index[AllNumber];

              然后剩下的就是一些數(shù)據(jù)了,這些數(shù)據(jù)已經(jīng)被壓縮了,壓縮方式通過文件頭的AllNumber變量來獲得。

              

              下標(biāo)n其實(shí)就是AllNumber,這里為了省空間:)

              值得注意的是后面的壓縮數(shù)據(jù)不是整塊壓縮的,而是單個(gè)圖片的壓縮,然后放在一起而已,我這樣做是為了讀取方便,就不用讀取一個(gè)數(shù)據(jù)還要把整個(gè)文件再解壓縮一道了,這樣壓縮率可能也會降低,不知道是否還有更好的辦法,如果有,請聯(lián)系我~謝謝!

              除了我寫的這種結(jié)構(gòu)方式來儲存文件以外,還有其他的實(shí)現(xiàn)方案,但是我覺得這個(gè)好一點(diǎn)。

              代碼我剛寫一半,還不完全,所以這里就不放上來了。

              我的QQ:393277421

              我再說一句最重要的話:有空常聯(lián)系~~~~~~~~
            posted on 2006-11-19 08:11 李錦俊(mybios) 閱讀(2571) 評論(2)  編輯 收藏 引用 所屬分類: 資源壓縮打包

            Feedback

            # re: 【轉(zhuǎn)貼】游戲中的資源打包 2008-03-19 19:17 小旋子
            請問 關(guān)于某一個(gè)格式(即某種壓縮打包算法)的游戲壓縮包 已有一種工具能夠正確提取出其中的文件, 那么是否可以逆向呢?就是可否反過來將某些文件壓縮打包到該游戲的文件中?  回復(fù)  更多評論
              

            # re: 【轉(zhuǎn)貼】游戲中的資源打包 2012-03-13 13:57 lake
            xielianjin@qq.com 有的話發(fā)一份研究。3Q  回復(fù)  更多評論
              

            国产69精品久久久久777| 久久久受www免费人成| 国产精品久久久久9999高清| 99国产欧美久久久精品蜜芽 | 日本欧美久久久久免费播放网| 欧美黑人又粗又大久久久| 品成人欧美大片久久国产欧美...| 亚洲精品97久久中文字幕无码| 精品久久久久久久无码| 久久中文精品无码中文字幕| 久久国产精品无码一区二区三区| 久久久精品久久久久久| 久久er99热精品一区二区| 中文字幕久久精品 | 久久无码中文字幕东京热| 国产精品国色综合久久| 18禁黄久久久AAA片| 国产精自产拍久久久久久蜜| 人妻精品久久久久中文字幕69 | 久久午夜无码鲁丝片秋霞| 麻豆精品久久久一区二区| 无码人妻久久一区二区三区免费丨 | 中文精品99久久国产| 国产毛片久久久久久国产毛片| 色欲久久久天天天综合网精品| 日韩电影久久久被窝网| 久久久九九有精品国产| 久久精品国产网红主播| 久久久亚洲AV波多野结衣| 久久综合伊人77777| 国产精品欧美亚洲韩国日本久久| 99久久人妻无码精品系列蜜桃| 国产成人精品综合久久久久| 亚洲国产精品无码久久久久久曰 | 国产午夜精品理论片久久 | 一级做a爰片久久毛片看看| 精品无码久久久久久久久久| 久久综合久久综合九色| 97精品国产97久久久久久免费 | 久久精品中文字幕第23页| 7国产欧美日韩综合天堂中文久久久久 |