HF|热更新01
大约 8 分钟
问题描述
知识拓展
什么是热更新?
热更新(Hotfix or Hot Update)是一种在软件运行过程中无需停止或重启应用程序的情况下,直接对程序进行更新的方法。
UEPC端打包目录结构?
以下是添加了目录注释的版本,解释每个文件夹的用途和内容:
D:.
| HOTFIX.exe // 应用名
| Manifest_NonUFSFiles_Win64.txt // 非UFS文件(Unreal File System)的清单,用于描述哪些文件不打包在UFS中
| Manifest_UFSFiles_Win64.txt // UFS文件清单,列出游戏打包时包含的所有UFS文件
|
+---Engine // 引擎文件夹,包含与引擎相关的文件和库
| +---Binaries // 可执行文件和二进制文件的存储目录
| \---ThirdParty // 第三方库目录,包含引擎使用的外部依赖项(如DLL文件)
|
\---HOTFIX // 热更新目录,用于存放热更新相关的文件
+---Binaries // 热更新程序的二进制文件目录
| \---Win64 // 针对64位Windows平台的可执行文件和依赖文件
|
\---Content // 热更新内容目录,存放与热更新相关的游戏内容
\---Paks // 打包文件目录,包含已打包的游戏内容(如贴图、模型等)
热加载支持情况
类型 | 具体内容 | 是否能热加载 |
---|---|---|
资源文件(Assets) | Textures(纹理): 可以通过热更新替换纹理,更新后的材质可以立即应用到游戏中。 | 是 |
Models(模型): 更新模型文件,如静态网格和骨骼网格,通常也支持热加载。 | 是 | |
Sounds(声音): 音效文件可以通过热加载进行更新,比如背景音乐或音效文件。 | 是 | |
Animations(动画): 动画资源可以通过热更新来修复或更改动画效果。 | 是 | |
UMG Widgets(UI 元件): 通过 Unreal 的 UMG UI 系统创建的 UI 组件。 | 是 | |
Localization(本地化资源): 包括文本、对话、界面等本地化资源。 | 是 | |
Shaders(着色器): 自定义的 HLSL 着色器等。 | 是 | |
脚本文件 | Blueprints(蓝图): 蓝图脚本。 | 是 |
插件脚本: 如果你使用的是像 Lua、Python 等脚本语言插件编写的逻辑代码。 | 是 | |
C++ 代码 | 原生的 C++ 代码在打包后是编译成二进制的,无法通过热加载进行更新。 | 否 |
方案1
1. 用小皮启动 Apache 服务器: https://old.xp.cn/
Apache(Apache HTTP Server)是一款开源的、功能强大的 web 服务器软件。
2. UE中安装下载插件插件地址:
3. 部署到阿里或者腾讯云
4. UE中下载测试
命名规则 后缀“_n_P.pak” ,其中n越大优先级越高。
注意,咱们现在是完整打包替换,每个补丁就是一个完整的版本。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也易于解析和生成.
方案2
JSON+HTTP
1. 本地JSON存储版本号
{
"LocalVersion": {
"versionNumber": "1.0.0"
}
}
2. 远程JSON存储更新List
{
"ServerVersionPath": [
{
"versionNumber": "1.0.0",
"downloadUrl": "https://example.com/patches/patch-1.1.0.zip"
},
{
"versionNumber": "1.0.1",
"downloadUrl": "https://example.com/patches/patch-1.1.0.zip"
},
{
"versionNumber": "1.0.2",
"downloadUrl": "https://example.com/patches/patch-1.1.0.zip"
}
]
}
{
"LatestFullVersionUrl": "https://example.com/fullversion/full-1.0.3.zip",
"ServerVersionPath": [
{
"versionNumber": "1.0.0",
"downloadUrl": "https://example.com/patches/patch-1.1.0.zip"
},
{
"versionNumber": "1.0.1",
"downloadUrl": "https://example.com/patches/patch-1.1.0.zip"
},
{
"versionNumber": "1.0.2",
"downloadUrl": "https://example.com/patches/patch-1.1.0.zip"
}
]
}
简单实现步骤
1. 获取本地版本号
2. 修改本地版本号
3.获取更新列表
4.校验本地文件
欲知后事如何,且看下回分解。