cocos-lua棋牌類遊戲的打包熱更流程

今天有時間我來說一下,對於棋牌遊戲來說我們如何正確打android包與正確更新整個包體。

如今對於新生成項目的同學,我想對你們說,你的路是對的,因爲只有自己嘗試搭建項目了你才知道一個項目的完整流程是什麼,在過程中會遇到很多你以前沒有遇到過的問題。

使用AndroidStudio去開發安卓段並且打包,因爲如今已經有很多的項目推薦使用,他是如此方便接入第三方,配置項目屬性,甚至通過編譯過程中生成中間件來完美一件打包。

 

下面就是android具體的打包流程:

1.導入android-studio項目

對就是他,他比proj.android要省事的多,會自動將你的cocos下libcocos2dx包庫項目引入項目中。不用你手拖了。

2.android-studio會先更新項目插件,不用管它等一會就好

 

待到出現此類信息是就可以進行下一步了。

3.配置Edit Configurations打包命令

 

這樣就配置成功外部編譯工具的方式了

4.編譯生成apk

我們對於熱更的遊戲來說一定需要分包處理,不然會導致資源過大,加載緩慢,加大熱更失敗的可能性,所以一般棋牌類遊戲會有3塊處理區域

1.啓動區(初始化配置,更新檢測以及更新,等操作)

2.大廳區(除遊戲外的所有附屬功能,啓動遊戲框架等)

3.遊戲區(每一個子遊戲的程序腳本,資源等)

 

對於這樣的三塊來說我們很有必要擁有單獨熱更的能力。

 

對於熱更新最基本的是需要有對比每一個文件是否相同的能力,從而盤帶你是否更新此文件。爲此我們需要問每一個文件添加MD5形成映射表。

@echo off

//生成base的文件映射
rem base
MakeMD5List -dst %temp% -src ..\client\ciphercode\base
copy %temp%\filemd5List.json ..\client\ciphercode\base\res\filemd5List.json
del %temp%\filemd5List.json
//生成client的文件映射
rem client
MakeMD5List -dst %temp% -src ..\client\ciphercode\client
copy %temp%\filemd5List.json ..\client\ciphercode\client\res\filemd5List.json
del %temp%\filemd5List.json

//game_list.txt遊戲列表路徑文件
//生成每個遊戲的文件
set /a game_count=0
rem game list
for /f "skip=1 tokens=1,2,3,4,5,6,7,8,9,10 delims==," %%a in (game_list.txt) do (
	echo game name %%b
	del %%d\filemd5List.json
	MakeMD5List -dst %temp% -src ..\%%d
	copy %temp%\filemd5List.json ..\%%d\res\filemd5List.json
	del %temp%\filemd5List.json
	
	set /a game_count+=1
	if  errorlevel 1 goto OnError
)
for /f "skip=1 tokens=1,2,3,4,5,6,7,8,9,10 delims==," %%a in (game_list_64bit.txt) do (
	echo game name %%b
	del %%d\filemd5List.json
	MakeMD5List -dst %temp% -src ..\%%d
	copy %temp%\filemd5List.json ..\%%d\res\filemd5List.json
	del %temp%\filemd5List.json
	
	if  errorlevel 1 goto OnError
)
if  errorlevel 0 goto Finish
:OnError
echo make md5 error
pause

:Finish
echo.
echo.
echo 處理遊戲數目 %game_count%
echo.
echo.

 

對此我相信大家都回想到使用網狐提供的MakeMD5List.exe工具專門通過bat文件生成對應的json映射文件,以及一些拷貝操作。

 

爲了減少包體積我們往往會進行壓縮,最後將base,client放入遊戲asset中。遊戲則是放到服務器中下載下來解壓使用。

 

 

在啓動遊戲時。

1.檢測本地是否有zip有則解壓加載

2.向服務器發送請求校驗本地是否有版本記錄(優化:映射文件中添加版本號與服務其版本號比對減少不必要的資源)

3.沒有版本記錄,下載遠程映射文件(filemd5List.json)Md5比對,不同不能夠添加到下載對列中等待下載

4.有版本記錄,nNewV > nCurV執行同上,反之跳過此步驟

5.開啓多個下載進程,如平分到3個線程中,執行下載程序(如共需下載100個文件),單個文件下載完成回調,文件寫操作,存儲操作等

6.文件下載數完成到100時執行completeCallBack回調執行其餘操作,重啓或者熱加載

 

嗯,大概就是這個樣子,你可以自己完善功能,這裏只是介紹略的操作流程。

[最後奉上自己的個人博客,歡迎學習使用]

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章