当前位置:网站首页>为什么游戏需要热更新?
为什么游戏需要热更新?
2022-08-10 05:37:00 【优梦创客】
版权申明:
- 本文为“优梦创客”原创文章,您可以自由转载,但必须加入完整的版权声明
- 更多学习资源请加QQ:1517069595获取(企业级性能优化/热更新/Shader特效/服务器/商业项目实战/每周直播/一对一指导)
为什么游戏需要热更新?

简单来说就是为了绕过手机操作系统的安全验证。
因为如果手机操作系统允许我们随意从网络上下载并更新我们安装好的APP,那么一些不良的游戏开发者就有可能在更新的程序中植入后台或者木马程序来窃取用户的数据,甚至破坏手机系统,从而达到一些不可告人的目的。
但是手机操作系统的这一做法是一柄双刃剑,他虽然防止了手机APP受病毒木马的影响,但是也限制了APP的正常更新
让我们先来看一来受到限制以后,游戏APP的更新流程。
什么是游戏热更新:无热更的游戏更新流程

当你在软件商店选择好一款游戏,点击下载,就把这款游戏下载到你的手机上了。
当你需要更新游戏时,通常在手机游戏的启动画面会弹出一个更新按钮,点击后会帮你跳转到软件市场重新下载完整的游戏包体
这样,如果是一个像王者荣耀这样1个G以上包体大小的游戏,每次我们都需要花同样的时间,再下载一次完整游戏
而不管这个游戏是否只是更新了一个微小的功能或美术资源
什么是游戏热更新:有热更的游戏更新流程

而支持游戏热更新的更新流程就完全不同了
首先你不需要在收到更新通知时跳转到软件商店进行下载,点击确认更新后,会自动在游戏内进行更新包的下载,
其次你要下载的更新包,只是更新的那部分内容,比如说一个游戏只是在下一个版本更新了一个皮肤、道具或者增加了一个新的功能系统,通常这种更新包的大小不会很大,假如说更新包只有几兆,那么你只需要下载这几兆资源即可
对于玩家来说,下载的等待时间和流量消耗都极大的减少,对于提升玩家体验、提升玩家留存是很有帮助的
那么究竟一款支持热更新的游戏,它内部的更新流程和机制是什么样的呢?

我们来看一下
首先在我们第一次要游玩这个游戏的时候,我们还是会从游戏市场下载这个游戏。
接着随着游戏运营的进程发展。游戏公司的策划决定加入一个新玩法修改现有的玩法,或者修改游戏内的数值平衡。
此时我们的开发者就需要根据策划的需求去制作游戏更新。
并且将更新好的内容打包上传到游戏更新服务器。
接着在我们的玩家下一次进入游戏时,游戏的客户端会自动到服务器去检查有无游戏。内容更新。
如果有则会从服务器下载更新包。
在客户端将更新包下载到本地以后,客户端自动释放压缩的更新包,并且把旧的游戏内容替换成新的更新包内的内容,这样就完成了游戏的版本更新。
更新包长什么样?

那么更新包究竟长什么样呢?
首先我们可以把游戏内的资源分成美术资源和程序资源。
通常美术资源是可以直接热更新的,而程序资源呢就有点麻烦了。
因为程序资源可以是任意一段可以执行的程序代码,大家想象一下,如果在一个游戏通过审核以后,在下一个版本中植入了一些窃取用户隐私或者有可能造成系统不稳定的功能,那么对于对于用户来说是很不安全的。
所以在苹果的IOS系系统中已经完全的禁止了程序在运行时加载新代码的功能。
而安卓系统没有完全禁止这种功能,安卓APP仍然能够执行任何一段热加载的程序代码。
那么,我们的手机游戏如何应付IOS系统的禁止热更新从而提升玩家的游戏更新体验呢?
这就需要我们绕过系统限制,那么如何绕过呢?我们会在后续给大家揭晓,欢迎大家点赞、收藏、分享,并在评论区讨论你认为可行的解决方案~
更多学习资源请加QQ:1517069595获取(/企业级性能优化/热更新/Shader特效/服务器/商业项目实战/每周直播/一对一指导)
完整视频可以点击B站链接:https://www.bilibili.com/video/BV16v411J7Uq
边栏推荐
- Tensorflow 2.0 使用流程详解
- 电路建模的要点
- 酸阻滞树脂
- 51单片机室内环境甲醛PM2.5光照温度湿度检测及窗帘加湿消毒控制系统
- 51单片机教室人数进出统计检测数码管显示装置红外传感器
- 在Unity中判断游戏物体是否在游戏屏幕范围之内
- STM32单片机LORA无线远程火灾报警监控系统DS18B20MQ2火焰检测
- LeetCode refers to the offer 21. Adjust the order of the array so that the odd numbers are in front of the even numbers (simple)
- clickhouse出现数据重复问题
- 从零开始构建Google Protocol Buffer / protobuf 的helloworld工程(超级详细)
猜你喜欢

STM32单片机手机APP蓝牙高亮RGB彩灯控制板任意颜色亮度调光

多线程与多进程(概念详细讲解)

序列化、编码、requests库json和data参数

pytorch-11. Convolutional Neural Network (Advanced)

pytorch-09. Multi-classification problem

接口自动化2.0

【fiddler4】使用fiddler设置简单并发

Deep learning TensorFlow entry environment configuration

LeetCode refers to offer 10-I. Fibonacci sequence (simple)

详解 Hough 变换(上)基本原理与直线检测
随机推荐
51单片机AD590温度测量ADC0832运放2.73V减法电压变换
mkfs.minix.c之minix_super_block.s_nzones获取解析
LeetCode 1894. Find the student number that needs to be supplemented with chalk
AR Foundation Editor Remote插件使用方法
STM32F407ZG PWM
手机端应用类型
pytorch-08. Load dataset
【接口自动化】
8个问题轻松掌握Unity前向渲染
Linux的文件IO与标准IO,以及IO缓存
VTK 初步 (1) ----- 可视化管线
Notes for RNN and Decision Tree
51单片机RS485远程双机多机温度采集主从机多节点蜂鸣器报警
屏幕后期处理之:Sobel算子实现边缘检测
clickhouse出现数据重复问题
Machine Learning - Clustering - Shopping Mall Customer Clustering
LeetCode 94. Inorder Traversal of Binary Trees (Simple)
51单片机教室人数进出统计检测数码管显示装置红外传感器
以STM32F103C6TA为例通过配置CubeMX实现GPIO输出完成点灯实例
Unity中暂停、继续播放、杀死、正放、倒放Dotween动画