当前位置: 首页 > news >正文

《UE5_C++多人TPS完整教程》学习笔记55 ——《P56 网络更新频率(Net Update Frequency)》


本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P56 网络更新频率(Net Update Frequency)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Stephen Ulibarri 发布在 Udemy 上的课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。
在这里插入图片描述


文章目录

  • P56 网络更新频率(Net Update Frequency)
  • 56.1 了解并设置网络更新频率
  • 56.2 Summary


P56 网络更新频率(Net Update Frequency)

本节课我们将了解网络更新频率,并尝试更改相关设置来改变角色从服务器接受更新消息的频率以及服务器的 Tickrate,它将决定我们的服务器能以多大的速度向客户端发送更新消息。
在这里插入图片描述


56.1 了解并设置网络更新频率

  1. 打开虚幻引擎进行多人游戏测试,当我们操控其中一个客户端上的人物角色慢慢进行转向时,可以观察到服务器和另一个客户端上的人物角色的腿会有些抖动(Twitch),那是因为在模拟代理端动画蓝图的 Tickrate 和网络传输更新有关,它可能会比被控端的实际 Tickrate 要低。
    在这里插入图片描述

  2. 在动画蓝图 “BlasterAnimBP” 的 “AnimGraph” 事件面板中选择 “旋转根骨骼” 节点,接着在右侧细节面板中勾选 “插值结果”(Interp Result),这样做之后可以发现人物角色的腿没有抖动了。但是在非被控端上,我们控制的人物角色根骨骼旋转会比在被控端上的慢一些。
    在这里插入图片描述

  3. 打开人物角色蓝图 “BP_BlasterCharacter”,在右侧细节面板找到 “复制”(Replicaiton)选项卡,在选项卡下可以看到 “网络更新频率”(Net Update Frequency)和 “最小网络更新频率”(Min Net Update Frequency)两个参数。“网络更新频率” 是考虑将 Actor 进行复制的频率(每秒),用于决定 “NetUpdateTime”;“最小网络更新频率” 是用于决定在复制属性很少发生变化时的节流率,它可以决定为了优化带宽性能(Bandwidth performance)引擎更新频率的下限。我们可以尝试设置 “网络更新频率” 为 4.0,模拟当网络传输状态较差时引擎的更新速率进行测试,可以发现人物角色的动画更新都有些掉帧。

  4. 在 “BlasterCharacter.cpp” 的构造函数 “ABlasterCharacter()” 中设置网络更新频率的默认值为 66.0,设置最小网络更新频率默认值为 33.0。

    /*** BlasterCharacter.cpp ***/...// Sets default values
    ABlasterCharacter::ABlasterCharacter()
    {// Set this character to call Tick() every frame.  You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;...TurningInPlace = ETurningInPlace::ETIP_NotTurning;									// 默认转身状态为不转身/* P56 网络更新频率(Net Update Frequency)*/NetUpdateFrequency = 66.f;															// 设置网络更新频率MinNetUpdateFrequency = 33.f;														// 设置最小网络更新频率/* P56 网络更新频率(Net Update Frequency)*/	
    }...
    
  5. 在配置文件 “Blaster/Config/DefaultEngine.ini” 中添加代码,设置网络服务器最大 Tickrate “NetServerMaxTickrate” 为 60,它是服务器发送给客户端的更新的最大值。

    ...[/Script/UnrealEd.CookerSettings]
    cook.AllowCookedDataInEditorBuilds=True
    DefaultASTCQualityBySpeed=3
    DefaultASTCQualityBySize=4...[/Script/OnlineSubsystemUtils.IpNetDriver]
    NetServerMaxTickRate = 60
    
  6. 将项目打包并进行多机测试,确保人物角色瞄准偏移、转身等动画都能进行网络同步。(笔者比较懒,这里就不进行测试了)


56.2 Summary

本节课我们了解网络更新频率和服务器 TickRate 的基本概念;接着,我们在 C++ 代码中设置了网络更新频率和最小网路更新频率的默认值,并在项目配置文件中设置服务器的最大 Tickrate,为了保证我们的网络配置有效,这里建议将项目打包并在多机上进行测试,观察人物角色的动画在多人游戏环境下是否都能同步且正确地播放。
在这里插入图片描述


http://www.dtcms.com/a/392304.html

相关文章:

  • 华为鸿蒙 ArkTS 实战:基于 RelationalStore 的 SQLite 实现本地数据持久化
  • 流行的 3D 文件格式及其用途指南
  • 腾讯发布一站式工作平台“混元3D Studio
  • TGRS2025 | 视觉语言模型 | 文本驱动自适应网络实现高光谱跨场景零样本分类
  • PyQt6之选项卡示例
  • 研学小程序前端平台开发项目需求规格说明书
  • 【Linux】netplan配置网络;ntp搭建时间服务器;shc将脚本转二进制;ty0tty创建虚拟串口
  • C# ADO.NET 操作学习记录
  • PIT 定时器寄存器配置
  • 算法代码讲座6:最小二乘法理论原理、典型案例与MATLAB实现
  • 【深入浅出】交叉熵损失函数——原理、公式与代码示例
  • Vue实现路由守卫
  • Coze源码分析-资源库-删除工作流-前端源码-核心接口
  • 安踏集团 X OB Cloud:新零售创新如何有“底”和有“数”
  • Web3艺术品交易应用方案
  • Spring 事务管理详解:保障数据一致性的实践指南
  • 软考中级-软件设计师 答题解题思路
  • Java IDEA学习之路:第二周课程笔记归纳
  • SQL语句一文通
  • Ubuntu22.04 双显卡系统使用集显 DRM 渲染的完整流程记录
  • Coze源码分析-资源库-删除工作流-后端源码-IDL/API/应用/领域
  • MySQL库和表的操作语句
  • python、类
  • NumPy高级技巧:向量化、广播与einsum的高效使用
  • GD32VW553-IOT 基于 vscode 的 msdk 移植(基于Cmake)
  • Filter 过滤器详解与使用指南
  • 养成合成小游戏抖音快手微信小程序看广告流量主开源
  • 在 Ubuntu 系统下安装 Conda
  • ac8257 android 9 SYSTEM_LAST_KMSG
  • ARM 架构与嵌入式系统