一種游戲資源的在線加載方法及微端引擎的制作方法
【專利摘要】本發(fā)明提供一種游戲資源的在線加載方法及微端引擎,微端引擎包括微端服務(wù)器和微端客戶端;微端服務(wù)器包括游戲資源池、更新模塊和資源信息列表文件;微端客戶端包括資源存儲(chǔ)模塊、接收模塊、多線程下載模塊和推送模塊。有以下優(yōu)點(diǎn):(1)將游戲運(yùn)行時(shí)所需的游戲資源從游戲客戶端中分離出來,并將游戲資源存儲(chǔ)于微端服務(wù)器中;從而降低了游戲客戶端的容量,方便對(duì)游戲客戶端分發(fā)部署;(2)采用一種特殊的游戲資源加載方法,可有效保證游戲進(jìn)程所加載到的游戲資源的最新性和完整性,保證游戲正常運(yùn)行。
【專利說明】
一種游戲資源的在線加載方法及微端引擎
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于游戲開發(fā)技術(shù)領(lǐng)域,具體涉及一種游戲資源的在線加載方法及微端引擎?!颈尘凹夹g(shù)】
[0002]隨著媒體互聯(lián)網(wǎng)的迅速發(fā)展,數(shù)字互動(dòng)娛樂延伸到新的領(lǐng)域,網(wǎng)絡(luò)游戲是近年來得到廣泛關(guān)注并且發(fā)展極為迅速的一個(gè)產(chǎn)業(yè),如今我國(guó)網(wǎng)絡(luò)游戲業(yè)的巨大市場(chǎng)使得游戲從業(yè)人員不斷發(fā)展軟件技術(shù)以提升玩家的游戲體驗(yàn)。
[0003]現(xiàn)有的游戲客戶端通常包括游戲運(yùn)行時(shí)所需的所有游戲資源,例如,圖片、音頻和視頻等資源。而對(duì)于一個(gè)在線游戲,其運(yùn)行所需的游戲資源的數(shù)量非常龐大,導(dǎo)致現(xiàn)有的游戲客戶端整體容量比較龐大,增加了游戲客戶端分發(fā)部署的難度,不利于游戲客戶端的推廣使用。
【發(fā)明內(nèi)容】
[0004]針對(duì)現(xiàn)有技術(shù)存在的缺陷,本發(fā)明提供一種游戲資源的在線加載方法及微端引擎,可有效解決上述問題。
[0005]本發(fā)明采用的技術(shù)方案如下:
[0006]本發(fā)明提供一種游戲資源的在線加載方法,包括以下步驟:
[0007]S1,創(chuàng)建微端引擎;其中,所述微端引擎包括微端客戶端和微端服務(wù)器;所述微端客戶端和所述微端服務(wù)器為依賴網(wǎng)絡(luò)連接關(guān)系;
[0008]所述微端服務(wù)器設(shè)置游戲資源池;其中,所述游戲資源池用于存儲(chǔ)多個(gè)游戲運(yùn)行時(shí)所需的游戲資源;并且,所述微端服務(wù)器定時(shí)對(duì)所述游戲資源池所存儲(chǔ)的各個(gè)游戲資源進(jìn)行更新操作;
[0009]S2,所述微端服務(wù)器還配置與每一個(gè)游戲ID唯一對(duì)應(yīng)的資源信息列表文件;其中,所述資源信息列表文件用于存儲(chǔ)游戲資源ID和最新的第一校驗(yàn)碼的對(duì)應(yīng)關(guān)系;所述資源信息列表文件所存儲(chǔ)的所有游戲資源ID所對(duì)應(yīng)的游戲資源即為該游戲運(yùn)行時(shí)所需的所有游戲資源;
[0010]另外,所述微端服務(wù)器通過以下方式計(jì)算得到并維護(hù)所述第一校驗(yàn)碼:
[0011]S2.1,初始時(shí),所述微端服務(wù)器查找所述游戲資源池,得到與所述游戲資源ID對(duì)應(yīng)的游戲資源;
[0012]S2.2,所述微端服務(wù)器計(jì)算所得到的所述游戲資源的第一校驗(yàn)碼;
[0013]S2.3,所述微端服務(wù)器存儲(chǔ)所述游戲資源ID和第一校驗(yàn)碼的對(duì)應(yīng)關(guān)系;
[0014]S2.4,每當(dāng)所述游戲資源池所存儲(chǔ)的所述游戲資源進(jìn)行更新時(shí),所述微端服務(wù)器重新計(jì)算該游戲資源的第一校驗(yàn)碼,得到最新的第一校驗(yàn)碼,并更新所述資源信息列表文件,使所述游戲資源池所存儲(chǔ)的第一校驗(yàn)碼均為最新的第一校驗(yàn)碼;
[0015]S3,游戲客戶端封裝游戲進(jìn)程和微端客戶端;其中,所述游戲進(jìn)程通過所述微端客戶端與所述微端服務(wù)器建立通信連接;所述微端客戶端封裝該游戲進(jìn)程運(yùn)行所需的初始化資源;所述初始化資源包括:游戲加載界面、下載程序和與該游戲進(jìn)程對(duì)應(yīng)的資源信息列表文件存儲(chǔ)路徑;
[0016]S4,在所述游戲進(jìn)程初始化啟動(dòng)過程中,所述游戲進(jìn)程向所述微端客戶端發(fā)送初始游戲資源的請(qǐng)求消息;
[0017]S5,所述微端客戶端接收到該請(qǐng)求消息后,并行執(zhí)行以下兩步:
[0018]步驟1:所述微端客戶端將所述游戲加載界面推送給所述游戲進(jìn)程,所述游戲進(jìn)程顯示所述游戲加載界面;
[0019]步驟2:包括:
[0020]S2.1:所述微端客戶端調(diào)用所述下載程序;
[0021]S2.2:所述下載程序基于所封裝的資源信息列表文件存儲(chǔ)路徑,下載到對(duì)應(yīng)的資源信息列表文件;其中,所下載到的資源信息列表文件為最新的資源信息列表文件;
[0022]S2.3:所述微端客戶端判斷自身緩存中是否存儲(chǔ)所述初始游戲資源;如果存在, 則從緩存中讀取到所述初始游戲資源,然后直接執(zhí)行S2.4-S2.11 ;如果不存在,則執(zhí)行 S2.7-S2.11 ;
[0023]S2.4,所述微端客戶端計(jì)算緩存中存儲(chǔ)的所述初始游戲資源的校驗(yàn)碼,得到第二 fe驗(yàn)碼;
[0024]S2.5,所述微端客戶端通過讀取步驟2.2得到的所述資源信息列表文件,得到所述初始游戲資源的第一校驗(yàn)碼;
[0025]S2.6,所述微端客戶端判斷S2.4得到的所述第二校驗(yàn)碼與S2.5得到的所述第一校驗(yàn)碼是否相同,如果不相同,表明所述緩存中存儲(chǔ)的所述初始游戲資源為過時(shí)的游戲資源,然后,執(zhí)行S2.7 ;如果相同,則直接執(zhí)行S2.12 ;
[0026]S2.7,所述微端客戶端向所述微端服務(wù)器的游戲資源池請(qǐng)求下載所述初始游戲資源,并獲取到所述初始游戲資源;
[0027]S2.8,所述微端客戶端計(jì)算所述初始游戲資源的校驗(yàn)碼,得到第二校驗(yàn)碼;
[0028]S2.9,所述微端客戶端通過讀取步驟2.2得到的所述資源信息列表文件,得到所述初始游戲資源的第一校驗(yàn)碼;
[0029]S2.10,所述微端客戶端判斷S2.8得到的所述第二校驗(yàn)碼與S2.9得到的所述第一校驗(yàn)碼是否相同,如果不相同,表明所述微端客戶端在S2.8接收到的所述初始游戲資源存在損壞,則需再次執(zhí)行S2.7-S2.10,重新下載所述初始游戲資源;如果相同,則執(zhí)行S2.11 ;
[0030]S2.11,所述微端客戶端將所下載得到的所述初始游戲資源存入緩存中,然后,執(zhí)行 S2.12 ;
[0031]S2.12,所述微端客戶端將最新的所述初始游戲資源發(fā)送給所述游戲進(jìn)程;
[0032]S6,所述游戲進(jìn)程運(yùn)行所述初始游戲資源,完成游戲啟動(dòng)過程;
[0033]S7,在所述游戲進(jìn)程啟動(dòng)成功后,所述游戲進(jìn)程根據(jù)當(dāng)前時(shí)刻的游戲場(chǎng)景,推算出距離當(dāng)前時(shí)刻一定時(shí)間間隔內(nèi)所需的游戲資源,然后,向所述微端客戶端發(fā)送預(yù)下載所需游戲資源的請(qǐng)求消息;
[0034]S8,所述微端客戶端接收到該請(qǐng)求消息后,僅將S2.3-S2.12中的所述初始游戲資源替換為S7中所需的游戲資源,然后,循環(huán)執(zhí)行S2.3-S2.12,完成對(duì)所需的游戲資源進(jìn)行預(yù)下載的過程。
[0035]優(yōu)選的,所述第一校驗(yàn)碼和所述第二校驗(yàn)碼均為MD5校驗(yàn)碼。
[0036]本發(fā)明還提供一種微端引擎,包括微端服務(wù)器和微端客戶端;
[0037]所述微端服務(wù)器包括:
[0038]游戲資源池,用于存儲(chǔ)多個(gè)游戲運(yùn)行時(shí)所需的游戲資源;
[0039]更新模塊,用于定時(shí)對(duì)所述游戲資源池所存儲(chǔ)的各個(gè)游戲資源進(jìn)行更新操作;
[0040]資源信息列表文件,與唯一游戲ID對(duì)應(yīng),用于存儲(chǔ)該游戲ID運(yùn)行時(shí)所需的所有游戲資源對(duì)應(yīng)的游戲資源ID ;還存儲(chǔ)游戲資源ID和最新的第一校驗(yàn)碼的對(duì)應(yīng)關(guān)系;
[0041]所述微端客戶端包括:
[0042]資源存儲(chǔ)模塊,用于存儲(chǔ)游戲進(jìn)程運(yùn)行所需的初始化資源及緩存后下載獲取的游戲資源;其中,所述初始化資源包括:游戲加載界面、下載程序和與該游戲進(jìn)程對(duì)應(yīng)的資源信息列表文件存儲(chǔ)路徑
[0043]接收模塊,用于接收游戲進(jìn)程所發(fā)送的對(duì)游戲資源的請(qǐng)求消息;
[0044]多線程下載模塊,包括資源信息列表文件下載線程和游戲資源下載線程;
[0045]其中,所述資源信息列表文件下載線程用于:基于所述資源信息列表文件存儲(chǔ)路徑,下載到對(duì)應(yīng)的資源信息列表文件;其中,所下載到的資源信息列表文件為最新的資源信息列表文件;
[0046]所述游戲資源下載線程具體包括:
[0047]緩存查找模塊,用于當(dāng)接收到所述游戲進(jìn)程所發(fā)送的對(duì)游戲資源的請(qǐng)求消息時(shí), 判斷自身緩存中是否存儲(chǔ)所述游戲資源;
[0048]第一文件校驗(yàn)?zāi)K,用于當(dāng)所述緩存查找模塊查找到緩存中存儲(chǔ)有所述游戲資源時(shí),計(jì)算緩存中存儲(chǔ)的所述游戲資源的校驗(yàn)碼,得到第二校驗(yàn)碼;
[0049]再讀取所述資源信息列表文件下載線程下載到的所述資源信息列表文件,得到所述游戲資源的第一校驗(yàn)碼;然后比較所述第二校驗(yàn)碼和所述第一校驗(yàn)碼是否相同;
[0050]資源下載模塊,用于當(dāng)所述緩存查找模塊未在緩存中查找到所需的游戲資源時(shí), 或者,所述文件校驗(yàn)?zāi)K校驗(yàn)得到所述第二校驗(yàn)碼和所述第一校驗(yàn)碼不相同時(shí),從所述微端服務(wù)器下載所述游戲資源;
[0051]第二文件校驗(yàn)?zāi)K,用于對(duì)所述資源下載模塊下載得到的所述游戲資源進(jìn)行文件校驗(yàn),判斷下載得到的所述游戲資源是否為完整未損壞的游戲資源;如果否,則再次調(diào)用所述資源下載模塊,重新進(jìn)行游戲資源下載;如果是,則執(zhí)行后續(xù)的推送模塊;
[0052]推送模塊,用于當(dāng)所述緩存查找模塊查找到緩存中存在所述游戲資源,且該游戲資源通過所述第一文件校驗(yàn)?zāi)K的文件校驗(yàn)后,將校驗(yàn)通過的游戲資源推送給游戲進(jìn)程; 或者,用于將經(jīng)過所述第二文件校驗(yàn)?zāi)K校驗(yàn)通過后的游戲資源推送給游戲進(jìn)程。
[0053]本發(fā)明提供的游戲資源的在線加載方法及微端引擎具有以下優(yōu)點(diǎn):
[0054](1)將游戲運(yùn)行時(shí)所需的游戲資源從游戲客戶端中分離出來,并將游戲資源存儲(chǔ)于微端服務(wù)器中;從而降低了游戲客戶端的容量,方便對(duì)游戲客戶端分發(fā)部署;
[0055](2)采用一種特殊的游戲資源加載方法,可有效保證游戲進(jìn)程所加載到的游戲資源的最新性和完整性,保證游戲正常運(yùn)行?!靖綀D說明】
[0056]圖1為本發(fā)明提供的微端引擎的結(jié)構(gòu)示意圖?!揪唧w實(shí)施方式】
[0057]以下結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)說明:
[0058]本發(fā)明提供一種游戲資源的在線加載方法,包括以下步驟:
[0059]S1,創(chuàng)建微端引擎;其中,所述微端引擎包括微端客戶端和微端服務(wù)器;所述微端客戶端和所述微端服務(wù)器為依賴網(wǎng)絡(luò)連接關(guān)系;
[0060]所述微端服務(wù)器設(shè)置游戲資源池;其中,所述游戲資源池用于存儲(chǔ)多個(gè)游戲運(yùn)行時(shí)所需的游戲資源;并且,所述微端服務(wù)器定時(shí)對(duì)所述游戲資源池所存儲(chǔ)的各個(gè)游戲資源進(jìn)行更新操作;
[0061]S2,所述微端服務(wù)器還配置與每一個(gè)游戲ID唯一對(duì)應(yīng)的資源信息列表文件;其中,所述資源信息列表文件用于存儲(chǔ)游戲資源ID和最新的第一校驗(yàn)碼的對(duì)應(yīng)關(guān)系;所述資源信息列表文件所存儲(chǔ)的所有游戲資源ID所對(duì)應(yīng)的游戲資源即為該游戲運(yùn)行時(shí)所需的所有游戲資源;
[0062]另外,所述微端服務(wù)器通過以下方式計(jì)算得到并維護(hù)所述第一校驗(yàn)碼:
[0063]S2.1,初始時(shí),所述微端服務(wù)器查找所述游戲資源池,得到與所述游戲資源ID對(duì)應(yīng)的游戲資源;
[0064]S2.2,所述微端服務(wù)器計(jì)算所得到的所述游戲資源的第一校驗(yàn)碼;
[0065]S2.3,所述微端服務(wù)器存儲(chǔ)所述游戲資源ID和第一校驗(yàn)碼的對(duì)應(yīng)關(guān)系;
[0066]S2.4,每當(dāng)所述游戲資源池所存儲(chǔ)的所述游戲資源進(jìn)行更新時(shí),所述微端服務(wù)器重新計(jì)算該游戲資源的第一校驗(yàn)碼,得到最新的第一校驗(yàn)碼,并更新所述資源信息列表文件,使所述游戲資源池所存儲(chǔ)的第一校驗(yàn)碼均為最新的第一校驗(yàn)碼;
[0067]本發(fā)明中,資源信息列表文件的主要作用為:保證微端客戶端從微端服務(wù)器所下載得到的游戲資源的完整性,以及,如果微端客戶端的緩存中存在所需的游戲資源,能夠基于資源信息列表文件中的第一校驗(yàn)碼,而驗(yàn)證緩存中存在的游戲資源是否為最新的文件。 具體原理在后述過程中詳述。
[0068]因此,每當(dāng)游戲資源池所存儲(chǔ)的某個(gè)游戲資源進(jìn)行更新時(shí),微端服務(wù)器即更新包含更新資源ID的資源信息列表文件中的對(duì)應(yīng)的校驗(yàn)碼,例如,以校驗(yàn)碼為MD5碼為例,對(duì)于游戲資源池中的某個(gè)游戲畫面資源A,原游戲畫面資源A的內(nèi)容包括2015.02.11的日期信息;則:微端服務(wù)器使用OpenSSH開源庫計(jì)算得到原游戲畫面資源A的MD5值為100 ;則:原資源信息列表文件存儲(chǔ)游戲畫面資源A與100的對(duì)應(yīng)關(guān)系;當(dāng)游戲資源池中的原游戲畫面資源A的日期由2015.02.11更新為2015.02.13時(shí),微端服務(wù)器使用OpenSSH開源庫重新計(jì)算得到新的MD5值,設(shè)為200 ;則:微端服務(wù)器需要將資源信息列表文件更新為:游戲畫面資源A與200的對(duì)應(yīng)關(guān)系;通過此種方式,可基于MD5值,實(shí)現(xiàn)對(duì)游戲資源的校驗(yàn)。
[0069]S3,游戲客戶端封裝游戲進(jìn)程和微端客戶端;其中,所述游戲進(jìn)程通過所述微端客戶端與所述微端服務(wù)器建立通信連接;所述微端客戶端封裝該游戲進(jìn)程運(yùn)行所需的初始化資源;所述初始化資源包括:游戲加載界面、下載程序和與該游戲進(jìn)程對(duì)應(yīng)的資源信息列表文件存儲(chǔ)路徑;
[0070]S4,在所述游戲進(jìn)程初始化啟動(dòng)過程中,所述游戲進(jìn)程向所述微端客戶端發(fā)送初始游戲資源的請(qǐng)求消息;
[0071]S5,所述微端客戶端接收到該請(qǐng)求消息后,并行執(zhí)行以下兩步:
[0072]步驟1:所述微端客戶端將所述游戲加載界面推送給所述游戲進(jìn)程,所述游戲進(jìn)程顯示所述游戲加載界面;
[0073]S卩:在用戶初始啟示游戲時(shí),游戲界面為游戲進(jìn)程加載界面,防止游戲初始啟示時(shí)為空白界面,從而提高玩家游戲體驗(yàn)。
[0074]步驟2:包括:
[0075]S2.1:所述微端客戶端調(diào)用所述下載程序;
[0076]S2.2:所述下載程序基于所封裝的資源信息列表文件存儲(chǔ)路徑,下載到對(duì)應(yīng)的資源信息列表文件;其中,所下載到的資源信息列表文件為最新的資源信息列表文件;
[0077]S2.3:所述微端客戶端判斷自身緩存中是否存儲(chǔ)所述初始游戲資源;如果存在, 則從緩存中讀取到所述初始游戲資源,然后直接執(zhí)行S2.4-S2.11 ;如果不存在,則執(zhí)行 S2.7-S2.11 ;
[0078]本步驟的主要原理為:如果為第一次獲取某種游戲資源,則緩存中必然不存在該游戲資源,需要微端客戶端從微端服務(wù)器下載;如果在最近的某段時(shí)間已獲取過某種游戲資源,則微端客戶端會(huì)設(shè)置資源緩存生命周期,在該緩存生命周期內(nèi),該游戲資源會(huì)存在緩存中,此時(shí),不需要再次重新從微端服務(wù)器下載,而是可以直接從緩存中讀取到,從而提高微端客戶端得到某種游戲資源的時(shí)間;但是,在緩存對(duì)某種游戲資源進(jìn)行緩存的過程中,有可能該游戲資源在游戲資源池進(jìn)行了更新操作,因此,本發(fā)明中,引入了微端客戶端對(duì)從緩存中讀取到的游戲資源進(jìn)行驗(yàn)證的過程,即:基于校驗(yàn)碼的方式進(jìn)行驗(yàn)證,如果驗(yàn)證通過, 表明緩存中的該游戲資源為最新資源,微端客戶端可以直接將其推送給游戲進(jìn)程;而如果驗(yàn)證不通過,表明從緩存中讀取到的游戲資源為已過期資源,此時(shí),微端客戶端需要重新從游戲資源池下載相關(guān)的游戲資源,并更新緩存。
[0079]S2.4,所述微端客戶端計(jì)算緩存中存儲(chǔ)的所述初始游戲資源的校驗(yàn)碼,得到第二 fe驗(yàn)碼;
[0080]S2.5,所述微端客戶端通過讀取步驟2.2得到的所述資源信息列表文件,得到所述初始游戲資源的第一校驗(yàn)碼;
[0081]S2.6,所述微端客戶端判斷S2.4得到的所述第二校驗(yàn)碼與S2.5得到的所述第一校驗(yàn)碼是否相同,如果不相同,表明所述緩存中存儲(chǔ)的所述初始游戲資源為過時(shí)的游戲資源,然后,執(zhí)行S2.7 ;如果相同,則直接執(zhí)行S2.12 ;
[0082]S2.7,所述微端客戶端向所述微端服務(wù)器的游戲資源池請(qǐng)求下載所述初始游戲資源,并獲取到所述初始游戲資源;
[0083]S2.8,所述微端客戶端計(jì)算所述初始游戲資源的校驗(yàn)碼,得到第二校驗(yàn)碼;
[0084]S2.9,所述微端客戶端通過讀取步驟2.2得到的所述資源信息列表文件,得到所述初始游戲資源的第一校驗(yàn)碼;
[0085]S2.10,所述微端客戶端判斷S2.8得到的所述第二校驗(yàn)碼與S2.9得到的所述第一校驗(yàn)碼是否相同,如果不相同,表明所述微端客戶端在S2.8接收到的所述初始游戲資源存在損壞,則需再次執(zhí)行S2.7-S2.10,重新下載所述初始游戲資源;如果相同,則執(zhí)行S2.11 ;
[0086]S2.11,所述微端客戶端將所下載得到的所述初始游戲資源存入緩存中,然后,執(zhí)行 S2.12 ;
[0087]S2.12,所述微端客戶端將最新的所述初始游戲資源發(fā)送給所述游戲進(jìn)程;
[0088]S6,所述游戲進(jìn)程運(yùn)行所述初始游戲資源,完成游戲啟動(dòng)過程;
[0089]S7,在所述游戲進(jìn)程啟動(dòng)成功后,所述游戲進(jìn)程根據(jù)當(dāng)前時(shí)刻的游戲場(chǎng)景,推算出距離當(dāng)前時(shí)刻一定時(shí)間間隔內(nèi)所需的游戲資源,然后,向所述微端客戶端發(fā)送預(yù)下載所需游戲資源的請(qǐng)求消息;
[0090]S8,所述微端客戶端接收到該請(qǐng)求消息后,僅將S2.3-S2.12中的所述初始游戲資源替換為S7中所需的游戲資源,然后,循環(huán)執(zhí)行S2.3-S2.12,完成對(duì)所需的游戲資源進(jìn)行預(yù)下載的過程。
[0091]在上述過程中,第一校驗(yàn)碼和第二校驗(yàn)碼可均采用MD5校驗(yàn)碼。
[0092]由此可見,本發(fā)明中,在游戲運(yùn)行過程中,采用游戲資源預(yù)下載機(jī)制,S卩:在游戲進(jìn)程未推進(jìn)至需要相關(guān)資源之前,利用當(dāng)前時(shí)刻T1到對(duì)相關(guān)資源需求時(shí)刻T2之間的時(shí)間間隔,通過微端客戶端對(duì)相關(guān)資源進(jìn)行預(yù)下載,使游戲進(jìn)程運(yùn)行到對(duì)相關(guān)資源需求時(shí),能夠快速的獲取到相關(guān)游戲資源,從而保證游戲的正常運(yùn)行。
[0093]另外,通過本發(fā)明提供的校驗(yàn)碼驗(yàn)證機(jī)制,可保證微端客戶端獲取到最新的、完整的游戲資源,以防游戲客戶端使用出錯(cuò)的資源而引發(fā)問題甚至崩潰,提高游戲運(yùn)行安全性。
[0094]如圖1所示,本發(fā)明還提供一種微端引擎,包括微端服務(wù)器和微端客戶端;
[0095]所述微端服務(wù)器包括:
[0096]游戲資源池,用于存儲(chǔ)多個(gè)游戲運(yùn)行時(shí)所需的游戲資源;
[0097]更新模塊,用于定時(shí)對(duì)所述游戲資源池所存儲(chǔ)的各個(gè)游戲資源進(jìn)行更新操作;
[0098]資源信息列表文件,與唯一游戲ID對(duì)應(yīng),用于存儲(chǔ)該游戲ID運(yùn)行時(shí)所需的所有游戲資源對(duì)應(yīng)的游戲資源ID ;還存儲(chǔ)游戲資源ID和最新的第一校驗(yàn)碼的對(duì)應(yīng)關(guān)系;
[0099]所述微端客戶端包括:
[0100]資源存儲(chǔ)模塊,用于存儲(chǔ)游戲進(jìn)程運(yùn)行所需的初始化資源及緩存后下載獲取的游戲資源;其中,所述初始化資源包括:游戲加載界面、下載程序和與該游戲進(jìn)程對(duì)應(yīng)的資源信息列表文件存儲(chǔ)路徑
[0101]接收模塊,用于接收游戲進(jìn)程所發(fā)送的對(duì)游戲資源的請(qǐng)求消息;
[0102]多線程下載模塊,包括資源信息列表文件下載線程和游戲資源下載線程;
[0103]其中,所述資源信息列表文件下載線程用于:基于所述資源信息列表文件存儲(chǔ)路徑,下載到對(duì)應(yīng)的資源信息列表文件;其中,所下載到的資源信息列表文件為最新的資源信息列表文件;
[0104]所述游戲資源下載線程具體包括:
[0105]緩存查找模塊,用于當(dāng)接收到所述游戲進(jìn)程所發(fā)送的對(duì)游戲資源的請(qǐng)求消息時(shí), 判斷自身緩存中是否存儲(chǔ)所述游戲資源;
[0106]第一文件校驗(yàn)?zāi)K,用于當(dāng)所述緩存查找模塊查找到緩存中存儲(chǔ)有所述游戲資源時(shí),計(jì)算緩存中存儲(chǔ)的所述游戲資源的校驗(yàn)碼,得到第二校驗(yàn)碼;
[0107]再讀取所述資源信息列表文件下載線程下載到的所述資源信息列表文件,得到所述游戲資源的第一校驗(yàn)碼;然后比較所述第二校驗(yàn)碼和所述第一校驗(yàn)碼是否相同;
[0108]資源下載模塊,用于當(dāng)所述緩存查找模塊未在緩存中查找到所需的游戲資源時(shí), 或者,所述文件校驗(yàn)?zāi)K校驗(yàn)得到所述第二校驗(yàn)碼和所述第一校驗(yàn)碼不相同時(shí),從所述微端服務(wù)器下載所述游戲資源;
[0109]第二文件校驗(yàn)?zāi)K,用于對(duì)所述資源下載模塊下載得到的所述游戲資源進(jìn)行文件校驗(yàn),判斷下載得到的所述游戲資源是否為完整未損壞的游戲資源;如果否,則再次調(diào)用所述資源下載模塊,重新進(jìn)行游戲資源下載;如果是,則執(zhí)行后續(xù)的推送模塊;
[0110]推送模塊,用于當(dāng)所述緩存查找模塊查找到緩存中存在所述游戲資源,且該游戲資源通過所述第一文件校驗(yàn)?zāi)K的文件校驗(yàn)后,將校驗(yàn)通過的游戲資源推送給游戲進(jìn)程; 或者,用于將經(jīng)過所述第二文件校驗(yàn)?zāi)K校驗(yàn)通過后的游戲資源推送給游戲進(jìn)程。
[0111]綜上所述,本發(fā)明提供的游戲資源的在線加載方法及微端引擎具有以下優(yōu)點(diǎn):
[0112](1)將游戲運(yùn)行時(shí)所需的游戲資源從游戲客戶端中分離出來,并將游戲資源存儲(chǔ)于微端服務(wù)器中;從而降低了游戲客戶端的容量,方便對(duì)游戲客戶端分發(fā)部署;
[0113](2)采用一種特殊的游戲資源加載方法,既可有效保證游戲進(jìn)程所加載到的游戲資源的最新性和完整性,又能對(duì)相關(guān)資源進(jìn)行預(yù)下載,使游戲進(jìn)程運(yùn)行到對(duì)相關(guān)資源需求時(shí),能夠快速的獲取到相關(guān)游戲資源,從而保證游戲的正常運(yùn)行。
[0114]以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種游戲資源的在線加載方法,其特征在于,包括以下步驟:S1,創(chuàng)建微端引擎;其中,所述微端引擎包括微端客戶端和微端服務(wù)器;所述微端客戶 端和所述微端服務(wù)器為依賴網(wǎng)絡(luò)連接關(guān)系;所述微端服務(wù)器設(shè)置游戲資源池;其中,所述游戲資源池用于存儲(chǔ)多個(gè)游戲運(yùn)行時(shí)所 需的游戲資源;并且,所述微端服務(wù)器定時(shí)對(duì)所述游戲資源池所存儲(chǔ)的各個(gè)游戲資源進(jìn)行 更新操作;S2,所述微端服務(wù)器還配置與每一個(gè)游戲ID唯一對(duì)應(yīng)的資源信息列表文件;其中,所 述資源信息列表文件用于存儲(chǔ)游戲資源ID和最新的第一校驗(yàn)碼的對(duì)應(yīng)關(guān)系;所述資源信 息列表文件所存儲(chǔ)的所有游戲資源ID所對(duì)應(yīng)的游戲資源即為該游戲運(yùn)行時(shí)所需的所有游 戲資源;另外,所述微端服務(wù)器通過以下方式計(jì)算得到并維護(hù)所述第一校驗(yàn)碼:S2.1,初始時(shí),所述微端服務(wù)器查找所述游戲資源池,得到與所述游戲資源ID對(duì)應(yīng)的 游戲資源;S2.2,所述微端服務(wù)器計(jì)算所得到的所述游戲資源的第一校驗(yàn)碼;S2.3,所述微端服務(wù)器存儲(chǔ)所述游戲資源ID和第一校驗(yàn)碼的對(duì)應(yīng)關(guān)系;52,4,每當(dāng)所述游戲資源池所存儲(chǔ)的所述游戲資源進(jìn)行更新時(shí),所述微端服務(wù)器重新 計(jì)算該游戲資源的第一校驗(yàn)碼,得到最新的第一校驗(yàn)碼,并更新所述資源信息列表文件,使 所述游戲資源池所存儲(chǔ)的第一校驗(yàn)碼均為最新的第一校驗(yàn)碼;53,游戲客戶端封裝游戲進(jìn)程和微端客戶端;其中,所述游戲進(jìn)程通過所述微端客戶 端與所述微端服務(wù)器建立通信連接;所述微端客戶端封裝該游戲進(jìn)程運(yùn)行所需的初始化資 源;所述初始化資源包括:游戲加載界面、下載程序和與該游戲進(jìn)程對(duì)應(yīng)的資源信息列表 文件存儲(chǔ)路徑;54,在所述游戲進(jìn)程初始化啟動(dòng)過程中,所述游戲進(jìn)程向所述微端客戶端發(fā)送初始游 戲資源的請(qǐng)求消息;55,所述微端客戶端接收到該請(qǐng)求消息后,并行執(zhí)行以下兩步:步驟1:所述微端客戶端將所述游戲加載界面推送給所述游戲進(jìn)程,所述游戲進(jìn)程顯 示所述游戲加載界面;步驟2:包括:S2.1:所述微端客戶端調(diào)用所述下載程序;S2.2:所述下載程序基于所封裝的資源信息列表文件存儲(chǔ)路徑,下載到對(duì)應(yīng)的資源信 息列表文件;其中,所下載到的資源信息列表文件為最新的資源信息列表文件;S2.3:所述微端客戶端判斷自身緩存中是否存儲(chǔ)所述初始游戲資源;如果存在,則 從緩存中讀取到所述初始游戲資源,然后直接執(zhí)行S2.4-S2.11 ;如果不存在,則執(zhí)行 S2.7-S2.11 ;S2.4,所述微端客戶端計(jì)算緩存中存儲(chǔ)的所述初始游戲資源的校驗(yàn)碼,得到第二校驗(yàn) 碼;S2.5,所述微端客戶端通過讀取步驟2.2得到的所述資源信息列表文件,得到所述初 始游戲資源的第一校驗(yàn)碼;S2.6,所述微端客戶端判斷S2.4得到的所述第二校驗(yàn)碼與S2.5得到的所述第一校驗(yàn)碼是否相同,如果不相同,表明所述緩存中存儲(chǔ)的所述初始游戲資源為過時(shí)的游戲資源,然 后,執(zhí)行S2.7 ;如果相同,則直接執(zhí)行S2.12 ;S2.7,所述微端客戶端向所述微端服務(wù)器的游戲資源池請(qǐng)求下載所述初始游戲資源, 并獲取到所述初始游戲資源;S2.8,所述微端客戶端計(jì)算所述初始游戲資源的校驗(yàn)碼,得到第二校驗(yàn)碼;S2.9,所述微端客戶端通過讀取步驟2.2得到的所述資源信息列表文件,得到所述初 始游戲資源的第一校驗(yàn)碼;S2.10,所述微端客戶端判斷S2.8得到的所述第二校驗(yàn)碼與S2.9得到的所述第一校驗(yàn) 碼是否相同,如果不相同,表明所述微端客戶端在S2.8接收到的所述初始游戲資源存在損 壞,則需再次執(zhí)行S2.7-S2.10,重新下載所述初始游戲資源;如果相同,則執(zhí)行S2.11 ;S2.11,所述微端客戶端將所下載得到的所述初始游戲資源存入緩存中,然后,執(zhí)行 S2.12 ;S2.12,所述微端客戶端將最新的所述初始游戲資源發(fā)送給所述游戲進(jìn)程;56,所述游戲進(jìn)程運(yùn)行所述初始游戲資源,完成游戲啟動(dòng)過程;57,在所述游戲進(jìn)程啟動(dòng)成功后,所述游戲進(jìn)程根據(jù)當(dāng)前時(shí)刻的游戲場(chǎng)景,推算出距離 當(dāng)前時(shí)刻一定時(shí)間間隔內(nèi)所需的游戲資源,然后,向所述微端客戶端發(fā)送預(yù)下載所需游戲 資源的請(qǐng)求消息;58,所述微端客戶端接收到該請(qǐng)求消息后,僅將S2.3-S2.12中的所述初始游戲資源替 換為S7中所需的游戲資源,然后,循環(huán)執(zhí)行S2.3-S2.12,完成對(duì)所需的游戲資源進(jìn)行預(yù)下 載的過程。2.根據(jù)權(quán)利要求1所述的游戲資源的在線加載方法,其特征在于,所述第一校驗(yàn)碼和 所述第二校驗(yàn)碼均為MD5校驗(yàn)碼。3.—種微端引擎,其特征在于,包括微端服務(wù)器和微端客戶端;所述微端服務(wù)器包括:游戲資源池,用于存儲(chǔ)多個(gè)游戲運(yùn)行時(shí)所需的游戲資源;更新模塊,用于定時(shí)對(duì)所述游戲資源池所存儲(chǔ)的各個(gè)游戲資源進(jìn)行更新操作;資源信息列表文件,與唯一游戲ID對(duì)應(yīng),用于存儲(chǔ)該游戲ID運(yùn)行時(shí)所需的所有游戲資 源對(duì)應(yīng)的游戲資源ID ;還存儲(chǔ)游戲資源ID和最新的第一校驗(yàn)碼的對(duì)應(yīng)關(guān)系;所述微端客戶端包括:資源存儲(chǔ)模塊,用于存儲(chǔ)游戲進(jìn)程運(yùn)行所需的初始化資源及緩存后下載獲取的游戲資 源;其中,所述初始化資源包括:游戲加載界面、下載程序和與該游戲進(jìn)程對(duì)應(yīng)的資源信息 列表文件存儲(chǔ)路徑接收模塊,用于接收游戲進(jìn)程所發(fā)送的對(duì)游戲資源的請(qǐng)求消息;多線程下載模塊,包括資源信息列表文件下載線程和游戲資源下載線程;其中,所述資源信息列表文件下載線程用于:基于所述資源信息列表文件存儲(chǔ)路徑,下 載到對(duì)應(yīng)的資源信息列表文件;其中,所下載到的資源信息列表文件為最新的資源信息列 表文件;所述游戲資源下載線程具體包括:緩存查找模塊,用于當(dāng)接收到所述游戲進(jìn)程所發(fā)送的對(duì)游戲資源的請(qǐng)求消息時(shí),判斷自身緩存中是否存儲(chǔ)所述游戲資源;第一文件校驗(yàn)?zāi)K,用于當(dāng)所述緩存查找模塊查找到緩存中存儲(chǔ)有所述游戲資源時(shí), 計(jì)算緩存中存儲(chǔ)的所述游戲資源的校驗(yàn)碼,得到第二校驗(yàn)碼;再讀取所述資源信息列表文件下載線程下載到的所述資源信息列表文件,得到所述游 戲資源的第一校驗(yàn)碼;然后比較所述第二校驗(yàn)碼和所述第一校驗(yàn)碼是否相同;資源下載模塊,用于當(dāng)所述緩存查找模塊未在緩存中查找到所需的游戲資源時(shí),或者, 所述文件校驗(yàn)?zāi)K校驗(yàn)得到所述第二校驗(yàn)碼和所述第一校驗(yàn)碼不相同時(shí),從所述微端服務(wù) 器下載所述游戲資源;第二文件校驗(yàn)?zāi)K,用于對(duì)所述資源下載模塊下載得到的所述游戲資源進(jìn)行文件校 驗(yàn),判斷下載得到的所述游戲資源是否為完整未損壞的游戲資源;如果否,則再次調(diào)用所述 資源下載模塊,重新進(jìn)行游戲資源下載;如果是,則執(zhí)行后續(xù)的推送模塊;推送模塊,用于當(dāng)所述緩存查找模塊查找到緩存中存在所述游戲資源,且該游戲資源 通過所述第一文件校驗(yàn)?zāi)K的文件校驗(yàn)后,將校驗(yàn)通過的游戲資源推送給游戲進(jìn)程;或者, 用于將經(jīng)過所述第二文件校驗(yàn)?zāi)K校驗(yàn)通過后的游戲資源推送給游戲進(jìn)程。
【文檔編號(hào)】G06F9/44GK105988809SQ201510083464
【公開日】2016年10月5日
【申請(qǐng)日】2015年2月13日
【發(fā)明人】錢峰
【申請(qǐng)人】廣州四三九九信息科技有限公司