一般來說,不能通過小版本更新解決的問題,才會用到大版本更新,例如,不可熱更的遊戲**。而熱更新是建立在每次大版本更新的基礎上進行的更新,因此,這2種更新方式應該互相承接。
我們可以通過md5檔案和更新檔案以及版本號來實現大版本更新和熱更新。遊戲的版本號由大版本號+資源版本號構成,每一次大版本更新,大版本號增加,資源版本號重置。每一次熱更新,大版本號不變,資源版本號增加。
md5檔案(md5file)記錄每乙個資源的md5值。例如:
a.txt,1630d23f45464df6071a9948dd1592bf
b.texture,f9c985a8f2a86292a024c4ed21ed33fb
例如:
a.txt,1630d23f45464df6071a9948dd1592bf,0.1
c.txt,2312xd23f45464df6071a9948dd1592b,0.2
清除之前的md5檔案和版本檔案
打包所有的資源
計算每個資源的md5值,建立新的md5檔案,將所有資源的資源名稱和對應的md5值儲存在md5檔案中。
打包所有資源
計算每個資源的md5值,並和md5檔案中記錄的md5值做比較,將md5值發生變化的資源和被刪除的資源記錄下來.
判斷是否存在版本檔案: 如果不存在版本檔案,即現在是在大版本後的第一次熱更新,建立乙個版本檔案,將所有md5值發生變化的資源的名稱和其版本號記錄在版本檔案中,格式為為【檔名,新的md5值,當前資源版本號】。 如果已經存在版本檔案,即現在是在上一次熱更新之後繼續熱更新。首先讀取上一次的版本檔案,然後遍歷本次md5值發生變化的資源,如果資源名稱在版本檔案中存在,則將版本檔案中該資源版本號置為當前版本;如果資源名稱在版本檔案中不存在,則在版本檔案中新增新的記錄,存放其資源名稱和當前資源版本號;如果版本檔案中存在被刪除的資源名稱,將該資源的記錄從版本檔案中移除。
上傳需要更新的資源和版本檔案(versionfile)到伺服器
刪除原來的md5檔案,將所有資源的md5值儲存在新的md5檔案中。
0.1(資源版本號資料夾)
-------a.txt
-------versionfile.txt
0.2(資源版本號資料夾)
-------a.txt
-------c.txt
-------versionfile.txt
0.3(資源版本號資料夾)
-------a.txt
-------d.txt
-------versionfile.txt
假設versionfile.txt內容為:
a.txt,1630d23f45464df6071a9948dd1592bf,0.3
c.txt,d23f45464df6071a9948dd1592bfw2sb,0.2
d.txt,30d23f45464df6071a9948dd1592bfx2,0.3
遊戲熱更新雜談
遊戲熱更新的內容一般可以是美術資源,也可以是 但相對來說,美術資源的更新不會受到約束,而 的更新在實際上是重災區,以下主要介紹的是 的熱更新。熱更新對於開發者來說是一件麻煩事,特別對於看重效率,便捷性和結構的程式設計師來說,熱更新就是運營人員的不懂技術的表現。然而,對於上線才是剛剛開始的網路遊戲,特...
nginx熱部署更新和日誌切割
原來版本是1.12的裝在 usr local nginx2,現在需要更新成1.16的,需要進過以下步驟 1 檢視現有nginx程序資訊 ps ef grep nginx root 7508 1 0 21 46 00 00 00 nginx master process sbin nginx nobo...
uniapp熱更新和整包公升級
這時候就需要整包公升級。但是拋開這些 manifest的修改,熱更新還是很方便的,如下 uni.request success result function function e endif 整包公升級 onlaunch function uni.request endif if plus.os....