`
aigo
  • 浏览: 2569143 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

[UE4]Actor Replication(同步)的性能问题:Performance and Bandwidth Tips

UE4 
阅读更多

 

 

看了下相关文档,UE自带的Replication机制效率还是很低的,UE为了提供通用的同步功能,这个Replication实现的非常简单粗暴,如果是承载客户端链接很多的项目,这个Replication貌似不可取,最好还是根据自己的项目需求自己实现一套同步机制。

关掉Replication:
AActor::SetReplicates( false )

如果实在要用Replication,可以降低更新频率来提升效率:
AActor::NetUpdateFrequency()

 

2016-03-29补充:

v4.4开始,shipping编译出来的版本,会自动禁用Replication,所以如果是对通信性能较高的项目,Replication不要用,只能作为测试工具使用。

Dedicated server connection

https://answers.unrealengine.com/questions/70015/dedicated-server-connection.html

 

官方解释:

Performance and Bandwidth Tips

https://docs.unrealengine.com/latest/INT/Gameplay/Networking/Actors/ReplicationPerformance/

 

 

When gathering actors for replication, the server will check a few things like relevancy, update frequency, dormancy, etc. You can tweak any of these checks to affect performance. When thinking about making this process as efficient as possible, it's best to prioritize in this order:

  • Turning off replication (AActor::SetReplicates( false ))

    • When is actor is not replicating, it's not on the list in the first place, so this is the biggest win, to make sure actors that don't need to replicate are marked as such.

  • Lower NetUpdateFrequency value

    • The less an actor updates, the less time it takes to update. It's best to make this number as low as possible. This number represents how often per second this actor will replicate to clients.

  • Dormancy

  • Relevancy

  • NetClientTicksPerSecond

Don't mark properties to replicate if they aren't absolutely necessary. It's best to try and derive state from existing replicated properties when possible.

Try to take advantage of the quantization functionality that already exists. e.g. FVector_NetQuantize. These will greatly reduce the size needed to replicate this state over to clients, and if used properly, shouldn't cause any noticeable artifacts.

FNames are not generally compressed, so when you are using them as parameters to RPCs, keep in mind that they will generally send the string each call. This can be a lot of overhead.

 

另一篇关于UE的Replication解释:
Everything you ever wanted to know about replication (but were afraid to ask)

https://wiki.beyondunreal.com/Everything_you_ever_wanted_to_know_about_replication_(but_were_afraid_to_ask)#Things_to_keep_in_mind_while_reading

分享到:
评论

相关推荐

    UE4 Actor对象池插件

    在这个场景中,"UE4 Actor对象池插件"是一个专门针对UE4设计的工具,用于优化游戏性能,特别是处理大量动态对象的创建和销毁。对象池是一种内存管理策略,它预先创建并存储一组对象,当需要时可以从池中获取,而不是...

    深入浅出UE4网络 - Leonhard

    1. **Actor Replication**:在UE4中,Actor是场景中可交互对象的核心类,包括但不限于玩家角色、游戏道具等。Actor Replication指的是在多玩家环境中,引擎自动或手动触发Actor的状态同步过程,确保所有客户端上的...

    ue4 联网配置

    2. **Actor Class Replication**:在UE4中,你需要标记哪些Actor类需要在网络上进行复制。通过实现`Replicated`宏,你可以控制哪些属性和函数应该在网络上传输。例如,你可以让玩家的位置、健康值等关键信息进行同步...

    UE4 Actor遍历的几种方式(如果有纰漏会更新)

    在实际使用中我们可能会用到UE4遍历场景中的Actor。 注意: 1.不要在构造函数中遍历。 2.如果涉及到RPC和属性复制,一定是在第一次复制完成后再进行遍历,防止role没同步过来。 3.写在构造函数里可能会为空GetWorld...

    UE4引擎浅析

    通过继承UE4的Actor类,可以快速创建具有物理属性、动画和行为的实体。 2. **组件系统**:UE4的组件系统是基于C++的,开发者可以创建自定义组件来扩展对象的功能,如碰撞组件、动画组件、AI行为树组件等。每个组件...

    UE4艺术大师:蓝图 全套

    《UE4艺术大师:蓝图 全套》是一个深入学习Unreal Engine 4(UE4)蓝图系统的资源集合。蓝图是UE4中一个强大的可视化编程工具,它允许艺术家、设计师和程序员通过图形化界面来创建游戏逻辑,而无需编写C++代码。这个...

    UE4离线官方中文文档

    《UE4离线官方中文文档》是针对Unreal Engine 4(简称UE4)的一份完整、详尽的中文参考资料,适用于2018年2月之前的所有版本。UE4是由Epic Games开发的一款强大的游戏引擎,广泛应用于游戏开发、虚拟现实、影视特效...

    UE4帮助文档 UE4离线帮助文档 UE4API

    虚幻引擎4(Unreal Engine 4,简称UE4)是一款强大的实时3D创作工具,广泛应用于游戏开发、影视制作、虚拟现实等多个领域。UE4的API是其核心功能之一,提供了丰富的编程接口,允许开发者通过C++或者蓝图系统进行深度...

    UE4官方中文文档.rar

    《UE4官方中文文档》是Unreal Engine 4(简称UE4)用户的重要参考资料,它提供了详尽的技术指导和教程,帮助开发者深入了解和熟练运用这款强大的游戏开发引擎。UE4是由Epic Games开发并维护的,它在游戏、影视、建筑...

    UE4 API chm格式的

    1. **核心类**:如Actor、Component、World等,这些都是UE4中的基础元素,几乎所有的游戏对象都是Actor的子类,Component是构成Actor的基本单元,World则代表了游戏的全局状态。 2. **图形渲染**:包括Material、...

    UE4Slider:UE4滑块组件蓝图类https:youtu.be8cVuZji3pFw

    在Unreal Engine 4(UE4)中,滑块组件是一种强大的工具,允许用户通过图形化界面进行交互式输入,通常用于游戏设置、音量控制、进度条等场景。本教程将深入探讨UE4的滑块组件蓝图类,并提供如何在项目中有效利用它...

    UE4学习笔记----使用C++之控制球体运动并使用移动粒子效果(源代码)

    在UE4(Unreal Engine 4)中,游戏对象的行为和交互主要通过C++或蓝图实现。本笔记将深入探讨如何使用C++编程语言来控制球体的运动,并结合移动粒子效果来提升游戏视觉体验。以下是你需要了解的关键知识点: 1. **...

    ue4 通过ip连接Replicated server

    10. **调试与性能优化**:在开发过程中,使用UE4的网络可视化工具(如NetGraph)可以帮助调试网络同步问题。同时,优化网络通信,减少不必要的数据传输,对保持游戏性能至关重要。 了解并掌握以上知识点,将使你...

    UE4/虚幻4-快速制作鱼眼镜头方法

    在虚幻引擎4(UE4)中,鱼眼镜头效果是一种独特的视觉风格,常用于模拟人眼视角或创造奇特的视觉效果。这种效果通过曲面扭曲图像,使得图像的边缘部分显著扩大,中心部分保持相对不变,从而形成球面投影。在本教程中...

    UE4、UE5模型鼠标点击选中边缘高亮(UE5工程)

    在UE4和UE5引擎中,为模型实现鼠标点击选中边缘高亮的功能是一项常见的交互设计,这可以增强用户在虚拟环境中的体验感。以下是如何实现这一功能的详细步骤: 一、创建UE5的第一人称工程 首先,我们需要启动Unreal ...

    ue4蓝图c++动态改变staticmeshactor材质例子动态修改纹理

    这是ue4 4.22.1 engine 版本的例子。实现了通过蓝图把场景中的AStaticMeshActor和两个动态材质实例UMaterialInstanceDynamic 传给c++ 自定义函数参数。 并在自定义函数里面实现两张材质的动态交替变更,其中一张材质...

    TestForCustomDetail.zip ue4自定义面板

    在UE4中,Classes代表游戏对象或组件,如Actor、Character、Component等。自定义Class面板通常涉及蓝图类的扩展,以提供额外的功能或可视化编辑。 3. 创建自定义Class: - 基于现有的UE4基类(如AActor或...

    UE4vs代码段.zip

    在UE4(Unreal Engine 4)开发过程中,效率至关重要,尤其对于大型项目而言。Visual Studio(VS)作为UE4的主要集成开发环境,提供了一系列工具和功能来优化开发流程。"UE4vs代码段.zip" 文件集合就是这样一个实用...

    UE4的unlua插件

    3. **绑定与调用**:通过UnLua提供的API,可以在Lua脚本中直接访问和操作UE4的对象,如Actor、Component等,也可以在C++或蓝图中调用Lua函数。 4. **调试与优化**:利用UnLua的调试工具,进行脚本的调试和性能优化...

    UE4_TinyECS.zip

    ECS是一种设计模式,旨在解决大型复杂系统中的性能问题,特别是那些基于对象的或继承层次结构的设计。传统的游戏对象模型中,对象通常包含大量的属性和行为,这导致了代码的耦合和难以维护。ECS将对象拆分为三个核心...

Global site tag (gtag.js) - Google Analytics