性能与带宽提示

关于 Actor 复制过程中的性能和带宽优化提示

Windows
MacOS
Linux

复制 actor 是一件耗费时间的工作。引擎会尽量让这个过程变得更有效率,但您也可以做一些额外的工作来简化这个过程。

在收集 actor 用于复制时,服务器将检查一些事项,如相关性、更新频度、休眠情况等。您可以调整这些检查项以改善性能。要最大限度提升这一过程的效率,最好是遵循以下优先顺序:

  • 关闭复制(AActor::SetReplicates( false )

    • 当 actor 未进行复制时,它最初不会出现在列表中,我们可以充分利用这一点,确保那些无需复制的 actor 会有相应标记。

  • 减少 NetUpdateFrequency 值

    • actor 的更新次数越少,更新所用的时间就越短。最好是尽量压低这个数值。该数值代表了这个 actor 每秒复制到客户端的频度。

  • 休眠情况

  • 相关性

  • NetClientTicksPerSecond

如果属性并非是绝对必需,则不要将其标记为复制。如果可以,最好能尝试从现有的已复制属性中派生状态。

尝试利用已有的量化函数,如 FVector_NetQuantize。这样能大大减少向客户端复制此状态时所需的大小,如果使用得当,就不会导致任何明显的偏差。

FName 一般不会被压缩,所以在使用它们作为 RPC 的参数时,请记住它们通常会向字符串发送所有调用。这会产生很大的资源消耗。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback