本發(fā)明涉及一種多游戲管理與版本控制方法及裝置。
背景技術(shù):
目前,游戲管理和版本控制沒有相應(yīng)的規(guī)范,例如一種支持3D的HTML5游戲加速器產(chǎn)品沒有游戲管理和版本控制的功能,游戲數(shù)據(jù)松散、難以進(jìn)行數(shù)據(jù)管理和版本控制。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)本發(fā)明實(shí)施例提供的技術(shù)方案解決的技術(shù)問題是多游戲管理與版本控制問題。
根據(jù)本發(fā)明實(shí)施例提供的一種多游戲管理與版本控制方法,包括:
本地版本管理和控制模塊在監(jiān)測(cè)到用戶啟動(dòng)游戲時(shí),從遠(yuǎn)程服務(wù)器獲取所述游戲的游戲參數(shù);
根據(jù)所述游戲參數(shù),判斷本地是否存在所述游戲的游戲文件夾;
若本地存在所述游戲的游戲文件夾,則在確定所述游戲文件夾中保存的所述游戲數(shù)據(jù)不是最新版本時(shí),從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù),保存至所述游戲文件夾;
若本地不存在所述游戲的游戲文件夾,則創(chuàng)建所述游戲的游戲文件夾,并從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù),保存至所述游戲文件夾。
優(yōu)選地,所述從遠(yuǎn)程服務(wù)器獲取的所述游戲的游戲參數(shù)包括游戲ID和遠(yuǎn)程下載地址。
優(yōu)選地,所述的根據(jù)游戲參數(shù),判斷本地是否存在所述游戲的游戲文件夾的步驟包括:
所述本地版本管理和控制模塊查詢本地是否存在以所述游戲ID為文件名的文件夾;
若找到本地存在以所述游戲ID為文件名的文件夾,則判斷本地存在所述游戲的游戲文件夾,否則判斷本地不存在所述游戲的游戲文件夾。
優(yōu)選地,通過以下步驟確定所述游戲文件夾中保存的所述游戲數(shù)據(jù)不是最新版本:
將所述游戲文件夾的游戲版本文件中的遠(yuǎn)程下載地址與從所述遠(yuǎn)程服務(wù)器獲取的遠(yuǎn)程下載地址進(jìn)行比較;
若兩者不一致,則確定所述游戲文件夾中保存的所述游戲數(shù)據(jù)不是最新版本。
優(yōu)選地,所述的從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù)的步驟包括:
通過從所述遠(yuǎn)程服務(wù)器獲取的遠(yuǎn)程下載地址,從所述遠(yuǎn)程服務(wù)器下載最新版本的游戲包;
對(duì)所述最新版本的游戲包進(jìn)行解壓,得到最新版本的游戲數(shù)據(jù)。
優(yōu)選地,所述從遠(yuǎn)程服務(wù)器獲取的所述游戲的游戲參數(shù)還包括游戲包解碼密碼。
優(yōu)選地,所述的從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù)的步驟包括:
通過從所述遠(yuǎn)程服務(wù)器獲取的遠(yuǎn)程下載地址,從所述遠(yuǎn)程服務(wù)器下載最新版本的加密游戲包;
利用所述游戲包解碼密碼,對(duì)所述加密游戲包進(jìn)行解碼,得到解碼后的游戲包;
對(duì)所述解碼后的游戲包進(jìn)行解壓,得到最新版本的游戲數(shù)據(jù)。
優(yōu)選地,所述的利用所述游戲包解碼密碼,對(duì)所述加密游戲包進(jìn)行解碼,得到解碼后的游戲包的步驟包括:
將所述游戲包解碼密碼和預(yù)定關(guān)鍵字進(jìn)行組合,得到組合字符串;
將所述組合字符串輸入至MD5碼生成器,得到所述組合字符串的MD5碼作為有效解碼密碼;
利用所述有效解碼密碼,對(duì)所述加密游戲包進(jìn)行解碼,得到解碼后的游戲包。
優(yōu)選地,還包括:
將所述從所述遠(yuǎn)程服務(wù)器獲取的遠(yuǎn)程下載地址寫入所述游戲文件夾的游戲版本文件中。
根據(jù)本發(fā)明實(shí)施例提供的存儲(chǔ)介質(zhì),其存儲(chǔ)用于實(shí)現(xiàn)上述多游戲管理與版本控制方法的程序。
根據(jù)本發(fā)明實(shí)施例提供的一種多游戲管理與版本控制裝置,包括:
獲取單元,用于在監(jiān)測(cè)到用戶啟動(dòng)游戲時(shí),從遠(yuǎn)程服務(wù)器獲取所述游戲的游戲參數(shù);
判斷單元,用于根據(jù)所述游戲參數(shù),判斷本地是否存在所述游戲的游戲文件夾;
控制單元,若本地存在所述游戲的游戲文件夾,則在確定所述游戲文件夾中保存的所述游戲數(shù)據(jù)不是最新版本時(shí),從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù),保存至所述游戲文件夾,若本地不存在所述游戲的游戲文件夾,則創(chuàng)建所述游戲的游戲文件夾,并從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù),保存至所述游戲文件夾。
本發(fā)明實(shí)施例提供的技術(shù)方案具有如下有益效果:
本發(fā)明能夠隔離多個(gè)游戲的數(shù)據(jù),便于游戲數(shù)據(jù)管理和版本控制。
附圖說明
圖1是本發(fā)明實(shí)施例提供的多游戲管理與版本控制方法框圖;
圖2是本發(fā)明實(shí)施例提供的多游戲管理與版本控制裝置框圖;
圖3是本發(fā)明實(shí)施例提供的多游戲管理與版本控制流程圖;
圖4是本發(fā)明實(shí)施例提供的新游戲處理流程圖;
圖5是本發(fā)明實(shí)施例提供的原有游戲的更新流程圖;
圖6是本發(fā)明實(shí)施例提供的加密游戲包解碼流程圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)說明,應(yīng)當(dāng)理解,以下所說明的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
圖1是本發(fā)明實(shí)施例提供的多游戲管理與版本控制方法框圖,如圖1所示,步驟包括:
步驟S101:本地版本管理和控制模塊在監(jiān)測(cè)到用戶啟動(dòng)游戲時(shí),從遠(yuǎn)程服務(wù)器獲取所述游戲的游戲參數(shù)。
所述從遠(yuǎn)程服務(wù)器獲取的所述游戲的游戲參數(shù)包括游戲ID和遠(yuǎn)程下載地址,還可以進(jìn)一步包括游戲包解碼密碼。
本實(shí)施例以游戲ID為游戲唯一標(biāo)識(shí)來區(qū)分不同游戲,給每一個(gè)游戲分配一個(gè)以該游戲的游戲ID為名字的文件夾,該游戲的所有相關(guān)信息都在此文件夾下。
步驟S102:根據(jù)所述游戲參數(shù),判斷本地是否存在所述游戲的游戲文件夾。
所述本地版本管理和控制模塊查詢本地是否存在以所述游戲ID為文件名的文件夾,若找到本地存在以所述游戲ID為文件名的文件夾,則判斷本地存在所述游戲的游戲文件夾,否則判斷本地不存在所述游戲的游戲文件夾。
步驟S103:根據(jù)判斷結(jié)果,確定是否創(chuàng)建游戲文件夾,并根據(jù)版本情況,從遠(yuǎn)程服務(wù)器獲取最新版本游戲數(shù)據(jù),保存至所述游戲文件夾。具體地說,若本地存在所述游戲的游戲文件夾,則將所述游戲文件夾的游戲版本文件中的遠(yuǎn)程下載地址與從所述遠(yuǎn)程服務(wù)器獲取的遠(yuǎn)程下載地址進(jìn)行比較,若兩者不一致,則確定所述游戲文件夾中保存的所述游戲數(shù)據(jù)不是最新版本,此時(shí)從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù),保存至所述游戲文件夾,否則創(chuàng)建所述游戲的游戲文件夾,并從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù),保存至所述游戲文件夾。
其中,通過從所述遠(yuǎn)程服務(wù)器獲取的遠(yuǎn)程下載地址,從所述遠(yuǎn)程服務(wù)器下載最新版本的游戲包,通過對(duì)所述最新版本的游戲包進(jìn)行解壓,得到最新版本的游戲數(shù)據(jù)。
作為另一實(shí)施例,若從所述遠(yuǎn)程服務(wù)器下載最新版本的游戲包為加密游戲包,利用所述游戲包解碼密碼,對(duì)所述加密游戲包進(jìn)行解碼,得到解碼后的游戲包。具體地說,將所述游戲包解碼密碼和預(yù)定關(guān)鍵字進(jìn)行組合,得到組合字符串,然后將所述組合字符串輸入至MD5碼生成器,得到所述組合字符串的MD5碼作為有效解碼密碼,最后利用所述有效解碼密碼,對(duì)所述加密游戲包進(jìn)行解碼,得到解碼后的游戲包。
在得到最新版本的游戲數(shù)據(jù)之后,將所述從所述遠(yuǎn)程服務(wù)器獲取的遠(yuǎn)程下載地址寫入所述游戲文件夾的游戲版本文件中。
本實(shí)施例具有對(duì)多個(gè)游戲的管理和版本控制能力,可以應(yīng)用于支持3D的HTML5游戲加速器中,例如Egret Runtime。Egret Runtime用于解決低端機(jī)對(duì)HTML5標(biāo)準(zhǔn)支持不佳、體驗(yàn)差的弊端,通過適配不同的系統(tǒng)使HTML5游戲效果媲美原生游戲,支持使用Egret Engine開發(fā)的應(yīng)用。
本領(lǐng)域普通技術(shù)人員可以理解,實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲(chǔ)于計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括步驟S101至步驟S103。其中,所述的存儲(chǔ)介質(zhì)可以為ROM/RAM、磁碟、光盤等。
圖2是本發(fā)明實(shí)施例提供的多游戲管理與版本控制裝置框圖,如圖2所示,包括:
獲取單元10,用于在監(jiān)測(cè)到用戶啟動(dòng)游戲時(shí),從遠(yuǎn)程服務(wù)器獲取所述游戲的游戲參數(shù)。
判斷單元20,用于根據(jù)所述游戲參數(shù),判斷本地是否存在所述游戲的游戲文件夾。
控制單元30,若本地存在所述游戲的游戲文件夾,則在確定所述游戲文件夾中保存的所述游戲數(shù)據(jù)不是最新版本時(shí),從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù),保存至所述游戲文件夾,若本地不存在所述游戲的游戲文件夾,則創(chuàng)建所述游戲的游戲文件夾,并從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù),保存至所述游戲文件夾。
所述裝置的工作流程包括:獲取單元10在監(jiān)測(cè)到用戶啟動(dòng)游戲時(shí),從遠(yuǎn)程服務(wù)器獲取所述游戲的游戲參數(shù),例如游戲ID、遠(yuǎn)程下載地址和游戲包解碼密碼。判斷單元20查詢本地存在以所述游戲ID為文件名的文件夾時(shí),判斷本地存在所述游戲的游戲文件夾,此時(shí)控制單元30將所述游戲文件夾的游戲版本文件中的遠(yuǎn)程下載地址與從所述遠(yuǎn)程服務(wù)器獲取的遠(yuǎn)程下載地址進(jìn)行比較,若兩者不一致,說明所述游戲文件夾中保存的所述游戲數(shù)據(jù)不是最新版本,需要從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù),控制單元30從遠(yuǎn)程下載地址下載最新版本的游戲包,并利用游戲包解碼密碼對(duì)所下載的游戲包解碼,并將解碼后的游戲包解壓至所述游戲文件夾。判斷單元20查詢本地不存在以所述游戲ID為文件名的文件夾時(shí),判斷本地不存在所述游戲的游戲文件夾,此時(shí)控制單元30創(chuàng)建所述游戲的游戲文件夾,并需要從所述遠(yuǎn)程服務(wù)器獲取最新版本的游戲數(shù)據(jù),控制單元30從遠(yuǎn)程下載地址下載最新版本的游戲包,并利用游戲包解碼密碼對(duì)所下載的游戲包解碼,并將解碼后的游戲包解壓至所述游戲文件夾。控制單元30在解碼解壓處理后,刪除所下載的游戲包,并將遠(yuǎn)程下載地址寫入所述游戲文件夾的游戲版本文件中。
作為另一種實(shí)施例,若獲取單元10未得到游戲包解碼密碼,或得到的游戲包解碼密碼為空字符串,則控制單元30將所下載的游戲包直接解壓至所述游戲文件夾即可。
圖3是本發(fā)明實(shí)施例提供的多游戲管理與版本控制流程圖,如圖3所述,具體步驟如下:
步驟S201:游戲啟動(dòng)時(shí),傳入來自游戲服務(wù)器的操作參數(shù),例如游戲ID、游戲包的遠(yuǎn)程下載地址、游戲包解碼密碼(游戲包)。
以一款支持3D的HTML5游戲加速器Egret Runtime產(chǎn)品為例,本本發(fā)明的方法和裝置可以作為Egret Runtime產(chǎn)品的一個(gè)功能模塊。EgretRuntime的使用者通過把EgretRuntime的加載器(一個(gè)開源免費(fèi)的程序庫)嵌入到應(yīng)用中,實(shí)現(xiàn)EgretRuntime接入。應(yīng)用通過EgretRuntime的加載器來下載和啟動(dòng)EgretRuntime。當(dāng)應(yīng)用啟動(dòng)EgretRuntime時(shí),傳入上述操作參數(shù)。
步驟S202:判斷是否存在以游戲ID為文件名的文件夾,若存在則執(zhí)行步驟S203,否則執(zhí)行步驟S204。
對(duì)于新游戲:新游戲是指本地并沒有這個(gè)游戲。游戲是以游戲ID來區(qū)分。每個(gè)游戲有一個(gè)以游戲ID為文件名的文件夾。如果一個(gè)游戲的ID為A,經(jīng)查詢,本地并沒有文件名為A的文件夾,則該游戲是新游戲,執(zhí)行新游戲處理流程。
對(duì)于已有游戲:如果本地有一個(gè)以游戲ID為文件名的文件夾,執(zhí)行已有游戲處理流程。
步驟S203:檢查游戲版本,判斷遠(yuǎn)程游戲版本是否和現(xiàn)有版本一致,若一致,則執(zhí)行步驟S210,否則執(zhí)行步驟S205。
具體地說,比較版本文件中的遠(yuǎn)程下載地址和傳入的遠(yuǎn)程下載地址,若兩者一致,則判斷遠(yuǎn)程游戲版本和現(xiàn)有版本一致,否則判斷遠(yuǎn)程游戲版本和現(xiàn)有版本不一致。
對(duì)于已有游戲,首先在游戲服務(wù)器上查詢?cè)撚螒蚴欠裼行掳姹?,如果沒有新版本,則直接啟動(dòng),如果有新版本,則說明游戲需要更新,則下載新版本并覆蓋當(dāng)前版本,然后記錄新版本的信息。
步驟S204:創(chuàng)建以游戲ID為文件名的文件夾,再次文件夾下創(chuàng)建名稱為“game”的文件夾,形成游戲文件夾,路徑為“/<游戲ID>/game/”。
對(duì)于新游戲,本實(shí)施例需要新建一個(gè)以此游戲ID為文件名的文件夾,以便后續(xù)將游戲部署到該文件夾下,并記錄好版本信息,啟動(dòng)游戲。
步驟S205:下載游戲包,具體地說,將游戲包下載到游戲文件夾下,并以當(dāng)前毫秒數(shù)作為文件名。
步驟S206:判斷是否有游戲包解碼密碼,或者判斷游戲包解碼密碼是否為空字符串,若是則執(zhí)行步驟S207,否則執(zhí)行步驟S208。
步驟S207:對(duì)下載的游戲包進(jìn)行解碼,得到解碼后的游戲包。
步驟S208:對(duì)解碼后的游戲包解壓到游戲文件夾下,如果游戲文件夾下有同名文件,則覆蓋該同名文件,然后刪除游戲包。
步驟S209:把游戲下載地址寫入版本文件中。
步驟S210:結(jié)束流程。
也就是說,本實(shí)施例通過以下幾個(gè)步驟來完成對(duì)游戲的管理和版本控制:
1.接受操作參數(shù)(即游戲參數(shù))
游戲啟動(dòng)時(shí),傳入游戲ID、游戲包的遠(yuǎn)程下載地址,還可以傳入游戲包解碼密碼(游戲包)。
2.建立游戲文件夾
以游戲ID為文件夾名,并在此目錄下面建立名為game的文件夾,作為游戲文件夾,用于存放游戲本身。然后直接執(zhí)行步驟4。
例如游戲ID為gameId100,那么,最終目錄為:/gameId100/game/。如果游戲文件夾存在,不會(huì)重復(fù)創(chuàng)建,此時(shí)跳過此步驟。
3.檢查游戲版本
游戲版本信息會(huì)存儲(chǔ)在游戲文件夾下名為game_code_version的文件中。如果game_code_version不存在,則新建一個(gè)空的game_code_version文件,并把游戲遠(yuǎn)程下載地址按照一定的格式(例如以UTF-8格式)的字符寫入該文件,然后繼續(xù)步驟4。如果game_code_version文件存在,以UTF-8格式讀取文件內(nèi)容,與當(dāng)前的游戲遠(yuǎn)程下載地址對(duì)比,如果一致,結(jié)束整個(gè)流程。如果不一致,繼續(xù)下面的步驟。
4.下載游戲包
游戲包支持2種格式:1.標(biāo)準(zhǔn)zip格式的文件。2.按照規(guī)定方式編碼的文件。從游戲包遠(yuǎn)程下載地址下載游戲包,下載于游戲文件夾下,并且以當(dāng)前系統(tǒng)的毫秒(miniseconds)數(shù)字為文件名。
例如,當(dāng)前的毫秒數(shù)字是123456,那么,下載的文件為/gameId100/game/123456。
需要說明的是,在計(jì)算機(jī)系統(tǒng)里,毫秒數(shù)字一般是指從世界標(biāo)準(zhǔn)時(shí)間1970年1月1日00:00:00.0時(shí)開始到當(dāng)前時(shí)間為止,經(jīng)歷的毫秒數(shù)。
5.對(duì)游戲包解碼
判斷傳入的游戲包解碼密碼是否為空字符串。如果為空字符串,則直接進(jìn)行下一步。如果不是空字符串,需要先對(duì)游戲包解碼,得到標(biāo)準(zhǔn)zip格式的游戲包。
6.解壓游戲包
最終的游戲包是標(biāo)準(zhǔn)zip格式的,按照zip規(guī)范對(duì)其進(jìn)行解壓。解壓到游戲文件夾下。如果游戲文件夾已經(jīng)存在同名文件,會(huì)覆蓋同名文件。最后刪除游戲包。
7.記錄版本信息
把游戲遠(yuǎn)程下載地址寫入版本文件game_code_version,所述版本文件位于游戲文件夾下/gameId100/game/game_code_version。
圖4是本發(fā)明實(shí)施例提供的新游戲處理流程圖,如圖4所示,步驟包括:
步驟S301:接收到參數(shù)信息,包括:游戲ID為gameId22;游戲包地址為http://egret_games/game22_v1.zip;游戲包解碼密碼為aes123456。
步驟S302:沒有發(fā)現(xiàn)名為gameId22的文件夾,此時(shí)建立游戲文件夾:/gameId22/game/。
步驟S303:下載游戲包(game22_v1.zip)到游戲文件夾,并命名為當(dāng)前的毫秒數(shù),假設(shè)當(dāng)前毫秒數(shù)為6789,則下載的游戲包路徑為/gameId22/game/6789。
步驟S304:對(duì)游戲包解碼,解碼后的文件仍然命名為6789。
步驟S305:解壓游戲包。
將游戲包6789解壓到游戲文件夾:/gameId22/game/game22,并刪除游戲包/gameId22/game/6789。
步驟S306:在游戲文件夾中生成版本文件:/gameId22/game/game_code_version,把http://egret_games/game22_v1.zip以UTF-8編碼格式寫入此文件。
步驟S307:結(jié)束流程。
圖5是本發(fā)明實(shí)施例提供的原有游戲的更新流程圖,如圖5所示,步驟包括:
步驟S401:接收到參數(shù)信息。包括:游戲ID:gameId22;游戲包地址:http://egret_games/game22_v1.zip;游戲包解碼密碼:aes123456。
步驟S402:發(fā)現(xiàn)名為gameId22的文件夾。
步驟S403:讀取/gameId22/game/game_code_version文件得到:http://egret_games/game22_v1.zip字符串,將所得到的字符串與步驟S401中的http://egret_games/game22_v2.zip比較,發(fā)現(xiàn)兩個(gè)不同,表示需要更新游戲。
步驟S404:將游戲包(game22_v2.zip)下載到游戲文件夾,并命名為當(dāng)前的毫秒數(shù),假設(shè)現(xiàn)在毫秒數(shù)為9876,則路徑為/gameId22/game/9876。
步驟S405:解碼游戲包,解碼后的包名仍然為9876,路徑為/gameId22/game/9876。
步驟S406:將游戲包9876解壓到游戲文件夾,若有同名文件或文件夾則覆蓋原文件,即覆蓋/gameId22/game/game22,然后刪除游戲包/gameId22/game/9876。
步驟S407:生成新的版本文件game_code_version,把http://egret_games/game22_v2.zip以UTF-8編碼格式寫入該文件,覆蓋原版本文件/gameId22/game/game_code_version。
步驟S408:結(jié)束流程。
在上述實(shí)施例中,對(duì)應(yīng)于游戲包的編碼格式,可以采用不同的解碼算法,即根據(jù)游戲包編碼格式,間接或直接采用游戲包解碼密碼對(duì)游戲包進(jìn)行解碼處理。
圖6是本發(fā)明實(shí)施例提供的加密游戲包解碼流程圖,本實(shí)施例以白鷺公司產(chǎn)品EgretWing生成的游戲包為例,進(jìn)一步說明間接采用游戲包解碼密碼進(jìn)行游戲包解碼的流程,如圖6所示,步驟包括:
步驟S501:得到游戲包解碼密碼12345。
具體產(chǎn)生過程如下:
(1)使用EgretWing開發(fā)產(chǎn)品(即游戲)的用戶,在發(fā)布游戲包時(shí)會(huì)填寫密碼作為誘導(dǎo)密碼,也即后續(xù)解碼時(shí)使用的游戲包解碼密碼(如:12345)。
(2)EgretWing先把產(chǎn)品數(shù)據(jù)打包為zip文件。
(3)EgretWing用12345與預(yù)定關(guān)鍵字keys組合得到12345keys.
(4)EgretWing把12345keys提交給md5生成器得到12345keys的MD5碼(比如是:abcde)。
(5)以此md5碼abcde為加密用密碼對(duì)zip文件進(jìn)行AES加密。最后得到一個(gè)加密文件就是游戲包。
其中,本實(shí)施例的誘導(dǎo)密碼是開發(fā)產(chǎn)品的用戶自己設(shè)置的,是不能直接用于解碼游戲包的一串字符。
步驟S502:將游戲包解碼密碼與約定關(guān)鍵字組合,得到新密碼串(即組合字符串)。
例如,將12345與約定關(guān)鍵字keys組合得到12345keys。
其中,約定關(guān)鍵字是白鷺時(shí)代內(nèi)部約定好的一串字符。EgretWing會(huì)用這個(gè)關(guān)鍵字來加密游戲包。本實(shí)施例使用這個(gè)關(guān)鍵字來生成有效的解碼用密碼串。約定關(guān)鍵字對(duì)外是不公開的。
步驟S503:利用獲得的新密碼串,計(jì)算MD5碼,即得到新密碼串的MD5碼,得到12345keys的md5碼abcde。
把12345keys提交給md5碼生成器,得到12345keys的md5碼。
步驟S504:以此MD5碼為密碼,對(duì)游戲包按AES解碼,得到標(biāo)準(zhǔn)ZIP格式的解碼后的游戲包。
以abcde為密碼,對(duì)game22_v1以AES解碼,得到game22_v1.zip。
MD5算法用于對(duì)給出的數(shù)據(jù)(數(shù)據(jù)長(zhǎng)度不限)做計(jì)算,得到一串固定長(zhǎng)度的字符串。同一組數(shù)據(jù),每次得到的MD5碼都是一樣的。不管數(shù)據(jù)有多長(zhǎng)或者多短,這串?dāng)?shù)據(jù)中只要有變化,最后得到的MD5碼都不一樣。所以,MD5值通常是用來校驗(yàn)信息的完整性的。
本實(shí)施例針對(duì)是EgretWing生成的加密游戲包,目前約定好的是以AES加密后的zip文件。即:EgretWing先生成沒有加密過的zip文件,EgretWing再對(duì)這個(gè)zip文件進(jìn)行AES加密。所以,本實(shí)施例只適用于被AES加密后的zip文件。
例如,游戲開發(fā)者A通過開發(fā)加密游戲包的裝置EgretWing開發(fā)游戲,將所開發(fā)的游戲按照ZIP格式進(jìn)行壓縮,得到白鷺游戲包,并填寫誘導(dǎo)密碼。EgretWing將游戲開發(fā)者A填寫的誘導(dǎo)密碼和約定的關(guān)鍵字組合,得到組合字符串,并通過MD5算法,得到組合字符串的MD5碼作為有效加密密碼,并利用該有效加密密碼對(duì)白鷺游戲包進(jìn)行加密處理,得到白鷺加密游戲包。游戲開發(fā)者A發(fā)布其開發(fā)的游戲包時(shí),將白鷺加密游戲包和其填寫的誘導(dǎo)密碼保存在游戲服務(wù)器上,并發(fā)布該游戲。
游戲玩家B通過安裝在用戶終端上的游戲客戶端,點(diǎn)擊游戲圖標(biāo),啟動(dòng)該白鷺加密游戲包。游戲客戶端通過網(wǎng)絡(luò)從游戲服務(wù)器獲取該游戲的誘導(dǎo)密碼,并將該游戲的誘導(dǎo)密碼送入安裝在用戶終端上的具有關(guān)鍵字的多游戲管理與版本控制裝置,從而將收到的誘導(dǎo)密碼和關(guān)鍵字(多游戲管理與版本控制裝置與Egret Wing之間約定的關(guān)鍵字)進(jìn)行組合,得到組合字符串,并通過MD5算法,得到組合字符串的MD5碼作為有效解碼密碼,并利用該有效解碼密碼對(duì)白鷺游戲包進(jìn)行解碼處理,得到解碼后的ZIP格式的白鷺游戲包。
對(duì)于直接采用游戲包解碼密碼對(duì)游戲包進(jìn)行解碼處理的方式,若加密時(shí)直接采用誘導(dǎo)密碼以AES方式對(duì)ZIP格式的游戲包進(jìn)行加密,則在解碼時(shí)可以直接采用該誘導(dǎo)密碼(即游戲包解碼密碼)以AES方式對(duì)ZIP格式的游戲包進(jìn)行解碼處理。
綜上所述,本發(fā)明的實(shí)施例具有以下技術(shù)效果:
1、本發(fā)明通過游戲ID來管理各個(gè)游戲,與每個(gè)游戲的所有相關(guān)信息都保存于以游戲ID為名稱的文件夾下,達(dá)到“隔離多個(gè)游戲的數(shù)據(jù)”、“集中游戲數(shù)據(jù)”和“便于游戲管理”的目的;
2、本發(fā)明以特有的版本管理方式達(dá)到“方便獲取游戲版本更新信息”和“可以對(duì)游戲做版本更新”的目的。
盡管上文對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,但是本發(fā)明不限于此,本技術(shù)領(lǐng)域技術(shù)人員可以根據(jù)本發(fā)明的原理進(jìn)行各種修改。因此,凡按照本發(fā)明原理所作的修改,都應(yīng)當(dāng)理解為落入本發(fā)明的保護(hù)范圍。