本發(fā)明涉及游戲領(lǐng)域,尤其是基于訪問順序排序的游戲資源文件加載方法和系統(tǒng)。
背景技術(shù):
:一般的游戲中從存儲媒介中加載資源時,當(dāng)操作系統(tǒng)中存在大量文件的文件句柄,操作系統(tǒng)的運行速度就會變得非常慢。為了進(jìn)行優(yōu)化,很多游戲都只能從打包的資源文件中加載必需的資源。這些打包的資源文件就是一個個大型的文件數(shù)據(jù)庫,以單個文件或一組文件的形式存在著。在這些數(shù)據(jù)庫中,都保存著一個完整的目錄層次信息。資源文件有效地解決了文件句柄開銷過大的問題。但是又帶來了另外一個嚴(yán)重的問題。這些資源文件的順序通常就是硬盤上的目錄結(jié)構(gòu)的一個鏡像。而游戲很少會按照資源文件在目錄結(jié)構(gòu)中的順序來訪問它們。相反,多數(shù)情況下,它們都會在資源文件中跳躍式地訪問資源文件。這就成了一個主要的瓶頸。如果游戲使用的數(shù)據(jù)集十分大,那么其資源文件的布局中存在的這個弱點就會暴露出來。使得游戲的資源加載進(jìn)度非常慢,嚴(yán)重影響了玩家的用戶體驗。技術(shù)實現(xiàn)要素:為了解決上述技術(shù)問題,本發(fā)明的目的是:提供一種縮短游戲資源文件加載時間、增強(qiáng)游戲的體驗和表現(xiàn)的游戲資源文件加載方法。為了解決上述技術(shù)問題,本發(fā)明的另一目的是:提供一種縮短游戲資源文件加載時間、增強(qiáng)游戲的體驗和表現(xiàn)的游戲資源文件加載系統(tǒng)。本發(fā)明所采用的技術(shù)方案是:基于訪問順序排序的游戲資源文件加載方法,包括有以下步驟:A、使用一個默認(rèn)的打包資源文件運行游戲,并將文件訪問記錄和文件加載時間記錄到日志文件中;B、讀入打包資源文件信息和日志文件數(shù)據(jù),根據(jù)資源文件的訪問頻率和時間進(jìn)行打包順序的優(yōu)化;C、根據(jù)優(yōu)化后的順序?qū)①Y源文件打包。進(jìn)一步,還包括有步驟D:使用步驟C中得到的打包資源文件運行游戲,并將文件訪問記錄和文件加載時間記錄到日志文件中。進(jìn)一步,完成步驟D之后,重復(fù)執(zhí)行步驟B和步驟C得到新的打包資源文件。進(jìn)一步,所述步驟A具體為:使用一個默認(rèn)的打包資源文件運行游戲,并根據(jù)游戲的不同運行狀態(tài)將文件訪問記錄和文件加載時間記錄到日志文件中對應(yīng)的各記錄區(qū)中。進(jìn)一步,所述步驟B具體為:讀入打包資源文件信息和日志文件中各記錄區(qū)的數(shù)據(jù),根據(jù)資源文件的訪問頻率和時間對游戲的不同運行狀態(tài)中分別使用到的文件進(jìn)行打包順序的優(yōu)化。本發(fā)明所采用的另一技術(shù)方案是:基于訪問順序排序的游戲資源文件加載系統(tǒng),包括有:數(shù)據(jù)采集單元,使用打包資源文件運行游戲,并將文件訪問記錄和文件加載時間記錄到數(shù)據(jù)記錄單元中;數(shù)據(jù)記錄單元,用于記錄數(shù)據(jù)采集單元采集到的數(shù)據(jù);打包順序優(yōu)化單元,讀入打包資源文件信息和數(shù)據(jù)記錄單元的數(shù)據(jù),并根據(jù)資源文件的訪問頻率和時間進(jìn)行打包順序的優(yōu)化;文件打包單元,根據(jù)優(yōu)化后的順序?qū)①Y源文件打包。進(jìn)一步,所述數(shù)據(jù)采集單元使用的打包資源文件為默認(rèn)的打包資源文件或文件打包單元生成的優(yōu)化后的打包資源文件。進(jìn)一步,所述數(shù)據(jù)記錄單元包括有多個數(shù)據(jù)分區(qū),用于記錄游戲的不同運行狀態(tài)時,數(shù)據(jù)采集單元采集到的文件訪問記錄和文件加載時間記錄。進(jìn)一步,所述打包順序優(yōu)化單元用于讀入打包資源文件信息和數(shù)據(jù)記錄單元中多個數(shù)據(jù)分區(qū)的數(shù)據(jù),并根據(jù)資源文件的訪問頻率和時間對游戲的不同運行狀態(tài)中分別使用到的文件進(jìn)行打包順序的優(yōu)化。本發(fā)明的有益效果是:本發(fā)明方法通過對資源文件的二次排序后再進(jìn)行打包,使游戲運行過程中加載資源文件的速度提升,尤其是在數(shù)據(jù)集龐大的大型游戲中使加載速度指數(shù)級提升,極大地增強(qiáng)用戶的游戲體驗。本發(fā)明的另一有益效果是:本發(fā)明系統(tǒng)通過對資源文件的二次排序后再進(jìn)行打包,使游戲運行過程中加載資源文件的速度提升,尤其是在數(shù)據(jù)集龐大的大型游戲中使加載速度指數(shù)級提升,極大地增強(qiáng)用戶的游戲體驗。附圖說明圖1為本發(fā)明方法步驟流程圖;圖2為本發(fā)明方法進(jìn)一步實施的步驟流程圖。具體實施方式下面結(jié)合附圖對本發(fā)明的具體實施方式作進(jìn)一步說明:上述
背景技術(shù):
詳細(xì)說明了現(xiàn)有技術(shù)中游戲資源文件加載的缺陷,為了縮短游戲資源文件加載時間、增強(qiáng)代碼可維護(hù)性與可重用性、增強(qiáng)游戲的體驗和表現(xiàn),需要能夠多打包資源文件進(jìn)行一定順序地訪問,從而更快速的加載必需的資源文件。參照圖1,基于訪問順序排序的游戲資源文件加載方法,包括有以下步驟:A、使用一個默認(rèn)的打包資源文件運行游戲,并將文件訪問記錄和文件加載時間記錄到日志文件中;由于游戲過程復(fù)雜,過程中使用文件的規(guī)律不明顯,且這些組合完全取決于游戲項目使用資源的方式,因此上述默認(rèn)的打包資源文件的打包順序通常采用的都不是最佳順序,從而需要在游戲過程中將打包資源文件中文件的訪問記錄和文件加載時間記錄到日志文件中,用于后續(xù)過程中的處理,并作為基準(zhǔn)來評估優(yōu)化后的效果。B、讀入打包資源文件信息和日志文件數(shù)據(jù),根據(jù)資源文件的訪問頻率和時間進(jìn)行打包順序的優(yōu)化;讀入的打包資源文件信息包括有所有的通用數(shù)據(jù)以及游戲關(guān)卡專用的資源,針對游戲關(guān)卡進(jìn)行打包順序的優(yōu)化。資源文件的訪問頻率越高、時間越早,則在順序優(yōu)化時排序越靠前。典型的通用數(shù)據(jù)例如:游戲中的用戶界面文件、一個標(biāo)準(zhǔn)的武器系統(tǒng)文件或者是一個通用的著色程序庫等,這些文件數(shù)據(jù)在各個不同的游戲關(guān)卡均需要使用到。C、根據(jù)優(yōu)化后的順序?qū)①Y源文件打包。所使用的資源打包工具可以按照上述步驟B中得到的打包順序,去打包資源文件。參照圖2,進(jìn)一步作為優(yōu)選的實施方式,還包括有步驟D:使用步驟C中得到的打包資源文件運行游戲,并將文件訪問記錄和文件加載時間記錄到日志文件中。利用新打包的資源文件再次運行游戲,并記錄相應(yīng)的文件訪問記錄和文件加載時間的記錄,通過將日志文件中的信息可與原日志文件中的信息對比,驗證經(jīng)過優(yōu)化后的資源打包文件是否使游戲過程中的加載時間縮短。如下表1所示,本發(fā)明方法實際應(yīng)用中采集的樣本數(shù)據(jù)的加載用時:表1:樣本數(shù)據(jù)加載用時效果對比文件系統(tǒng)加載用時(單位:毫秒)Windows文件系統(tǒng)(NTFS)6077.858499資源文件1443.543244優(yōu)化后的資源文件795.332088從表上可看出,現(xiàn)有技術(shù)中采用標(biāo)準(zhǔn)的資源文件與使用windows文件系統(tǒng)相比,使用標(biāo)準(zhǔn)的資源文件的加載速度是其4倍有余;而本發(fā)明方法中采用優(yōu)化后的資源文件,其加載速度是現(xiàn)有技術(shù)的近兩倍。由于上述用于測試的樣本數(shù)據(jù)量很小,表中實際的加載用時數(shù)量都非常小,因此優(yōu)化后的提升也只有兩倍;但是在對一個大型文件(大于1GB)進(jìn)行的測試中,與一個目錄交叉的資源文件相比,利用優(yōu)化后的資源文件可實現(xiàn)加載速度的指數(shù)級別提升,可使加載時間從10秒提高到200毫秒,即加載速度提高20?50倍,這是一個非常顯著的速度提升。在某些游戲加載模式中,最初訪問的那些文件都是比較零散的,磁盤磁頭需要多次的跳轉(zhuǎn);而通過對資源文件的二次排序,就可利用優(yōu)化后的資源文件可以獲得最佳的提升效果。參照圖2,進(jìn)一步作為優(yōu)選的實施方式,完成步驟D之后,重復(fù)執(zhí)行步驟B和步驟C得到新的打包資源文件。利用優(yōu)化后的打包資源文件運行游戲,再次進(jìn)行順序優(yōu)化,及重復(fù)執(zhí)行步驟B和步驟C,可進(jìn)一步獲取更優(yōu)化的打包順序。進(jìn)一步作為優(yōu)選的實施方式,所述步驟A具體為:使用一個默認(rèn)的打包資源文件運行游戲,并根據(jù)游戲的不同運行狀態(tài)將文件訪問記錄和文件加載時間記錄到日志文件中對應(yīng)的各記錄區(qū)中。通常游戲具有多個關(guān)卡,每個關(guān)卡中的場景、道具等資源都不相同,因此每個關(guān)卡中的游戲都處于不同的運行狀態(tài),因此還可針對每個給定的關(guān)卡,將該關(guān)卡內(nèi)所有需要的資源文件打包,最后生成的每一個打包資源文件對應(yīng)一個游戲關(guān)卡,因此更可靠的方法是在日志文件中建立多個記錄區(qū),根據(jù)游戲的不同運行狀態(tài)將文件訪問記錄和文件加載時間記錄到日志文件中對應(yīng)的各記錄區(qū)中,從而實現(xiàn)對若干組順序加載的文件分別進(jìn)行優(yōu)化;優(yōu)化工作最佳的起點是日志文件中那些所有關(guān)卡都要用到的通用數(shù)據(jù)。進(jìn)一步作為優(yōu)選的實施方式,讀入打包資源文件信息和日志文件中各記錄區(qū)的數(shù)據(jù),根據(jù)資源文件的訪問頻率和時間對游戲的不同運行狀態(tài)中分別使用到的文件進(jìn)行打包順序的優(yōu)化。進(jìn)一步作為優(yōu)選的實施方式,根據(jù)資源文件被打包的方式,重新排列各個資源文件被加載的順序。很多時候,在游戲中的某個固定的時間,需要加載一系列已知的文件。比如,在玩家進(jìn)入游戲之前就加載一套標(biāo)準(zhǔn)配置的武器模型,這在第一人稱的射擊游戲中非常常見。通常來說,一個普通的武器系統(tǒng)要包括10?20個帶有紋理或材質(zhì)的模型。在這種情況下所需要做的是在加載這些資源時,記錄下來每個文件指針的位置,然后按照這些資源文件出現(xiàn)的順序,對加載順序重新排序,從而加快資源的加載速度?;谠L問順序排序的游戲資源文件加載系統(tǒng),包括有:數(shù)據(jù)采集單元,使用打包資源文件運行游戲,并將文件訪問記錄和文件加載時間記錄到數(shù)據(jù)記錄單元中;數(shù)據(jù)記錄單元,用于記錄數(shù)據(jù)采集單元采集到的數(shù)據(jù),例如上述本發(fā)明方法中用到的日志文件;打包順序優(yōu)化單元,讀入打包資源文件信息和數(shù)據(jù)記錄單元的數(shù)據(jù),并根據(jù)資源文件的訪問頻率和時間進(jìn)行打包順序的優(yōu)化;文件打包單元,根據(jù)優(yōu)化后的順序?qū)①Y源文件打包。進(jìn)一步作為優(yōu)選的實施方式,所述數(shù)據(jù)采集單元使用的打包資源文件為默認(rèn)的打包資源文件或文件打包單元生成的優(yōu)化后的打包資源文件。進(jìn)一步作為優(yōu)選的實施方式,所述數(shù)據(jù)記錄單元包括有多個數(shù)據(jù)分區(qū),用于記錄游戲的不同運行狀態(tài)時,數(shù)據(jù)采集單元采集到的文件訪問記錄和文件加載時間記錄。進(jìn)一步作為優(yōu)選的實施方式,所述打包順序優(yōu)化單元用于讀入打包資源文件信息和數(shù)據(jù)記錄單元中多個數(shù)據(jù)分區(qū)的數(shù)據(jù),并根據(jù)資源文件的訪問頻率和時間對游戲的不同運行狀態(tài)中分別使用到的文件進(jìn)行打包順序的優(yōu)化。以上是對本發(fā)明的較佳實施進(jìn)行了具體說明,但本發(fā)明創(chuàng)造并不限于所述實施例,熟悉本領(lǐng)域的技術(shù)人員在不違背本發(fā)明精神的前提下還可以作出種種的等同變換或替換,這些等同的變形或替換均包含在本申請權(quán)利要求所限定的范圍內(nèi)。當(dāng)前第1頁1 2 3