HotPatcher: A open source UE resource hot patching tool

重要通知:作者没有任何平台和渠道录制收费课程,也不对任何第三方的商业行为背书。请擦亮双眼,谨防上当受骗。
本软件的开源协议:允许在商业项目中免费使用功能,但不允许任何第三方基于该插件进行任何形式的二次收费,包括但不限于录制收费课程、对插件及代码的二次分发等。

HotPatcher是一个用于管理热更版本和资源打包工具,用于追踪工程版本的原始资源变动来打出Patch。支持一键Cook多平台,一键打包多平台Patch,编辑器支持Windows和MacOS,再写一套从服务器下载patch的流程就是一套完整的游戏热更方案。HotPatcher已经在非常多的UE项目中使用,并会持续更新支持新的引擎版本,欢迎提issus。

HotPatcher与UnrealFrontEnd中的Patch机制不同,UE的Patch管理工程时存在一些问题:基于原始的的工程版本,很难在不同的电脑上打出完全相同的Patch,也无法基于Patch的版本再打出一个Patch,并且Patch包含的内容不能够直观预览。并且不能方便地能够把外部文件打包到pak中(如lua文件、db等non-assets,往往不在Content目录下),也无法方便地管理工程和Patch版本。

这个插件就是为了解决这样的问题,以项目原始资源作为版本依据,只需管理工程本身而无需关注UE生成的其他文件。并且可以方便地进行Cook/生成Pak/提取基础包中的资源信息/版本间diff/Patch拆分等操作。具有非常丰富的配置化选项与Commandlet支持,可以非常方便地实现自动化热更新出包流程。

目前支持的引擎版本为UE4.21-UE5,并对IoStore机制提供了支持!有很多朋友私信来问插件相关的问题,我创建了个群来讨论UE热更新和HotPatcher插件的问题(QQ群958363331),欢迎加入交流UE相关的技术。

为了方便地统一收集和管理热更新和HotPatcher常见的问题与解决方案,我新建了一篇文章来记录和整理:UE4热更新:Questions & Answers,遇到问题可以先去看这个FAQ页面。关于比较多人反馈插件内配置参数与之前的录制视频不一致的问题,是因为插件进行了很多更新迭代,每个版本的详细变动,可看更新日志

阅读全文 »

Design specifications and code standards for UE projects

最近新开了项目,大概总结了之前项目的一些问题,列举了一些UE开发项目的设计规范和代码标准(代码标准这个词看起来太严肃了,写代码的习惯是一个比较主观的概念,其实叫代码约定更好,但是在组内推广还是要有严格执行的要求)。本篇文章会持续更新和整理,欢迎指出问题和交流意见。

阅读全文 »

最新版本已支持UE5,详见github的UE5.0分支:ue4-export-nav-data/tree/UE5.0

Recast Navigation是一个开源的游戏导航/寻路引擎,可以为游戏中的AI提供寻路计算。UE和Unity都是集成了RecastNavigation来为游戏提供导航和寻路计算(当然是修改过的版本),UE的模块NavigationSystem以及NavMesh中可以看到相关的代码实现。
最近有个需求是要将客户端的地图信息导出给非UE网络架构的服务端,用于在服务器上对玩家位置的校验,想到可以把客户端的生成的导航数据导出作为客户端世界的地图,所以折腾了一下写了一个UE的插件(开源在Github上:**ue4-export-nav-data)实现了直接**将UE生成的导航数据导出,有兴趣的可以直接去看具体的代码。
根据导出的导航数据可以完整地在非UE网络架构的服务端上实现基于Recast Navigation的寻路计算,而且与UE无缝衔接。

**2019.12.04 Update:**本插件已上架虚幻商城,购买链接ExportNavigation,为了程序员情怀支持开源,所以该项目在Github上的开源仓库不会关闭,但基本不会更新,如果该插件对你有用,欢迎在商城购买支持作者。

阅读全文 »

