一、什么是热更新?
- 客户端热更新(以下简称热更新或热更),指的是游戏玩家不无需下载全新的软件安装包进行版本更新,如更新新的地图/角色/功能…一般采用Lua进行热更代码编写,emm太麻烦,这里我推荐使用Pak处理工具。
二、什么是Pak?
- Pak 文件是 Unreal Engine打包素材的文件。一个 Unreal 程序可以使用或者不使用 Pak 来管理素材。Unreal 的 Pak 文件内包括了网格体,材质,Blueprint,Map等等。Level 也就是关卡以 map 的形式保存。
- Pak 文件的加载类似文件系统加载一个外接硬盘,你可以理解为你的游戏包外插了一个U盘,然后游戏读取该U盘的内容。
三、获取插件
- 插件获取途径如下
- 这会收取部分教程费,当然你在别处买了也可以看此教程hh
四、—-使用方法—-
- 我这里创建一个新的空白项目进行演示,项目各种命名,如变量/项目名,大家尽量跟着我起,pak命名有一定的要求,主要我怕你没注意小细节导致跟不上,当然我会标注出来哪里需要注意。
注意:你需具备打包项目的基本要求:拥有对应的Visual studio版本和C++环境。简而言之:曾经在你的电脑上打包过项目。否则无法跟上此教程
如果无法满足要求,请先安装对应环境。教程网上有,我这里还没更新。
第一步:
创造一个空项目。
命名为PakTest
PakTest![图片[1]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e98e909f345e8d030af313.png)
打开工程后将当前地图保存为NewMap,并在项目设置中保存为默认地图。
重要:因为此是新项目,没有保存默认地图无法正确烘培,导致后续步骤出错
第二步:
创建空白插件
打开项目后,在上方菜单栏创建插件,步骤如下:
![图片[4]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9920e9f345e8d0313494c.png)
弹出插件窗口后,点击添加
![图片[5]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9920d9f345e8d03134884.png)
然后又弹出一个窗口,添加空白插件,名为 TestDLC。(名字Follow Me!)
![图片[6]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9920e9f345e8d031348d6.png)
接着你的内容浏览器内就出现了对应的插件
![图片[7]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9cfba9f345e8d03d04078.png)
这个插件用来干什么呢?这里的插件将会被我们代替为“U盘”,也就是我们现在创建空插件的行为可以理解为分盘,给项目分配了一个“存储空间”,后面将更新内容放入插件的“内存”里,项目再读取新插件的“内存”进行交互,就热更完成了。
右键该文件夹,选择在浏览器中显示
![图片[8]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9d1cc9f345e8d03d715b3.png)
然后选择项目的Plugins路径
![图片[9]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9d2639f345e8d03d8fc05.png)
将下载好的对应版本插件放进此文件夹内
![图片[10]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9d3369f345e8d03dbb805.png)
重要:创建一个C++空文件,转为C++项目,如果不执行此步骤,插件PakLoader可能不被项目所识别。
![图片[11]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9d4379f345e8d03df1cae.png)
![图片[12]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9d5769f345e8d03e348c1.png)
点击运行按钮,生成解决方案,编译成功一次即可退出,就可以恢复用原来的方式打开工程。
![图片[13]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9d6819f345e8d03e766ee.png)
如果你的VisualStudio版本为17.9.X,有可能会报错,请回退到17.8.X,或者更新至17.10.X。更新方式如下:
第三步:
创建Pak内容
![图片[14]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9dab79f345e8d03f5f829.png)
![图片[15]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9dda99f345e8d03ffcffc.png)
选中TestDLC,在插件内部右键创建关卡,命名为TestMap
![图片[16]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9ddaa9f345e8d03ffd3dd.png)
随便加点细节,知道这个是新关卡就行了,记得保存一下项目,修改下项目设置
将项目中以下两个选项取消勾选,地图才能正常显示和正确生成Pak
use io storeshare material shader Code
![图片[17]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9eb449f345e8d032e8a08.png)
第四步:
创建Pak文件
![图片[18]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9de7c9f345e8d03025b50.png)
在窗口–>Pak Creator ,打开Pak Creator插件。如果你没有这按钮,说明你没在Plugins文件夹下添加插件
![图片[19]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9e0409f345e8d0307dea3.png)
简单来说:
- 选择自己创建的空插件
- 选择输出路径
- 点击创建
- 等待完成
![图片[20]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9ed799f345e8d0335971b.png)
最终得到.Pak文件,就可以放到服务器上供客户端下载,这里不讲述如何制作服务器,你可以用Node的Express,python的Flask,买个腾讯云/阿里云服务器搞就行,这里只讲述本地引用Pak进行动态更新。
![图片[21]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9ee1e9f345e8d0337a556.png)
查看Pak文件列表
我们可以检查下Pak文件是否存在TestMap文件。
打开你的引擎目录:UE_5.3\Engine\Binaries\Win64
在该路径下输入CMD,按下回车唤起命令行窗口
![图片[22]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9ee569f345e8d03384bb3.png)
//UnrealPak.exe -List <你的Pak路径>
//例如
UnrealPak.exe -List C:\Users\oy\Desktop\TestPakFile\TestDLCPakTest-Windows.pak![图片[23]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9faa39f345e8d035676b9.png)
如果到此步骤没有出错,则说明PakCreator成功!有其他问题请留言。
第五步:
读取Pak文件
这边只介绍如何用蓝图读取,C++读取方式在插件-PakLoader的PDF文档有,请自行查看
进入关卡蓝图
在内容Content内打开项目保存的主场景:NewMap,双击进入地图,并打开关卡蓝图
编写蓝图指令
双击打开蓝图,复制以下指令进去,指令已有注释,不做过多解释。左上角(聚焦以下指令滚轮滚上去)Fullscreen可全屏,全选复制到PakLoader内,复制后编译肯定会报错的(因为有设置变量),跟着下一步做就行。
正如上述所说复制进去肯定是会出错的,因为有新变量,接下来根据此步骤即可修复:
连接执行事件
![图片[25]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ebef749f345e8d038010ad.png)
在注释处连接执行事件,这里以Event BeginPlay(事件开始运行时)举例,连接后,
点击左上角编译会出现报错,如:ERROR:变量不存在
![图片[26]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ebf0019f345e8d03819e4b.png)
报错主要为变量不存在,左键点击此变量,右键创建此变量,再次点击编译。左键选中后,自己多试几次右键,有时候不好出现。
![图片[27]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ebf04d9f345e8d03827b8e.png)
创建后再次编译,此变量错误就会修复,其外还有两个变量需要创建,即共需创建三个变量。建议创建一个编译一次,方便找。
ProjectDirctory:项目路径,创建即可,无需输入。
PackPath:Pak路径,需输入(发现变量名打多了c,讲究一下把)
PluginsName:你创建的空插件名,需输入。后面会给出输入示例,先完成创建步骤:
![图片[28]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ebf1409f345e8d03851d59.png)
为变量赋予默认值(正式项目用函数输入参数)
PackPath:存放pak文件的路径\TestDLCPakTest-Windows.pak
PluginsName:TestDLC (创建的插件名)
![图片[29]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ebf2ed9f345e8d0389d9e5.png)
为了方便,可以将复制的指令(除了事件)都折叠为函数,命名为LoadPak
打包测试
因为在上面的步骤中,创建了TestMap并存在空插件内生成了Pak文件。所以Pak会包含TestMap地图,那么程序在执行LoadPak后就能获取该地图,所以添加一个打开地图的指令。地图名称要对应上
![图片[32]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ebf6139f345e8d0392cdf8.png)
然后将TestDLC空插件新创建的地图删除。别问为什么删除。。。要是游戏本身就有该地图,还热更干嘛。
![图片[33]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ebf7a99f345e8d039754c6.png)
删除后,保存一下再打包项目。
![图片[34]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ebf8439f345e8d039911bb.png)
运行打包后的项目,成功进入地图!
![图片[35]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ec0aac9f345e8d03d1570e.png)
Loader插件内置了很多指令,如加载材质,加载Mesh,动画文件等等,按道理讲是什么都可以的,蓝图指令,接口什么的,因为这属于外置U盘,只是怎么加载适合你的项目就需要自己设计了。
![图片[36]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://cdn1.epicgames.com/ue/product/Screenshot/Gallery1-1920x1080-5f739d09fbe8f6172aaae452564bb406.png?resize=1&w=1920)



![图片[2]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9f93e9f345e8d0353a408.png)
![图片[3]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65e9f93f9f345e8d0353a531.png)

![图片[24]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ec08409f345e8d03c96f67.png)
![图片[30]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ebf50e9f345e8d038fde8f.png)
![图片[31]-虚幻的热更新-在线更新地图/角色/材质···-虚幻引擎相关论坛-问题反馈-虚幻社区](https://pic.imgdb.cn/item/65ebf52a9f345e8d0390314e.png)









没有回复内容