《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)](#P56 网络更新频率(Net Update Frequency))
  • [56.1 了解并设置网络更新频率](#56.1 了解并设置网络更新频率)
  • [56.2 Summary](#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。

    cpp 复制代码
    /*** 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,为了保证我们的网络配置有效,这里建议将项目打包并在多机上进行测试,观察人物角色的动画在多人游戏环境下是否都能同步且正确地播放。


相关推荐
比企谷八幡8 分钟前
数据库 Page 内部是什么样:Page Header、Slot 和 Line Pointer
数据库·c++·postgresql·数据库架构
代码地平线9 分钟前
C++ 入门篇类和对象·上篇:从本质深剖类与对象与C++基本用法
c语言·开发语言·数据结构·c++·笔记·算法
十五年专注C++开发17 分钟前
C++17之类模板实参自动推导CTAD
开发语言·c++·聚合初始化·catd
wgc2k31 分钟前
Node.js游戏服务器项目移植-1:项目移植版本环境的冲突问题以及技术选型测试
游戏·node.js
星马梦缘32 分钟前
ACM笔记 学习版本
数据结构·c++·算法
Kurisu57540 分钟前
最终幻想VII重制版修改器下载2026最新版
linux·游戏
Brilliantwxx1 小时前
【算法从零到千】【1-7】 双指针算法
开发语言·c++·笔记·算法·leetcode·推荐算法
Irissgwe1 小时前
一、Qt 概述
c++·qt·gui·qt creator
草莓熊Lotso1 小时前
【Linux网络】深入理解 HTTP 协议(一):从基础概念到 URL 编码解码
linux·网络·c++·网络协议·http·软件工程