工欲善其事必先利其器,本文主要介绍在我在使用UE的过程中开发的一些开源的工具和插件,能够方便地在项目中使用,提高开发效率。之前简单罗列在资源页面里,今天做一个详细的整理,对各个工具、插件做一些介绍。
Tools
本节主要介绍我开发和部署的UE的外部工具,可以方便开发流程。
UE4PROGRAM
ue4program是一个命令行工具,用于方便地创建UE的Standalone Application
的工具(官方没有提供它的创建方法),可以使用UE来写一些独立程序而不依赖引擎启动的流程,也可以方便地测试引擎的功能而不用创建一个游戏项目。
详细介绍见我之前的文章:Create A Standalone Application in UE4
UE4Launcher
UE4Launcher是一个使用UE的Standalone Application
的方式开发的独立程序,用来方便地切换引擎、启动项目、添加启动参数、保存配置,使用命令行通过配置启动,支持关联uproject
文件,支持配置列表,是一个功能完备的启动器,可替代Epic Launcher作为本地引擎管理工具。
主界面:
uproject的文件关联:
详细的用法和介绍可以看Create A Standalone Application in UE4
UE4_API_FOR_DASH
UE4_API_FOR_DASH是我制作的UE4 API的Dash文档源。可以方便地使用Dash
或者Zeal
来查询UE的C++ API,目前最新的文档源是生成UE4.25.3引擎版本,如果后续有新的引擎版本发布,我也会不定期更新。
文档源的下载和更新,见我之前的文章:抓取 UE4 API 并生成带索引的 Dash 文档
UE4 Console Help
UE提供了Console命令的帮助文档,我把它部署到了公网,可以方便在线查看和搜索。
UE4 Wiki Archive
UE4的官方wiki经历了很大改版,之前老Wiki中的内容都没了,很可惜,老wiki中有很多很棒的内容,所以我部署了UE4老wiki的站点,作为备份。地址:ue4wiki.imzlp.com
Plugins
本节介绍我业余开发的UE中的一些插件,简单介绍一下它们的功能和解决了什么问题。
HotPatcher
HotPatcher是我开发的用于UE热更新资源的打包工具,用来管理热更新版本,进行资源的差异分析并打出pak,支持全平台。
详细的介绍见我之前的文章:UE资源热更打包工具HotPatcher,Github地址:hxhb/HotPatcher
以及我关于UE热更新方案的系列文字,详见Unreal Engine#热更新。
ResScannerUE
ResScannerUE是一个基于AssetRegistry和反射机制实现的资源扫描工具,具有以下优点:
- 名字、路径规则检查无需加载资源
- 名字、路径规则提供通配符支持
- 可以通过提供属性名和值的方式检查资源中的选项
- 支持属性名、值的直接选择,避免输入
- 非常方便自定义拓展检查规则(创建蓝图或C++类实现)
- 支持任意资源类型,绝大部分需求都能Zero-Code实现
- 支持配置的导入/导出
- 支持Commandlet实现自动化
- 支持Git提交的版本比对、待提交文件比对
命名、路径、属性可以严格匹配多个,也可以从多个规则中匹配一个,可以实现类似(
(expression) && (expression || expression)
,如以T_
开头,以_x
或_d
等结尾这种模式的匹配)。
界面预览(与HotPatcher风格保持一致):
详细的用法和介绍可以看以下两篇文章:
ExportNav
ue4-export-nav-data是我开发的用于从UE4导出Recast Navigation寻路数据的插件,可以用在非DS架构的服务器中用作地图同步以及寻路计算使用。该插件上架了虚幻商城,但是依然在Github上开源。
详细的文档介绍见我之前的文章:Export Recast Navigation Data from UE4
另外,针对外部服务器使用导出的Recast数据,我也抽出了UE所使用的recast-detour版本,可以用在外部服务器的寻路:ue4-recast-detour
AppCmderUE
AppCmderUE:支持通过命令行启动UE Android App并传递参数。详见文章:高效调试:命令行参数启动UE Android App
用法:
1 | append_cmd.bat com.imzlp.gworld "-test123" "-test456" "-test789" |
运行日志:
1 | Final commandline: ../../../Blank426/Blank426.uproject -test123 -test456 -test789 |
ue-zstd
ue-zstd是我集成到UE的ZSTD压缩算法,使用ModularFeature的方式集成,可以替换引擎中默认的ZLib算法,也可以配合HotPatcher使用,替换pak的压缩算法。
详细的文档见我之前的文章:ModularFeature:为 UE4 集成 ZSTD 压缩算法
ue4-dtkit
ue4-dtkit是我基于HTTP封装了一个下载库,支持边下边存/边下边计算MD5,这样当文件下载完也已经存到本地了,并且还计算出了MD5值可以供校验用。还支持暂停/继续/分片下载,自己改一下也可以改成断点续传的。
开源在Github上:ue4-dtkit,支持IOS/Android/Windows/Mac四个平台。
在这个插件中我还封装了一个MD5Wrapper.hpp
可以用来在其他地方的MD5计算,使用的是OpenSSL
的库。
PlatformUtils
PlatformUtils是一个跨平台插件,用于在四个平台(Win/Mac/Android/iOS)获取硬件信息,主要是用作展示UE的跨平台写法,如何集成iOS的framework
并使用、Android添加Java代码、使用JNI调用等特定平台的原生操作。
unreal-pb
unlua-pb是集成lua-ptorobuf到UnLua的Module,之前没有UnLua的版本,我做了集成。
debugable-unlua
debugable-unlua是Fork自Tencent的UnLua,我在其基础上修改,基础版本为106fa9c,目的是打造一个开箱即用的UnLua,可调试和一些基础lua库、编辑器优化。
GitControllerUE
GitControllerUE可以在UE中操作Git仓库,可以用来拓展UE的版本控制功能。
ue4-protobuf
ue4-protobuf是以源码方式集成的protobuf,版本为3.5.1。
ue4-jwt
ue4-jwt在UE中集成JWT的插件,可以用来跨域认证。