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

loop_in_codes

低調(diào)做技術(shù)__歡迎移步我的獨(dú)立博客 codemaro.com 微博 kevinlynx

游戲資源包簡(jiǎn)單設(shè)計(jì)

一般的資源包文件格式基本上是由包文件頭和包內(nèi)容組成。文件頭描述資源包內(nèi)打包的文件
信息,例如文件名、在資源包里的偏移、大小、壓縮加密相關(guān)信息等;包內(nèi)容則是實(shí)際文件
打包在一起后的內(nèi)容,可能直接是未打包前文件連續(xù)存放在一起的內(nèi)容,也可能是相同類(lèi)型
文件除掉文件頭的內(nèi)容(例如某個(gè)資源包里打包的全部是相同格式的圖片文件,那么這些圖
片文件被打包后包內(nèi)只需要保存一個(gè)圖片文件頭,包內(nèi)容全部是直接的圖片數(shù)據(jù))。

網(wǎng)絡(luò)游戲資源包有個(gè)顯著的需求就是支持補(bǔ)丁包更新。更新程序會(huì)把補(bǔ)丁包內(nèi)的更新資源文
件插入到老的資源包里。最簡(jiǎn)單的解決辦法,就是在包文件頭里預(yù)留一定的空間,用于將來(lái)
插入新的文件描述。當(dāng)然,新的文件內(nèi)容可以直接插入到包尾。一個(gè)簡(jiǎn)單的文件格式如下:

pkg_fmt

pkg_header是一個(gè)對(duì)整個(gè)資源包綜合描述的結(jié)構(gòu),可能包含的域?yàn)椋?

struct PkgHeader {
    int ver; /* 版本號(hào) */
    int ctx_offset; /* 文件內(nèi)容偏移 */
    int file_tag_cnt; /* 文件標(biāo)記數(shù)量 */
    int empty_tag_cnt; /* 空標(biāo)記數(shù)量 */
};

pkg_header后面則是文件標(biāo)記(信息)結(jié)構(gòu)體集合,每一個(gè)標(biāo)記用于描述打包的一個(gè)文件的
信息,可能包含的域有:

struct FileTag {
    char name[128]; /* 包含目錄名的文件名,用于索引,如./model/character.dat */
    int offset; /* 該文件在資源包內(nèi)的偏移 */
    int size; /* 在資源包中的大小 */
    int orig_size; /* 原始大小,即未壓縮/加密前大小 */
    int crc; /* crc校驗(yàn) */
};

如果要支持客戶(hù)端自己下載數(shù)據(jù)更新,考慮到斷點(diǎn)續(xù)傳功能,可能還會(huì)添加一些成員用于標(biāo)
記當(dāng)前文件獲得的數(shù)據(jù)大小。

empty_tags則是一些空的FileTag。當(dāng)要往包里插入新的文件時(shí),則會(huì)在這里申請(qǐng)。同樣,
如果要?jiǎng)h除文件,也可以將前面的file_tag轉(zhuǎn)移過(guò)來(lái)。因?yàn)椴扇∵@種包格式,文件實(shí)際內(nèi)容
的偏移基本上是不會(huì)改變的,所以,每一次都可以直接重新排列file_tags和empty_tags。

接下來(lái)包的內(nèi)容就直接是文件內(nèi)容。如果中間的文件大小有變化,會(huì)涉及到其他文件數(shù)據(jù)的
移動(dòng)。

對(duì)于只需要讀取資源包的游戲客戶(hù)端而言(不包括更新程序),可以只讀取pkg_header和
file_tags。程序?qū)ile_tags置于一個(gè)索引表中,效率考慮,可以標(biāo)記每一個(gè)file_tag是否
已在內(nèi)存中。每一次應(yīng)用層請(qǐng)求一個(gè)資源文件時(shí),就從該表中查找。若資源已在內(nèi)存中,就
直接取出使用,否則根據(jù)file_tag的描述從資源包里取出(這里涉及到IO操作)。

