概述

  • UE4 中主要使用 Project Launcher 来进行补丁和DLC的制作
  • 补丁与 DLC 都需要基于某个版本而制作
  • 补丁 与 DLC 最后以 Pak 形式表现,
    • 补丁的 pak 可以重命名,但最后以 _p.pak 结尾
  • Pak 会根据 PakOrder 来排序挂载
    • Paks 目录下 ,项目名开头的 PakOrder = 4;非项目名开头的 PakOrder 与上一级目录的 PakOrder 相同
    • 项目名/Content 目录下的 PakOrder = 3;
    • Engine/Content 目录下的 PakOrder = 2;
    • Saved 目录下的 PakOrder = 1;
    • _p.pak PakOrder额外加100
    • n_p.pak PakOrder额外加 n*100+100

补丁 Patch

  • 对发布之后的版本进行更新,称之为打补丁
  • 通常用于
    • 内容更新
    • 解决已知问题
    • 修复版本漏洞
  • 打补丁的方法
    • 保留原始版本或之前版本中的文件,但添加一个指向新内容的指针
    • 使用二进制补丁转换原始版本中的内容

DLC

  • Downloadable Content(可下载内容),也称“可下载资料包”
  • 用于游戏发布后的内容扩展,如新增地图、新游戏模式、新剧情等
  • 目前暂不支持增量更新

扩展:热更新


补丁配置与版本迭代

游戏主体配置 V1.0

  • 创建 BP_Patch 并放置到场景中,配置 Project Launcher 打包,设为 Release 1.0

补丁配置 V1.1

  • 修改 BP_Patch 代码

  • 配置 Project Launcher

    • 基于1.0 打包,当前补丁我们假设为 patch 1.1
    • 并将当前关卡 使用 release 的打包配置,更改为 Release 1.1 进行打包(后续要用到)

  • 打包 输出 DesignPatterns-WindowsNoEditor_0_P.pak

    • 方便起见,重命名为 DesignPatterns-BaseV1.0_11_P.pak,其中 V1.0 代表 Release 1.0,11 代表 Patch 1.1
    • 复制到 Release 的 WindowsNoEditor\DesignPatterns\Content\Paks 目录下
  • 测试结果对比

补丁配置 V1.2

  • 创建 BP_Patch2 并放置到场景中

  • 配置 Project Launcher ,打包两个版本。并将补丁复制到对应 Release 的 WindowsNoEditor\DesignPatterns\Content\Paks 目录下

    • 基于 release 1.0 打包 patch 1.2,输出 DesignPatterns-BaseV1.0_12_P.pak
    • 基于 release 1.1 打包 patch 1.2,输出 DesignPatterns-BaseV1.0_12_P.pak
  • 测试结果如下

    • Release 1.2 等同于

      • 基于 Release 1.0 的基础包,打上 BaseV1.0_11、BaseV1.1_12 两个补丁
      • 基于 Release 1.0 的基础包,打上 BaseV1.0_12 补丁
      • 基于 Release 1.1 的基础包,打上 BaseV1.1_12 补丁

版本迭代思路

  • 维护两个文本信息

    • 服务器更新的补丁列表 server_patch_list.json
    • 本地的补丁更新情况记录 local_patch_list.json,记录当前版本号以及已更新的补丁
  • 启动时从 server_patch_list 读取补丁列表信息,对比 local_patch_list,

    • 如果 local_patch_list 没有则下载对应版本的补丁
    • 如果多个小版本合并为一个版本,则删除原来已下载的小版本,再下载合并后的版本
  • pak 删除与添加,涉及卸载和挂载,使用时具体分析,下图为举例示例,非实际应用


DLC 配置

  • UE4 DLC 以插件形式存在,因此第一步先创建插件

  • 在C++工程 .build.cs 添加插件模块,模块名为插件名,编译

  • 在 插件的 Content 目录下创建新的场景、资源

  • 配置 Project Launcher

    • 打包后的路径

      \Plugins\[插件名]\Saved\StagedBuilds\WindowsNoEditor\[项目名]\Plugins\[插件名]\Content\Paks\WindowsNoEditor

  • 测试结果

    • 关于 插件 Content 目录

      • File - > Package - > 平台 打包,默认会将插件 Content 目录一起打包进去
      • Project Launcher 打包 Release ,默认不打包插件 Content 目录
      • Project Launcher 打包 DLC ,默认只打包插件 Content 目录

  • 至此 Project Launcher


参考