Oculus Quest是Oculus发布的新一代支持6DoF的VR一体机设备,不需要连接PC以及额外的定位基站,而且支持Guardian,当戴着头显走出定位边界时,头显中会立即显示现实中的画面,防止玩家误碰出现意外情况。
Oculus Quest使用两个Pentile OLED的屏幕,单眼分辨率为1440x1600,刷新率为72Hz,使用的是arm架构的高通骁龙835处理器,与两年前的Android旗舰级的处理器相同(如小米6、三星S8)。
Quest使用的是Oculus Insight(inside-out tracing)定位方案,使用四枚摄像头进行位置追踪,分别位于头显面板的四角。
发布会时对Oculus Insight的介绍:Oculus Insight VR Positional Tracking System (Sep 2018)

以及国外的一个老哥对Quest追踪范围的测试视频:Quest Distance Test.

Oculus Quest64G存储版本的售价为399刀,128G的为499刀,不计税的价格大概是3500;相比较HTC的同类新产品(HTC Vive Focus)是便宜了不少,与PC-Base VR相比那就更具优势了,还不需要一台高性能的主机,我觉得6DoF的VR一体机设备一定是未来的趋势!

国庆前的OC6,Oculus发布了Oculus Link和finger tracking两项技术,十分厉害,十分看好。

整套Quest设备的大小与10.5寸的iPad差不多,提个小包就能带走:

Quest设备的参数细节不再多说,本篇文章的主要内容是使用UE来开发Quest项目时的环境部署、开发文档、调试工具以及额外的注意事项,会持续更新。

阅读全文 »

Module是构成Unreal的基本元素,每一个Module封装和实现了一组功能,并且可以供其他的Module使用,整个Unreal Engine就是靠各个Module组合驱动的,连我们创建的游戏项目本身,都是一个单独的Module。

那么UE又是怎么创建和构建这这些Module的呢?这是写这篇文章的主要目的,研究一下Unreal的构建系统以及它们(Target和Module)支持的各种属性。

建议在看这篇文章之前先看一下我之前的这篇文章:Build flow of the Unreal Engine4 project,主要内容是大致过一遍UE的构建流程,本篇文章只是UE构建系统中的一环。

阅读全文 »

UE tool chain configuration and development skills

工欲善其事,必先利其器!掌握好的工具会使开发效率上一个层次。
本文是我平时记录在notes中关于UE工具链以及一些组合UE使用的工具配置和使用技巧的笔记整理,后续这方面的内容也会收录到这篇文章中。
下面是我之前写的关于UE工具链或扩展相关的单独的文章:

阅读全文 »

Analyzing the content distribution restrictions of EULA in UBT

UE的EULA License Grant/(A) 中明确说明了,使用UE开发并再分发的内容不得包含 未Cook的源格式 和基于 引擎工具 开发的付费内容,本篇文章研究一下EULA里对内容分发的具体内容和从技术上怎么绕过这个限制。

阅读全文 »

PixelStreaming: Basic Concepts and Getting Started

PixelStreaming是UE_4.21开始支持的一项技术,简单来说就是能够将游戏跑在服务器上,你可以通过浏览器来玩,玩家端不需要额外操作,只需要一个浏览器,所有的逻辑处理和渲染都在“云”端执行。它不仅仅只是一个插件(虽然有PixelStreamingPlugin这个插件,但它只是PixelStreaming实现中的一环),其实现具有一套独立与UE游戏的设计和组织方式。
本篇文章主要介绍PixelStreaming中的基本概念和使用PixelStreaming的Demo的实际体验。

阅读全文 »

在Windows上,UE的模块在非IS_MONOLITHIC(打包成一个单独的可执行文件的单片模式(Monolithic))模式下,是通过查找DLL来加载模块的。可以调用FModuleManager下的LoadModuleWithFailureReason/LoadModuleChecked等函数,通过传入Module的字符串名字来加载。
本篇文章算是UE4 Modules:Load and Startup的扩展和补充,与之不同的是,这篇文章的侧重点在于Module的DLL的查找和加载的细节而不是引擎启动和加载Module的时机和顺序。

阅读全文 »