文档章节

UE4 Gitdependencies CDN Package 制作

OSChina首席情感咨询师
 OSChina首席情感咨询师
发布于 04/18 18:14
字数 1496
阅读 62
收藏 0

1、前言

使用虚幻引擎源码版本的人都知道,安装好一个源码版的引擎,除了大部分时间在编译引擎上时,比较耗时的就是Setup.bat从虚幻获取dependencies资源的部分。

这些文件包括*.dll ,*.exe,美术资源等比较占用资源等内容,不适合放在Github上,所以官方自己做了一个叫"GitDependencies"的工具,虽然使用"--threads=100"参数可以提高下载的线程数,但如果网速限制,或者是在一些研发内网的情况,以及需要大量装机的时候,就不太方便.

添加多线程下载可以提升下载速度至满带宽

2、Setup中GitDependencies过程

先分析GitDependencies执行过程,核心代码在 UnrealEngine\Engine\Source\Programs\GitDependencies\Program.cs 

  • 初始化环境,解析参数

        GitDependencies.exe --prompt后面能追加的参数如图

其中几个可能会用到有

--threads=N:开启N个线程下载,提升速度。

--dry-run:仅仅显示需要下载、更新等内容后直接退出,不进行实际的下载,局域网环境下,Git更新的时候也会运行GitDependencies,如果无法连接外网就会造成长时间等待超时,可以尝试使用这个参数跳过下载。

--cache=<PATH>:自定义下载时缓存包的位置

 

  • UpdateWorkingTree

        UpdateWorkingTree函数为主要执行逻辑部分,将前面的参数传入后,主要经过以下步骤               

  1. 检查已经剔除扫描的文件或文件夹
  2. 定义.ue4dependencies的位置,最后扫描更新完成后会生成一个.ue4dependencies文件
  3. 读取或创建一个manifest
  4. 移除之前的下载任务
  5. 读取xml文件中所以Files\Blobs\Packs的内容,虽然读取时会查找所有模块或是插件中的.gitdeps.xml为后缀的文件,但默认情况下只有一个D:\UnrealEngine\Engine\Build\Commit.gitdeps.xml 文件,这个文件也是后面工具主要使用的原始数据来源
  6. 遍历完所需的文件后,再剔除掉忽略的文件,以及临时文件是否需要替换。生成所需下载文件的列表
  7. 下载所需的文件包(文件包非最终的文件,一个是Packs,以Hash名为文件名,一个是Files,为最终的文件)
  8. 下载解压完成后,会生成一个.ue4dependencies,如果以及存在,则会更新文件列表和时间戳
  9. 最后对可执行的exe文件进行权限设定

主要步骤可以分为三部:1、收集下载内容  2、下载解压内容  3、记录内容关闭

DownloadDependencies是实际下载pack包的地方,也是用到网络的地方,有时候需要更新下载多个文件只需要下载一个包,有时下载一个文件也可能需要下载多个包,通过:

			// Find all the required packs
			DependencyPackInfo[] RequiredPacks = Packs.Where(x => PackToBlobs.ContainsKey(x.Pack.Hash)).ToArray();

来判断找出当前需要下载的N个文件,需要下载哪些包资源。资源分为Incoming和Working两种状态,一个是下载过程中,一个已经解压存放完成的,例如WorkingFile就有Timestamp记录文件下载的时间戳。

Files记录了文件名的信息,Blobs记录了文件所属的Pack和字节偏移数和字节大小,Pack为原始资源的二进制包,Files通过GetIncomingFilesForPack函数,传入Blobs参数,从Pack中解压出文件。

使用pack可以有几个好处,将大文件切分,保持源文件不可读/使用,规避下载exe或是dll后缀文件的安全问题。

3.Pack镜像资源

即使不使用cache参数,Pack下载的资源也已经存在本地,目录为:D:\UnrealEngine\.git\ue4-gitdeps\ 中,所以建立自己的Pack资源镜像时,不用完全从http://cdn.unrealengine.com/dependencies 再次拉取(给它省点带宽),而是先从本地缓存的位置搜索Pack包,如果没有再从网上拉取,来建立资源镜像。

BaseUrl为下载链接的基础URL,顺便测试一下国内各个地方对虚幻这个CDN地址的访问速度

测试数据来源由上海云测网络科技提供:https://www.17ce.com/

资源pack的实际下载地址=BaseUrl+”/“+RemotePath+"/"+Hash

例如:下载Engine/Binaries/DotNET/AgentInterface.dll 需要下载10565092db8aab55124eac964964afe461a33072包,是除去包头的12288个字节大小的文件,10565092db8aab55124eac964964afe461a33072包总大小有2006146,压缩后是664170,

下载地址是:http://cdn.unrealengine.com/dependencies/UnrealEngine-4694924-e79d3fab97494aa18fa58bb07dc860e7/10565092db8aab55124eac964964afe461a33072