【UE4】 补丁Patch 与 DLC的更多相关文章

  1. 打补丁patch 命令使用

    打补丁patch 命令使用 http://www.cnblogs.com/huanghuang/archive/2011/07/14/2106402.html patch 命令用于打补丁,补丁文件是使 ...

  2. 补丁(patch)的制作与应用

    命令简介 用到的两个命令是diff和patch. diff diff可以比较两个东西,并可同时记录下二者的区别.制作补丁时的一般用法和常见选项为: diff [选项] 源文件(夹) 目的文件(夹) - ...

  3. 找不同diff-打补丁patch

    Q:为什么要找不同,为什么要打补丁? A: 在Linux应用中,作为DBA,我们知道MySQL跑在Linux系统之上,数据库最重要的追求就是性能,“稳”是重中之重,所以不能动不动就是换系统或是换这换那 ...

  4. 补丁patch 漏洞 bug或glitch

    补丁patch漏洞 bug或glitch    

  5. 使用opatch工具 打补丁Patch 21352635 -(Database Patch Set Update 11.2.0.4.8)

    Patch 21352635 - Database Patch Set Update 11.2.0.4.8 一.OPatch工具检查及升级 OPatch工具包,在安装目录$ORACLE_HOME下,P ...

  6. GIT打补丁 - patch和diff应用

    一. 准备工作: [root@guangzhou gittest]# git br * master [root@guangzhou gittest]# git chk -b patch-test1 ...

  7. 内核补丁 patch

    https://www.kernel.org/diff/diffview.cgi?file=/pub/linux/kernel/v3.x/patch-3.18.12.xz

  8. 【UE4 C++】学习笔记汇总

    UE4 概念知识 基础概念--文件结构.类型.反射.编译.接口.垃圾回收.序列化[导图] GamePlay架构[导图] 类的继承层级关系[导图] 反射机制 垃圾回收机制/算法 序列化 Actor 的生 ...

  9. 如何为Linux生成和打上patch

    通过diff工具生成补丁, patch工具打上补丁. 在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源码必须 ...

随机推荐

  1. Kubernetes 持久化数据存储 StorageClass

    文章链接 PV 和 PVC 模式要先创建好 PV,然后再定义好 PVC 进行一对一的绑定.那么如果遇到大集群,也一一的创建吗?这样来说维护成本很高,工作量大.这个时候就有了 Kubernetes 提供 ...

  2. 安装redis 6.0.6

    1.规划目录:下载目录.安装目录.redis数据目录mkdir -p /data/appmkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid}mk ...

  3. Docker基本指令

    镜像操作 检索:docker search 关键字 eg:docker search redis 拉取:docker pull 镜像名称:tag :tag可选的 tag表示标签,多为软件版本,默认是l ...

  4. Git 系列教程(3)- 初次运行 Git 前的配置

    前言 直接搬官网教程,再修改下,先啰嗦可以直接看以前的文章 Window初始化Git环境 https://www.cnblogs.com/poloyy/p/12185132.html Linux初始化 ...

  5. Spring Boot 入门系列(二十八) JPA 的实体映射关系,一对一,一对多,多对多关系映射!

    前面讲了Spring Boot 使用 JPA,实现JPA 的增.删.改.查的功能,同时也介绍了JPA的一些查询,自定义SQL查询等使用.JPA使用非常简单,功能非常强大的ORM框架,无需任何数据访问层 ...

  6. 【第三篇】- Git 工作流程之Spring Cloud直播商城 b2b2c电子商务技术总结

    Git 工作流程 本章节我们将为大家介绍 Git 的工作流程. 一般工作流程如下: 克隆 Git 资源作为工作目录. 在克隆的资源上添加或修改文件. 如果其他人修改了,你可以更新资源. 在提交前查看修 ...

  7. 一键配置tomcat定期日志清理功能

    概述 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处理一个单个的 ...

  8. 【转】Linux 查看端口占用情况

    Linux 查看端口占用情况可以使用 lsof 和 netstat 命令. lsof lsof(list open files)是一个列出当前系统打开文件的工具. lsof 查看端口占用语法格式: l ...

  9. Maven专题4——Maven测试

    Java世界的主流测试框架是JUnit和TestNG,Maven在构建执行到特定生命周期阶段的时候,通过插件执行JUnit和TestNG的测试用例. Maven执行测试的插件是maven-surefi ...

  10. Git - 命令行 常用

    一.合并其他分支的commit(A分支中的commit合并至B分支) 切换到A分支,查询commit历史命令行 : $ git log 复制要合并的commit id (如:663802dfb121e ...