posted on 2010-06-19 14:59 Kevin Lynx 閱讀(4750) 評(píng)論(5)  編輯 收藏 引用 所屬分類(lèi): game develop

評(píng)論

# re: 游戲資源包簡(jiǎn)單設(shè)計(jì) 2010-06-21 09:40 飯中淹


另外,文件分配表的位置最好放在包末尾,這樣就沒(méi)有數(shù)量限制了,也不用預(yù)留empty_tags。

  回復(fù)  更多評(píng)論   

# re: 游戲資源包簡(jiǎn)單設(shè)計(jì) 2010-06-21 11:36 Kevin Lynx

@飯中淹
對(duì)啊,好方法。移動(dòng)分配表的代價(jià)比移動(dòng)文件內(nèi)容小多了。不錯(cuò)。  回復(fù)  更多評(píng)論   

# re: 游戲資源包簡(jiǎn)單設(shè)計(jì) 2010-06-23 15:28 秒大刀

可以研究下其他已有的開(kāi)源包結(jié)構(gòu)zip、rar、7z等,魔獸的mpq也不錯(cuò)  回復(fù)  更多評(píng)論   

# re: 游戲資源包簡(jiǎn)單設(shè)計(jì) 2010-07-08 17:47 大蝦

如何實(shí)現(xiàn)替換文件?  回復(fù)  更多評(píng)論   

# re: 游戲資源包簡(jiǎn)單設(shè)計(jì) 2010-07-09 09:26 Kevin Lynx

