首页 > 编程知识 正文

ue4打包失败,ue4大场景优化思路

时间:2023-05-06 03:31:19 阅读:57313 作者:3428

文章1、性能指标查看方法2、性能优化方法优化帧速率优化UE4项目启动速度优化包速度和使用Jenkins连续整合交付消除资源浪费3、 编译软件包失败处理代码失败发行软件包失败其他高速缓存路径垂直同步(vsync )配置文件工具分析逻辑线程参考文档

一.如何查看性能指标

可以通过输入命令在界面中显示当前软件的性能数据。 在游戏运行阶段,按~键,会显示命令输入框。

输出命令stat fps、简单输出帧率命令stat unit、游戏逻辑线程和渲染线程所需的时间命令stat engine、用于计算当前渲染的三角面数的接口Statistics,然后单击Rider的日志输出或日志文件(

完成帧//帧所需的总时间

Game //逻辑线程、CPU的逻辑处理需要时间

Draw //渲染线程、CPU的图像处理需要时间

gpu //GPU处理当前图像需要时间,可以通过stat轻松确认GPU的时间状况

DynRes //未知

二、性能优化的方式优化帧率性能优化。 主要关注三角面的数量。 在我的电脑(显卡1080 )上,当面数小于几千万面级时,帧率达到30。

有多种方法可以优化三角面的数量。

模型制作LOD。 特别是树木和小钟摆这样数量多的模型,制作LOD后的优化效果特别明显。 场景中还有建筑模型和地理模型。 我们的建筑模型一般有几百到几千万面。 要创建LOD,可以使用UE4附带的LOD生成工具自动生成面数为设定百分比的模型。 如果自动生成的效果被接受,请保存。 小东西可以把面数的比例控制在1%以下。 (具体数值需要测试。 )距离远的时候不知道区别。 距离近的时候看看生气的姐姐。 使用LOD Coloration显示模式,可以快速导航到未加载的模型。 创建去体积(由于我们的项目需要查看所有模型,因此没有采用该方法。 有简单的介绍)。 也可以降低贴图分辨率以提高渲染效率。 在灯光贴图隔离显示模式下,可以确定哪个模型的贴图分辨率过大或过少。 蓝色分辨率太低,红色太高,目标是从绿色调整到橙色之间。

stat unit命令介绍

遮挡开关:项目设置-计算-计算计算

剔除体积: CullDistanceVolume

优化UE4项目启动速度的UE4在启动项目时需要构建所有网格体,存在模型越大需要时间、项目启动变慢的问题。 每当设计师导入或修改新模型时,其他同事都需要花这个时间重建模型。

*优化方案: **没有好的解决方案。 但是,一个模型可以尽可能一次优化提交,避免同一模型被多次修改和提交。 这是因为每次提交都需要时间进行重建。

优化包速度和减少包容量UE4默认情况下将打包所有Map,包括初学者包的Map。 打包这些无用的Map会产生很多无用的资源。 因此,提高包装速度和减少包装容量的最佳方法是将需要包装的映射图添加到包装列表中。

*具体操作: * *项目设置-打包-将需要打包的地图添加到listofmapstoincludeinapackagedbulid

渲染剔除

可以从rider log中输出打包所需的时间,也可以查看log文件(在“路径项目路径”(saved ) logs中)。 中的每个log都有发生时间,通过简单的计算即可计算出打包需要很长时间。

打包包括以下过程:

BUILD COMMAND STARTED,编译项目代码成为可执行文件COOK COMMAND STARTED,构建资源文件STAGE COMMAND STARTED,在上面生成的文件ARCHIVE COMMAND STARTED 生成最后一个包主要需要前两个阶段,第一个阶段编辑了与前两个阶段相同的代码一次后,第二次不需要花很多时间,大约10秒就可以了。 第二阶段优化,还是减少资源文件的数量很重要。

稍后添加文章,了解Jenkins如何构建持续集成交付。

通过采用Jenkins,不仅可以将包工作交给服务端,还可以提高工作流的效率。

打包的命令配置介绍: http://wangjie.rocks/2018/08/09/ue4-UAT-buildcookrun-cmd /

删除不使用资源的migrate方法,并将项目使用的map导出到新的content目录。 这将一起导出map引用的所有资源文件。 然后,可以将主项目的content目录与此新的content目录进行比较,以找到并删除项目中未使用的资源。

三、打包失败处理代码编译失败编译错误,因为文件名有中文

*异常详细信息: **编译过程中出现乱码,立即表示编译失败,但失败提示未被定位为问题(例如

充更多信息)。
**解决方案:**文件名改名,并且修改git的设置,git config --global core.quotepath false(git的修改不确定是否相关) 发版打包失败 Rider平时编译没问题,但打包版本时报错,还发现Rider重新编译后也会报错

**异常详情:**Rider重新编译报错,说无法打开文件dll,但居然偶尔编译成功;使用UE4打包会报详细点的错误,在log文件里查到编译停在自己写的Cpp,报错为“ProcessResult.StdOut: d:/ue4.23/egine/xxx/PhysXIncludes.h : fatal error C1083”
**解决方法:**问题原因是cpp文件导入了异常头文件(写代码时,误调用名字类似的类,rider会自动导入该类的头文件,即使删除了调用的代码,头文件不会自动删除,导致编译时失败),删除即可。

XXX has an inappropriate outermost, it was probably saved with a deprecated outer

**具体信息:**LogLinker: Error: HOTRELOADED_SceneGameMode_0 has an inappropriate outermost, it was probably saved with a deprecated outer (file: /Projects/Content/Widget/W_Error.uasset)
这个问题是由于W_Error.uasset中使用的SceneGameMode发生改动造成的。

**解决方式:**删除W_Error中所有用到的SceneGameMode,然后重新创建SceneGameMode即可。

修改过资源存放的路径,导致很多资源找不到了(材质、贴图等)

**解决方法:**需要重新修改资源的引用。导入资源时最好在一开始就确定好它的位置,后面不要轻易修改。

其他 缓存路径 开发项目:项目路径/项目名称/Saved发布版本:C:Users你的用户名AppDataLocal你的项目名称Saved
网页缓存路径:上述路径/webcache 关闭VSync(Vertical Sync)

Vsync 用于解决屏幕撕裂,在显示器刷新率跟不上三维应用的FPS时,通过限制游戏FPS来解决该问题。一般我们应用达不到屏幕的刷新率,因而可以关闭该功能。
关闭方式:蓝图里有vsync的开关(经测试,默认是关闭的)。还有关闭smooth Frame Rate。

Profiler工具分析逻辑线程

瓶颈在逻辑线程的分析方式

游戏运行过程中,cmd输入"stat startfile",运行一段时间,再输入"stat stopfile",此时会在项目”SavedProfilingUnrealStats“目录里保存运行记录。

回到UE4,打开Windows-DeveloperTools-SessionFrontend,在Profiler界面点击load,加载刚才保存的文件。

待整理

stat game?

分析GPU
快捷键"Ctrl+Shift+,"

参考文档

性能优化官方文档:https://docs.unrealengine.com/zh-CN/Engine/Performance/index.html

Profiler用法:https://blog.csdn.net/xingyali/article/details/82217143

Profiler官方文档:https://docs.unrealengine.com/zh-CN/Engine/Performance/Profiler/index.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。