假设我们先建一个镜像的根目录 UE4GitDPack/

那么我需要把【UnrealEngine\.git\ue4-gitdeps\10\10565092db8aab55124eac964964afe461a33072】文件复制到 UE4GitDPack/UnrealEngine-4694924-e79d3fab97494aa18fa58bb07dc860e7/中,若本地缓存未找到,则从网上下载。

最后我们就会得到这样一个镜像目录:

随后将整个UE4GitDPack文件夹的内容,部署到自己的http服务或是文件服务上,再替换Commit.gitdeps.xml文件里的BaseUrl地址为自己服务器的地址,就可以构建自己的依赖镜像,Commit.gitdeps.xml文件有更新,就重新运行一次工具就可以了,甚至可以直接扩充GitDependencies的功能,加入一个自动建立本地镜像的功能,毕竟下载、拷贝、解压、查找包文件的功能,GitDependencies里面都包含了。

整个镜像大小约为:

实际是3101个files,出现3105是因为有Incoming文件

 

4、其他

其实在setup后的两步流程,安装UE4PrereqSetup_x64和引擎注册都很重要,新装环境

文中若有解释不对的地方,欢迎指正。

镜像制作工具下载:

链接: https://pan.baidu.com/s/1IUQQ36A6-O_MfJ8xgXT1gw 提取码: 2m8n

 

© 著作权归作者所有

OSChina首席情感咨询师
粉丝 3
博文 7
码字总数 3998
作品 0
徐汇
私信 提问
Unreal Engine 4.23 发布,虚幻引擎

虚幻引擎是一个面向 PC、Xbox 360、iOS 和 PlayStation 3 的完整开发框架,其中提供了大量核心技术、内容创建工具以及支持基础设施内容。4.23 版本已经发布。 影视制作发生了转变:此版本中,...

afterer
09/06
2K
1
VR这么火,你选UE4还是Unity 3D?

在虚拟现实大热的今天,开发者界也出现了“甜豆花”与“咸豆花”之争。在游戏开发者制作游戏时,面对都是免费、都支持各大平台的UE4和Unity 3D,选择何种游戏引擎,似乎有点难以抉择,左手U...

1405048499729402
02/21
0
0
使用UE4制作简单的局域网对战小游戏

原帖地址:https://arcecho.github.io/2017/04/28/使用UE4制作简单的局域网对战小游戏/ 大多数文章都是只讲到大致的UE4网络的概念,并未涉及实际使用。事实上在使用的时候还是有很多要注意的...

qq_24835213
2017/05/06
0
0
(个人)VR实时交互的太极拳学习系统创新实训第一周(1)

这周主要进行了人物模型和示例动画的制作和利用动捕进行舞蹈学习的论文的学习。 使用Neuron和Motion Builder进行了太极拳动作的采集和处理。以下是我使用Motion Buileder导出模型到MAYA,再导...

little_raspberry
2018/04/06
0
0
(个人)VR实时交互的太极拳学习系统创新实训第二周(2)

这篇博客,主要介绍一下,在开始关卡关于摄像机动画和Matinee动画的一些制作技巧和心得。 因为之前也没有用UE4 制作过摄像机动画,因此进入UE4官方文档查找与摄像机动画有关的方法。 解析来是...

little_raspberry
2018/04/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PCB设计-Allegro软件入门系列-allegro环境变量和快捷键

Allegro作为一款高速PCB设计的EDA软件,有完善的约束规则设计和信号完整性电源完整性仿真等各种专业工具深受电子行业从业者喜爱。 对于该软件来说,电子从业者接触最多的就是Allegro的画板功...

demyar
21分钟前
4
0
腾讯云存储

1、进入腾讯云平台,创建 2、进入配置查看域名 3、查看KEY参数 4、将2、3中的参数录入到cms后台 然后点测试按钮查看情况

迅睿CMS-PHP开源CMS程序
22分钟前
4
0
ES 6.x 版本 待验证的CURL命令查询操作

1. 查询数据 curl -H "Content-Type: application/json" -XGET http://elastic:123456@127.0.0.1:9200/alias1/_search -d '{"query": {"match_all": {}}}' 2. 添加数据 如果有不指定ID可以自......

coord
30分钟前
3
0
如何写好论文摘要:研究人员不得不知的小秘诀

我们为何要写摘要? 它的目的为何? 简而言之,摘要的目的就是简单的讨论这篇文章让读者更容易的了解这篇文。 它能在读者与作者之间搭起一条桥梁。当您搜索信息时,您无法一下阅读整篇文章,...

论文辅导员
33分钟前
3
0
移动端、PC端(前后台)、小程序常用的UI框架

移动端、PC端(前后台)、小程序常用的UI框架 1.移动端UI库 ①.Vant UI 官方地址:https://youzan.github.io/vant/#/zh-CN/intro github地址:https://github.com/youzan/vant 优点:用来做移...

jason_kiss
33分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部