@大蝦
把文件內(nèi)容直接替換了,然后修改file_tag  回復(fù)  更多評(píng)論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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白丝在线| 欧美三级欧美一级| 国产精品有限公司| 亚洲视频在线观看三级| 国内精品免费在线观看| 亚洲精品视频在线看| 国产精品高潮呻吟久久av无限 | 欧美激情精品久久久久久变态| 久久aⅴ国产紧身牛仔裤| 亚洲欧美日本在线| 国产精品v片在线观看不卡| 亚洲精品欧美| 亚洲毛片av在线| 性欧美18~19sex高清播放| 欧美日韩精品中文字幕| 国产亚洲精品自拍| 老司机免费视频一区二区| 日韩一级免费| 欧美亚洲综合久久| 国产精品福利网站| 亚洲欧洲日本在线| 在线看国产一区| 欧美1级日本1级| 亚洲电影在线看| 性色av一区二区三区| 亚洲欧美激情一区| 欧美一区二区三区在线播放| 激情综合网址| 亚洲丶国产丶欧美一区二区三区 | 亚洲激情小视频| 国产视频一区在线观看一区免费| 久久精品国产69国产精品亚洲| 久久综合伊人77777| 欧美精品一区在线发布| 美女脱光内衣内裤视频久久网站| 国产精品日本| 麻豆av一区二区三区久久| 亚洲国产午夜| 久久精品国产免费看久久精品| 国产情侣一区| 黄色亚洲在线| 性亚洲最疯狂xxxx高清| 蜜桃久久av| 久久av最新网址| 欧美日韩亚洲另类| 99视频在线精品国自产拍免费观看| 午夜精品久久久久久久| 欧美成人a∨高清免费观看| 欧美三级视频在线| 亚洲欧美日韩国产| 久久精品中文| 午夜精品久久久久久久久久久久久 | 久久一日本道色综合久久| 99re6热只有精品免费观看 | 在线精品在线| 欧美一区二区三区视频免费播放| 亚洲一区二区三区高清| 欧美日韩精品一区视频| 美女91精品| 国产精品一区在线观看| 亚洲一区二区三区精品在线| 亚洲欧美日韩在线综合| 国产欧美不卡| 欧美91视频| 久久精品国亚洲| 久久久一本精品99久久精品66| 亚洲一区二区三区涩| 性做久久久久久免费观看欧美| 一本到高清视频免费精品| 国产精品99久久久久久久vr| 欧美三级第一页| 欧美不卡视频| 一本色道精品久久一区二区三区 | 欧美中文字幕| 亚洲人成网站777色婷婷| 午夜一区二区三区不卡视频| 欧美有码视频| 一区二区三区.www| 亚洲黄色免费电影| 欧美日韩不卡在线| 亚洲国内自拍| 久久aⅴ国产紧身牛仔裤| 久久在线免费视频| 欧美承认网站| 亚洲国产婷婷综合在线精品 | 久久只精品国产| 亚洲二区精品| 久久综合亚洲社区| 美女性感视频久久久| 亚洲剧情一区二区| 欧美日韩国产黄| 欧美va亚洲va香蕉在线| 久久一区二区三区av| 午夜精品一区二区三区在线播放| 欧美jjzz| 亚洲视频电影图片偷拍一区| 久久久久九九九九| 午夜精品福利视频| 欧美日韩四区| 亚洲综合日韩中文字幕v在线| 欧美**人妖| 麻豆精品一区二区av白丝在线| 久久久久在线观看| 欧美视频一区在线| 国产精品一二三| 国产精品永久| 亚洲片在线资源| 午夜精品视频在线观看一区二区| 久久精品国产综合| 亚洲性xxxx| 欧美在线视频观看| 免费成人小视频| 在线综合欧美| 久久久久久久综合色一本| 99亚洲视频| 欧美国产日韩精品免费观看| 亚洲国产精品精华液2区45| 久久这里有精品15一区二区三区| 欧美一区二区三区视频在线 | 亚洲国产成人高清精品| 国产性猛交xxxx免费看久久| 亚洲成色www8888| 亚洲图片自拍偷拍| 亚洲精品一区二区三区av| 国产精品一区二区三区四区| 亚洲欧美日韩在线观看a三区| 久久亚洲精选| 国产区在线观看成人精品| 一区二区动漫| 亚洲国产91精品在线观看| 久久久久久久久久久久久女国产乱| 亚洲精品一区久久久久久| 欧美视频免费在线| 亚洲欧洲一区二区天堂久久| 国产精品久久久久久久久久妞妞| 欧美黄色片免费观看| 国产九九精品视频| 亚洲精品一区二区在线观看| 欧美国产日产韩国视频| 亚洲天堂av图片| 亚洲国产成人在线视频| 篠田优中文在线播放第一区| 欧美日韩国产精品成人| 99精品欧美一区二区三区综合在线| 亚洲成人自拍视频| 亚洲一区二区av电影| 欧美国产日韩一二三区| 亚洲毛片在线看| 一本大道久久精品懂色aⅴ| 国产精品美女黄网| 亚洲综合色丁香婷婷六月图片| 一区二区欧美日韩视频| 亚洲综合精品四区| 性欧美大战久久久久久久免费观看| 久久婷婷国产综合精品青草| 久久综合久久综合九色| 合欧美一区二区三区| 久久久国产精品一区二区三区| 久久黄色影院| 欧美人与性动交cc0o| 久久电影一区| 中文日韩在线视频| 久久久久久久综合| 午夜欧美电影在线观看| 久久亚洲影音av资源网| 亚洲欧美视频在线观看视频| 久久久精品国产免大香伊| 欧美午夜精品一区| 久久精品中文字幕一区| 媚黑女一区二区| 久久久久久伊人| 国产精品狼人久久影院观看方式| 美女日韩在线中文字幕| 两个人的视频www国产精品| 欧美国产综合视频| 性欧美video另类hd性玩具| 国产精品亚洲综合天堂夜夜| 久色婷婷小香蕉久久| 99日韩精品| 欧美国产日本| 久久国产精品99国产精| 99这里只有精品| 蜜臀久久久99精品久久久久久| 久久国产88| 国产一级揄自揄精品视频| 亚洲一区在线免费观看| 久久精品91久久久久久再现| 国内精品久久久久久久果冻传媒| 亚洲欧美在线视频观看| 亚洲欧洲日产国产综合网| 久久人人97超碰精品888| 欧美成人dvd在线视频| 在线精品国精品国产尤物884a| 久久精品99| 亚洲国产另类久久精品| 欧美日韩影院| 欧美在线资源| 亚洲一区欧美| 欧美一区二区黄色|