当前位置:网站首页>手游的热更方案与动态更新策略
手游的热更方案与动态更新策略
2022-04-23 06:24:00 【0zien0】
打补丁包进行热更需要处理的内容如下:
1.游戏的大部分代码逻辑使用lua或JS等脚本语言来编写。(脚本语言方便热更后重新加载)
2.每次打包资源时都生成一份对比文件。文件内含全资源的(资源名、MD5值、分包号)等信息,实际内容根据项目本身需求而定。
3.修改运行游戏时优先读取文件的目录路径。需要优先读取下载文件目录下的文件(因为APK或IOS内含的资源会和下载下来的资源重复)
4.下载完毕后,之前加载过的内容需要重新reload。
下载补丁包的形式:
1.把需要更新的文件压缩到一个压缩包内,游戏中下载这个压缩包后解压放到下载目录中。
生成压缩包时,通过对比文件把这次更新的内容挑出来,然后集中压缩生成补丁包。
优点:生成压缩包,资源经过压缩下载的资源量会小一点,而且压缩成一个包,下载速度也比较快,也没那么容易出错。
缺点:假如现在游戏已经上了10个版本的补丁包,对于新玩家来讲,刚下完整包就一定要从第一个补丁包开始下载到第十个补丁包,即使这10个补丁包内有大量重复资源(例如每次更新补丁都会更新某张图)。如果长时间不出下一个整包,对于新玩家来说,可能补丁包总量还远大于整包本身。
2.把最新版本的所有资源都上传到服务器,玩家需要下载哪个资源就直接从服务器中下载对应资源到下载目录中。
把对比文件放到APK(IPA)中,需要更新时从服务器处下载最新版的对比文件,然后和当前版本的文件对比,就可以知道需要下载哪些资源,然后一个个从服务器中进行下载。
优点:即使我现在上了100个版本的补丁,无需理会中间的补丁内容是什么,直接拿我当前版本的对比文件和服务器中的对比文件进行对比,即可下载需要的资源,且同名资源会直接下载最新的而不会下载中间版本的资源。 比较灵活。
缺点:即使这次补丁包只更新一张图片,仍然需要把整个游戏所有资源都上传都服务器。 散文件下载速度也不及压缩包而且资源没压缩。
三种资源下载的方式:
1.进入游戏前下载的资源。
这种方式就是最常规的下载方式,启动游戏检测版本号,看是否需要更新,需要就更新完再进游戏。
2.进游戏后,玩家手动点击下载更新。
这种就属于分包的形式了,不下载分包的,首包内容会支持你玩大部分的功能,但某些资源量特别大的功能就可能需要下载分包后才能玩了。 如果有分包,就可以让首包包体小点。无论是appstore还是google都有限制包体的大小,而且推广的时候根据不同的推广策略,可能也存在包体小会比较好推广。
3.动态更新资源,就是用到哪张资源就去下载对应的资源。
一般我们的采用,先显示临时资源(例如一个转圈的动图表示正在下载),正式资源下载好后就会替换成正式资源的方式。
其实就像以前的页游,打开界面时才一块块去下载资源显示出来。这种方式看着最高级实则做起来最麻烦。每一个加载资源的方法入口都得写下载处理逻辑,而且根据不同地方的需求处理逻辑还不一样。(目的都是不改源码的情况下加入下载代码)。
如果需要很细致的做好这个动态下载资源就不得不改动源码了(我的项目是做好后,才提需求要做这个动态下载方案的,新项目可以一开始设计好框架)。例如某些地方会对下载好的资源进行处理,那就必须等资源下载完成再执行后续操作了。
版权声明
本文为[0zien0]所创,转载请带上原文链接,感谢
https://blog.csdn.net/a42626423/article/details/106665989
边栏推荐
猜你喜欢
![[Educational Codeforces Round 80] 解题报告](/img/54/2fd298ddce3cd3e28a8fe42b3b8a42.png)
[Educational Codeforces Round 80] 解题报告

Machine vision series (01) -- Overview

FSM有限状态机

菜菜的并发编程笔记 |(九)异步IO实现并发爬虫加速

Us photo cloud editing helps BiliBili upgrade its experience

AuthorizationServer(授权服务器的简单搭建)

数据分析入门 | kaggle泰坦尼克任务(三)—>探索数据分析

Background management system framework, there is always what you want

Solutions to common problems in visualization (VII) solutions to drawing scale setting

菜菜的刷题日记 | 238.除自身以外数组的乘积
随机推荐
Authorization+Token+JWT
手游性能优化
2022.3.14 阿里笔试
刨根问底---cocos2d源码的理解与分析
Object.create()原理,Object.create()规范,手写Object.create(),Object.create()用法
【自我激励系列】你永远不会准备好
嵌入式相关面经(一)
组合数求解与(扩展)卢卡斯定理
11. Table and library management
P1446 [HNOI2008]Cards(Burnside定理+dp计数)
[Educational Codeforces Round 80] 解题报告
[Ted series] how to get along with inner critics?
[ACM-ICPC 2018 沈阳赛区网络预赛] J.Ka Chang (分块+dfs序)
Mysql 数据库从设计上的优化
开发板如何ping通百度
Dirichlet 前缀和(数论优化式子复杂度利器)
[COCI]Lampice (二分+树分治+字符串哈希)
1D/1D动态规划学习总结
Moment.js中format方法函数的格式
浅谈BFC(块格式化上下文)