一種基于網(wǎng)絡(luò)游戲應(yīng)用的文件系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及互聯(lián)網(wǎng)游戲應(yīng)用領(lǐng)域,特別是一種基于網(wǎng)絡(luò)游戲應(yīng)用的文件系統(tǒng)。
【背景技術(shù)】
[0002] 近年來網(wǎng)絡(luò)游戲迅速發(fā)展,其中完整安裝版的客戶端游戲數(shù)量反而在逐漸減少, 能夠迅速地進(jìn)入游戲已經(jīng)成為了游戲上線的敲口磚。為此游戲客戶端需要能夠動(dòng)態(tài)地下載 游戲過程所需資源,由此帶來一系列相關(guān)問題。
[0003] 網(wǎng)絡(luò)游戲程序運(yùn)行過程中要讀取大量文件,在windows系統(tǒng)中,運(yùn)些文件如果直接 放在windows文件目錄中,不僅訪問速度較慢,不能高效應(yīng)用系統(tǒng)緩存,也不能壓縮節(jié)省空 間,也不利于資源的安全,容易使資源文件被盜竊、修改。
[0004] 于是大型客戶端游戲都有一個(gè)需求,就是文件打包壓縮加密讀取。先保證安全穩(wěn) 定,再偏重于速度,最后顧及壓縮W及文件的變化更新。
[0005] 目前國內(nèi)外大部分上檔次的游戲都對(duì)其資源文件進(jìn)行了打包處理,但是能夠在線 動(dòng)態(tài)更新的并不多見,國內(nèi)似乎有龍槍、霸刀等新近出現(xiàn)的網(wǎng)游采用了類似技術(shù)。國外游戲 中應(yīng)用的較少,可能是因?yàn)閲饩W(wǎng)絡(luò)帶寬大的原因,下載整個(gè)游戲也不會(huì)很耗時(shí)的緣故。不 論是國內(nèi)外的,目前暫時(shí)都沒有開源代碼可供下載。
[0006] 因此,目前的技術(shù)廠家都在積極開發(fā)新的文件系統(tǒng),運(yùn)個(gè)文件系統(tǒng)需要適合大量 的客戶端資源文件的整合管理,W及有不太嚴(yán)格的安全要求,有在線下載需求,文件數(shù)據(jù)沒 有運(yùn)行時(shí)修改需求的場(chǎng)合?;谶\(yùn)個(gè)系統(tǒng),客戶端更易于安裝和移動(dòng),減少資源文件暴露機(jī) 會(huì)使數(shù)據(jù)更加安全難W竊取和篡改,利用壓縮W減少數(shù)據(jù)尺寸和硬盤讀取耗時(shí),支持網(wǎng)絡(luò) 動(dòng)態(tài)下載所需資源,W及當(dāng)部分資源更新時(shí)不需要重新下載客戶端已緩存好的數(shù)據(jù)。在未 來還能通過不斷優(yōu)化系統(tǒng)內(nèi)部實(shí)現(xiàn)方案,對(duì)應(yīng)用層透明地優(yōu)化性能。
【發(fā)明內(nèi)容】
[0007] 為解決上述問題,本發(fā)明的目的在于提供一種基于網(wǎng)絡(luò)游戲應(yīng)用的文件系統(tǒng),提 高游戲加載資源的速度,允許多個(gè)進(jìn)程對(duì)同一個(gè)包同時(shí)讀取和下載資源,允許在線后臺(tái)同 步服務(wù)器上的資源,并在一定程度上保證資源的安全性。
[000引本發(fā)明解決其問題所采用的技術(shù)方案是: 本發(fā)明的優(yōu)選實(shí)施例提供了一種基于網(wǎng)絡(luò)游戲應(yīng)用的文件系統(tǒng),至少包括存儲(chǔ)模塊、 捜索模塊、統(tǒng)一下載平臺(tái)模塊、下載共享模塊,其中: 所述存儲(chǔ)模塊用于存儲(chǔ)所述文件系統(tǒng)的文件信息; 所述捜索模塊用于從存儲(chǔ)模塊中檢索對(duì)應(yīng)的文件信息; 所述統(tǒng)一下載平臺(tái)模塊用于接收游戲客戶端發(fā)出的對(duì)應(yīng)文件的下載請(qǐng)求,并根據(jù)下載 請(qǐng)求控制捜索模塊檢索對(duì)應(yīng)的文件信息; 所述下載共享模塊用于在統(tǒng)一下載平臺(tái)模塊接收下載請(qǐng)求的同時(shí),分析下載地址是否 為相同下載地址,在為相同下載地址時(shí),返回已經(jīng)下載文件的共享信息。
[0009] 進(jìn)一步,所述文件系統(tǒng)還包括: 壓縮及加密模塊,用于對(duì)存儲(chǔ)模塊中存儲(chǔ)的文件信息進(jìn)行壓縮或/和加密,所述壓縮及 加密模塊對(duì)相應(yīng)文件信息進(jìn)行壓縮時(shí),只對(duì)壓縮后的文件可W達(dá)到設(shè)定的壓縮率的文件信 息進(jìn)行壓縮。
[0010] 進(jìn)一步,所述存儲(chǔ)模塊W多級(jí)樹的方式存儲(chǔ)對(duì)應(yīng)的文件信息,同時(shí)生成樹索引文 件,所述樹索引文件單獨(dú)存儲(chǔ)或者與對(duì)應(yīng)的文件信息一起存儲(chǔ)。
[0011] 進(jìn)一步,所述文件系統(tǒng)還包括: 壓縮及加密模塊,用于對(duì)存儲(chǔ)模塊中存儲(chǔ)的文件信息進(jìn)行壓縮或/和加密,所述壓縮及 加密模塊對(duì)相應(yīng)文件信息進(jìn)行壓縮時(shí),生成的壓縮包包括: 主文檔,所述主文檔包括包頭、文件數(shù)據(jù)區(qū)和樹信息區(qū);或者 主文檔和樹索引文件,所述主文檔包括包頭和文件數(shù)據(jù)區(qū),所述樹索引文件包括包頭 和樹索引文件; 所述包頭至少包括文件頭的長度及版本信息,且包頭中存儲(chǔ)有對(duì)應(yīng)樹信息區(qū)的位置信 息,所述文件數(shù)據(jù)區(qū)存儲(chǔ)對(duì)應(yīng)的文件信息,所述樹信息區(qū)存儲(chǔ)對(duì)應(yīng)的樹索引文件。
[0012] 進(jìn)一步,所述統(tǒng)一下載平臺(tái)模塊包括: 多進(jìn)程處理單元,用于對(duì)接收游戲客戶端發(fā)送的進(jìn)程,對(duì)進(jìn)程進(jìn)行排序,并按照序列處 理進(jìn)程; 信息識(shí)別單元,用于在多進(jìn)程處理單元處理某個(gè)線程時(shí),讀取該進(jìn)程目錄下的配置文 件,根據(jù)配置信息獲取對(duì)應(yīng)文件信息的數(shù)量、路徑及下載地址,并返回至多進(jìn)程處理單元。
[0013] 進(jìn)一步,所述統(tǒng)一下載平臺(tái)模塊還包括在線下載識(shí)別單元,用于識(shí)別多進(jìn)程處理 單元所接收的進(jìn)程是否為在線下載進(jìn)程,在識(shí)別為在線下載進(jìn)程時(shí),為對(duì)應(yīng)進(jìn)程設(shè)置高優(yōu) 先級(jí)權(quán)重。
[0014] 進(jìn)一步,所述統(tǒng)一下載平臺(tái)模塊還包括: 進(jìn)程管理單元,用于在多個(gè)進(jìn)程同時(shí)下載時(shí),統(tǒng)一管理下載中的共享信息及下載流量, 所述共享信息包括多個(gè)游戲客戶端下載同一文件信息和同一用戶端重復(fù)下載同一文件信 息。
[0015] 進(jìn)一步,所述文件系統(tǒng)還包括在線發(fā)布模塊,所述在線發(fā)布模塊包括: 更新包生成單元,用于通過重新創(chuàng)建或更新的方式生成需要更新的完整數(shù)據(jù)包; 分離樹單元,用于對(duì)完整數(shù)據(jù)包進(jìn)行分離樹索引文件操作,獲取對(duì)應(yīng)的樹索引文件; 上傳單元,用于改名樹索引文件后將其與數(shù)據(jù)包一起上傳至下載服務(wù)器。
[0016] 本發(fā)明的有益效果是: 本發(fā)明采用一種基于網(wǎng)絡(luò)游戲應(yīng)用的文件系統(tǒng),在游戲的底層基礎(chǔ)實(shí)現(xiàn),允許多個(gè)進(jìn) 程對(duì)同一個(gè)包同時(shí)讀取和下載資源,允許在線后臺(tái)同步服務(wù)器上的資源,能使游戲加載資 源更快,使資源文件更安全,加大了非法獲取資源的難度,并使得游戲文件版本升級(jí)對(duì)玩家 造成的影響更小、更透明。
【附圖說明】
[0017] 下面結(jié)合附圖和實(shí)例對(duì)本發(fā)明作進(jìn)一步說明。
[0018] 圖1是本發(fā)明優(yōu)選實(shí)施例中文件系統(tǒng)的結(jié)構(gòu)示意圖; 圖2是本發(fā)明統(tǒng)一下載平臺(tái)模塊的結(jié)構(gòu)組成示意圖; 圖3是本發(fā)明統(tǒng)一下載平臺(tái)模塊與進(jìn)程的處理示意圖; 圖4是本發(fā)明文件系統(tǒng)具體內(nèi)部結(jié)構(gòu)及工作流程示意圖; 圖5是本發(fā)明文件系統(tǒng)的線程關(guān)系及處理流程示意圖。
【具體實(shí)施方式】
[0019] 本發(fā)明W下實(shí)施例僅代表對(duì)本發(fā)明具體的解釋,本發(fā)明并不限于某種系統(tǒng)或游戲 的應(yīng)用。本發(fā)明所言及的游戲,并不針對(duì)某一款特殊的游戲,本發(fā)明所屬應(yīng)用為對(duì)本發(fā)明中 的技術(shù)方案的具體說明。
[0020] 本發(fā)明所述文件系統(tǒng)向上層程序員提供FPC庫及其在線版本FPCO (在線文件壓縮 包File Pack with Compression Online)庫和DownloadClient庫(Client of Download Service統(tǒng)一下載服務(wù)客戶端)庫,并附帶了DownloadServer程序(Server of Download Service統(tǒng)一下載服務(wù)平臺(tái))和文件包管理工具,W及一個(gè)控制臺(tái)示例程序、一個(gè)基于.Net 平臺(tái)C++A:LI語言的可視化演示程序。本發(fā)明所述文件系統(tǒng)的具體實(shí)現(xiàn)參照W下實(shí)施例中 具體所述。
[0021] 實(shí)施例1: 作為本發(fā)明的優(yōu)選實(shí)施例,參照?qǐng)D1所示,本發(fā)明的文件系統(tǒng)至少包括存儲(chǔ)模塊100、捜 索模塊101、統(tǒng)一下載平臺(tái)模塊102、下載共享模塊103,其中: 所述存儲(chǔ)模塊100用于存儲(chǔ)所述文件系統(tǒng)的文件信息; 所述捜索模塊101用于從存儲(chǔ)模塊100中檢索對(duì)應(yīng)的文件信息; 所述統(tǒng)一下載平臺(tái)模塊102用于接收游戲客戶端發(fā)出的對(duì)應(yīng)文件的下載請(qǐng)求,并根據(jù) 下載請(qǐng)求控制捜索模塊101檢索對(duì)應(yīng)的文件信息; 所述下載共享模塊103用于在統(tǒng)一下載平臺(tái)模塊102接收下載請(qǐng)求的同時(shí),分析下載地 址是否為相同下載地址,在為相同下載地址時(shí),返回已經(jīng)下載文件的共享信息。
[0022] W上系統(tǒng)結(jié)構(gòu)構(gòu)成了本發(fā)明最基礎(chǔ)的組成單元,游戲客戶端所發(fā)出的所有進(jìn)程的 下載請(qǐng)求均通過統(tǒng)一下載平臺(tái)模塊102進(jìn)行處理,對(duì)進(jìn)程的下載的流量和進(jìn)行資源的分配 可W合理有序的控制,避免堵塞及其它異常情況。
[0023] 本發(fā)明的優(yōu)選實(shí)施例在文件系統(tǒng)中加入了壓縮及加密模塊104,用于對(duì)存儲(chǔ)模塊 100中存儲(chǔ)的文件信息進(jìn)行壓縮或/和加密,所述壓縮及加密模塊104對(duì)相應(yīng)文件信息進(jìn)行 壓縮時(shí),只對(duì)壓縮后的文件可W達(dá)到設(shè)定的壓縮率的文件信息進(jìn)行壓縮。此處,所設(shè)置的壓 縮率可W根據(jù)實(shí)際應(yīng)用進(jìn)行設(shè)置,本發(fā)明并不限于某一單一的固定值,其值也可W隨著壓 縮文件的不同動(dòng)態(tài)設(shè)置。本發(fā)明所采用的壓縮及加密方案,可W目前采用的常規(guī)方案,也可 W是高級(jí)壓縮及加密方式,在本發(fā)明的文件系統(tǒng)中,壓縮及加密所采用的方式對(duì)本發(fā)明的 實(shí)現(xiàn)不具有實(shí)質(zhì)性的影響。
[0024] -般的擴(kuò)展性較好的二進(jìn)制文件,都有一個(gè)文件頭(包頭),用于指明文件頭的長 度W及文件版本等,使用包頭可W增強(qiáng)容錯(cuò)性和版本兼容能力。為了兼容FPC和FPCO對(duì)文件 樹結(jié)構(gòu)信息(簡稱樹信息)的不同需求,文件樹結(jié)構(gòu)信息可W和文件數(shù)據(jù)一起存儲(chǔ)在主文檔 內(nèi),也可W單獨(dú)分離出來保存成一個(gè)文件(稱作樹索引文件)。在包頭中可W指明樹信息存 儲(chǔ)在哪個(gè)文件。由于主文檔的長度可能動(dòng)態(tài)的增長,所W使用FPCO時(shí),必須使樹索引文件。
[0025] 為此,在本發(fā)明的優(yōu)選實(shí)施例中,所述存儲(chǔ)模塊IOOW多級(jí)樹的方式存儲(chǔ)對(duì)應(yīng)的文 件信息,同時(shí)生成樹索引文件,所述樹索引文件單獨(dú)存儲(chǔ)或者與對(duì)應(yīng)的文件信息一起存儲(chǔ)。 不論樹索引文件單獨(dú)存儲(chǔ)或者與