工具

https://medium.com/neobards/ue4-network-profiler-1-fa8a22372d46

这里面是总结使用UE4 Replicate系统进行优化

首先介绍一些调试命令

net.Reliable.Debug 2 查看Reliable 的RPC函数(具体看函数发起在哪 如果是客户端发起调用,那么只能在客户端查看到该命令的rpc,以下命令也是这种情况)

net.ListActorChannels 查看同步的actor

net.RPC.Debug 1 查看RPC函数调用

netprofile 切换停止/开始录制net profiler数据

1.设置Actor的更新频率,对于一些不需要频繁更新状态的actor可以将频率设置的很低,当需要执行具体联网操作时调用ForceNetUpdate进行更新,例如一扇门,只有打开关闭的时候 调用ForceNetUpdate(注意不要使用Reliable的rpc函数,如果使用的话是会无视更新频率的)

2.设置NetCull距离 注意 这里面的数值是距离的平方 也就是说默认的距离实际是15000(150m)

3.使用NetworkProfiler查看网络信息

工具的位置在引擎Engine\Binaries\DotNET  查看的数据通过netprofile命令获得位置在工程/Saved\Profiling

如果没有特殊设置的 一般默认的17777是客户端 61358是作为服务器端

4.设置Actor的Net Dormancy属性

如果设置为Initial的时候 actor不进行复制 可以通过蓝图SetNetDormancy修改该值,经过测试 设置为其他任何值都会进行复制, 同样有FlushNetDormancy进行强制刷新(应对NetUpdateFrequency比较低的情况)

5.就是参照NetSerialization.h中的说明 自己创建需要复制的struct 并进行序列化

可以手动确定哪些变量进行复制

USTRUCT(BlueprintType)
struct FTestA
{GENERATED_USTRUCT_BODY()
public:UPROPERTY(BlueprintReadWrite)int a;UPROPERTY(BlueprintReadWrite)int b;/*** @param Ar            FArchive to read or write from.* @param Map            PackageMap used to resolve references to UObject** @param bOutSuccess  return value to signify if the serialization was succesfull (if false, an error will be logged by the calling function)** @return return true if the serialization was fully mapped. If false, the property will be considered 'dirty' and will replicate again on the next update.* This is needed for UActor* properties. If an actor's Actorchannel is not fully mapped, properties referencing it must stay dirty.* Note that UPackageMap::SerializeObject returns false if an object is unmapped. Generally, you will want to return false from your ::NetSerialize*  if you make any calls to ::SerializeObject that return false.**/bool NetSerialize(FArchive& Ar, class UPackageMap* Map, bool& bOutSuccess){// Your code here!Ar << a;return false;}/*** @param DeltaParms Generic struct of input parameters for delta serialization** @return return true if the serialization was fully mapped. If false, the property will be considered 'dirty' and will replicate again on the next update.*  This is needed for UActor* properties. If an actor's Actorchannel is not fully mapped, properties referencing it must stay dirty.* Note that UPackageMap::SerializeObject returns false if an object is unmapped. Generally, you will want to return false from your ::NetSerialize*  if you make any calls to ::SerializeObject that return false.**/bool NetDeltaSerialize(FNetDeltaSerializeInfo& DeltaParms){// Your code here!return false;}
};template<>
struct TStructOpsTypeTraits< FTestA > : public TStructOpsTypeTraitsBase2< FTestA >
{enum{WithNetSerializer = true,WithNetDeltaSerializer = false,};
};

UE4 network优化相关推荐

  1. ue4渲染速度太慢_[UE4]性能优化指南(程序向)

    封面来源:A Cold Stop(Mixer 制作材质.UE4渲染 ) [UE4]性能优化指南(美术向)玄冬Wong:[UE4]性能优化指南(美术向)​zhuanlan.zhihu.com 内容都是处 ...

  2. [UE4]性能优化指南(美术向)

    参考自官方文档: Performance Guidelines for Artists and Designers https://docs.unrealengine.com/en-us/Engine ...

  3. [UE4]性能优化指南(程序向)

    零散记录 GPUProfile来统计性能消耗的时候,在editor模式下不是很准,因为编辑器的消耗也算进去了,如果要用,最好以Game模式来查看. UE4不支持640X480的分辨率,如果在这个分辨率 ...

  4. Ue4 UI优化文档整理理解

    1.名词解释 User Widget:对应一个用户界面. Widget Tree:每一个 User Widget 都是存储成树状结构. Panel Widget:不会渲染出来,用于对 Child Wi ...

  5. UE4项目优化(帧数优化)相关知识

    控制台命令 r.screenpercentage 0~100 0是百分之百 如果改了这个 游戏运行超级流畅说明瓶颈在GPU上 stat fps 显示帧率(Frame Per Second)(或者快捷键 ...

  6. UE4 项目优化经验(性能、资源管理、打包等优化)

    UE4 优化(性能.资源管理.打包等优化) 一.如何查看性能指标 二.性能优化的方式 优化帧率 优化UE4项目启动速度 优化打包速度和缩小包容量 采用Jenkins进行持续集成交付 删除不用资源 三. ...

  7. UE4 性能优化方法(工具篇)

    http://www.cnblogs.com/ghl_carmack/p/5481763.html 本文依据UE4官方文档以及官方博客等总结而来,可能不全面,后面会陆续添加.内置工具的详细说明请参考官 ...

  8. MATLAB提示错误使用network,优化双隐藏神经网络出现错误使用 network/subsasgnne...

    nntwarn off %节点个数 inputnum=17;    %输入层节点数 hiddennum1=6;    %隐含1层节点数 hiddennum2=6;    %隐含2层节点数 output ...

  9. ue4 Niagara粒子打包安卓后不显示

    提问:ue4 Niagara粒子打包安卓后不显示今天用ue4中的Niagara粒子做了一个烟花的效果,但是打包到安卓手机后只能看到升上天空的粒子,看不到爆炸效果. 解答: 在打包 UE4 Niagar ...

最新文章

  1. 教你用ERD轻松修改系统登录密码
  2. “用手机就能访问卫星” 软件定义升级卫星智能
  3. python比前端好学吗_前端学习到底难不难?
  4. reduce_sum() got an unexpected keyword argument 'keep_dims'
  5. Delphi 中自定义异常及异常处理的一般方法
  6. hihocoder1260,1261 (HASH经典题)
  7. 在Java中对Singleton类进行双重检查锁定
  8. pthread 简要使用指南
  9. java模拟记事本的一些功能
  10. Android 系统性能优化(24)--布局优化
  11. mysql5.7.26修改账号密码_修改mysql5.7的用户密码
  12. 论文投稿指南——计算机领域核心期刊
  13. 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档
  14. 2019中原银行java实习面试
  15. html td里面元素的获取
  16. Ameba 博客 词汇语法句型 20141101
  17. Orz 终于有了自己的博客地址
  18. POS基本算法详细解析
  19. 闲鱼链接搭建+完整版源码带后台
  20. CF #80 Cthulhu

热门文章

  1. ChatGPT4 的体验 一站式 AI工具箱 -—Poe(使用教程)
  2. dovecot主要配置文件
  3. 经典进程同步问题——吸烟者问题
  4. 基于 layui 的纯前端框架 cy-ui
  5. 关于Python的基础练习题
  6. 风控基础指标之决策树的特征选择
  7. 循环神经网络:LSTM
  8. 为什么祖传代码会被称为屎山
  9. vrrp路由器三种状态_VRRP协议具体解释
  10. 秒开率达90%:腾讯看点客户端 GIF 转视频优化方案