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