当前位置:网站首页>手游的热更方案与动态更新策略
手游的热更方案与动态更新策略
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
边栏推荐
- manjaro安装与配置(vscode,微信,美化,输入法)
- 积性函数与迪利克雷卷积
- 数论之拓展欧几里得
- Reflection on the systematic design of Android audio and video caching mechanism
- 菜菜的刷题日记 | 238.除自身以外数组的乘积
- 两个线程交互打印奇偶数字
- Django使用mysql数据库报错解决
- 刨根问底---cocos2d源码的理解与分析
- [Ted series] how does a habit change my life
- Solutions to common problems in visualization (VII) solutions to drawing scale setting
猜你喜欢

数据分析入门 | kaggle泰坦尼克任务(四)—>数据清洗及特征处理

Javscript gets the real suffix of the file

Us photo cloud editing helps BiliBili upgrade its experience

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

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

反思 | Android 音视频缓存机制的系统性设计

简单易懂的子集dp

Mysql 数据库从设计上的优化

Machine vision series (01) -- Overview

H5案例开发
随机推荐
[ACM-ICPC 2018 沈阳赛区网络预赛] J.Ka Chang (分块+dfs序)
安装配置淘宝镜像npm(cnpm)
对STL容器的理解
Us photo cloud editing helps BiliBili upgrade its experience
11. Table and library management
2. Restricted query
两个线程交互打印奇偶数字
13.用户和权限管理
Mysql 数据库从设计上的优化
xdotool按键精灵
理解补码的要点
保洁阿姨都能看懂的中国剩余定理和扩展中国剩余定理
typescript字典的使用
H5案例开发
2.限定查询
【TED系列】一个习惯是如何改变我的一生
What is a closure?
快速傅里叶变换FFT简明教程
[hdu6868]Absolute Math(推式子+莫比乌斯反演)
4.多表查询