Unreal Engine 网络系统(五):带宽管理(相关性及优先级)
创始人
2025-06-01 05:13:11
0

目录

相关性

优先级

创建、查找、加入房间(Session)


网络游戏是通过计算机硬件通信方案将多台终端连接,组建的玩家沟通环境,从而使得玩家连接到一起游戏。

受限于网络传输环境的影响,软件设计本身必须要考虑网络资源的应用合理性。不能无限制使用网络带宽。软件设计的本质是优化资源分配,合理使用资源。

从引擎使用层面上,Unreal设计了很多策略来解决网络带宽的节约。

相关性

  • 用于决定是否需要在多人游戏期间复制Actor
  • 复制期间将剔除不相关的Actor,可解决带宽,以便Actor高效复制。
  • 默认的情况是根据玩家与Actor的距离来判断相关性。
  • Server上不会剔除Actor,因为需要保存所有对象信息。当玩家靠近一定距离,在向Client发送信息。
  • 覆盖IsNetRelevantFor函数,可以手动控制相关性,可使用NetCullDistanceSquared属性决定相关距离。

虚幻引擎(依次)参照以下规则确定玩家的相关Actor类组,在AActor::IsNetRelevantFor 中进行:

  1. 如果Actor是bAlwaysRelevant,归属于Pawn或PlayerController、或本身为Pawn或Pawn是某些行为的发起者,则具有相关性
  2. 如果Actor是bNetUseOwnerRelevancy 且拥有一个所有者,则使用所有者的相关性
  3. 如果Actor是bOnlyRelevantToOwner且没有通过第一轮检查,则不具有相关性
  4. 如果Actor被附加到另一个Actor骨架模型,它的相关性将取决于其所在基础的相关性
  5. 如果Actor是不可见的(bHidden==true)。并且它的RootComponent并没有碰撞,则不具有相关性
  6. 如果没有Root Component,则会记录警告,提示是否将它设置为bAlwaysRelevant=true
  7. 如果AGameNetworkManager被设置为基于距离的相关性,则只要Actor低于净剔除距离,即被视为具有相关性

代码如下:

// Engine\Souce\Runtime\Engine\Private\ActotReplication.cpp
bool AActor::IsNetRelevantFor(const AActor* RealViewer, const AActor* ViewTarget, const FVector& SrcLocation) const
{if (bAlwaysRelevant || IsOwnedBy(ViewTarget) || IsOwnedBy(RealViewer) || this == ViewTarget || ViewTarget == GetInstigator()){return true;}else if (bNetUseOwnerRelevancy && Owner){return Owner->IsNetRelevantFor(RealViewer, ViewTarget, SrcLocation);}else if (bOnlyRelevantToOwner){return false;}else if (RootComponent && RootComponent->GetAttachParent() && RootComponent->GetAttachParent()->GetOwner() && (Cast(RootComponent->GetAttachParent()) || (RootComponent->GetAttachParent()->GetOwner() == Owner))){return RootComponent->GetAttachParent()->GetOwner()->IsNetRelevantFor(RealViewer, ViewTarget, SrcLocation);}else if(IsHidden() && (!RootComponent || !RootComponent->IsCollisionEnabled())){return false;}if (!RootComponent){UE_LOG(LogNet, Warning, TEXT("Actor %s / %s has no root component in AActor::IsNetRelevantFor. (Make bAlwaysRelevant=true?)"), *GetClass()->GetName(), *GetName() );return false;}return !GetDefault()->bUseDistanceBasedRelevancy ||IsWithinNetRelevancyDistance(SrcLocation);
}bool AActor::IsReplayRelevantFor(const AActor* RealViewer, const AActor* ViewTarget, const FVector& SrcLocation, const float CullDistanceOverrideSq) const
{return IsNetRelevantFor(RealViewer, ViewTarget, SrcLocation);
}

 

优先级

有时没有足够的带宽复制所有相关的Actor。因此Actor拥有优先级,决定优先复制的Actor

  • PawnPlayerControllerNetPriority默认为3.0;
  • 基础Actor的NetPriority默认为1.0

创建、查找、加入房间(Session)

PS:Unreal一般不建议使用OpenLevel来加载地图和关卡,推荐使用StreamLevel。

下图是手动方式,也可以通过Level Streaming Volume来自动生成

相关内容

热门资讯

南昌第五医院甲状腺科江辉科普:... 尽管当前大众对甲状腺健康的关注度日益提升,然而,当众多患者在确诊患有甲状腺结节时,仍普遍感到一种难以...
原创 特... 小毋今天想给大家好好聊一聊,年底的市场热闹得很,贵金属的走势不错,商业航天突然站上风口,科创板新规刚...
维通利创业板IPO过会,期后经... 北京商报讯(记者 马换换 李佳雪)12月30日晚间,深交所官网显示,北京维通利电气股份有限公司(以下...
拟募资295亿元!长鑫科技科创... 《科创板日报》12月31日讯(记者 郭辉)上交所官网12月30日晚间显示,长鑫科技集团股份有限公司(...
千济方桑黄临床课题:桑黄改善睡... 千济方桑黄临床课题:桑黄改善睡眠质量的临床实证分析 一、引言 在现代快节奏的生活中,睡眠问题困扰着越...
德国西部一银行遭窃 损失达数千... 新华社柏林12月30日电(记者李超 张毅荣)德国媒体30日以安全部门人士为消息源报道,德西部盖尔森基...
招商落地见成效丨永定鑫长昌五金... 连日来,永定工业园南部园区内,永定鑫长昌五金制品加工生产项目二期厂房内各条生产线一派繁忙,工人师傅忙...
悦康药业递表港交所,“一药双价... 12月29日,悦康药业(沪市代码:688658)向港交所递交上市申请,保荐机构为中信证券。 资料显示...
沪指日线九连阳 商业航天持续爆... 长沙晚报掌上长沙12月30日讯(全媒体记者 周丛笑)今天三大指数集体低开,沪指低开0.44%,深成指...
原创 这... 美国昔日荣光,中国今日腾飞 上世纪五十年代到七十年代初,美国那时候的工业牛气冲天,工厂遍地开花,生...
宿松中信博:点亮皖江新能源发展... 来源:滚动播报 (来源:市场星报) 当绿色发展的浪潮席卷江淮大地,安徽省正以新能源产业为笔,勾勒着...
柠萌影视2025年度报告:多赛... 主编温静导读:2025年是柠萌影视实现战略突破与盈利改善的关键一年,通过在长剧、短剧、海外业务的协同...
「寻芯记」紫光国微欲“收编”瑞... 本报(chinatimes.net.cn)记者石飞月 北京报道 国内半导体并购潮可谓此起彼伏。12月...
和讯投顾王海洋:目前到了短线关... 12月30日,和讯投顾王海洋称,大盘低开高走但反抗乏力,需谨防指数中阴回调。昨天就提到,今天大盘若低...
《中华人民共和国增值税法实施条... 新华社北京12月30日电 国务院总理李强日前签署国务院令,公布《中华人民共和国增值税法实施条例》(以...
中国国有企业全球化:合作共赢与... 2025年,全球化发展进入一个新的时期。贸易保护主义加剧,一些国家更加强调“保护本国”的经贸政策,全...
2026国补来了!京东线上线下... 12月30日,国家发展改革委、财政部印发的《关于2026年实施大规模设备更新和消费品以旧换新政策的通...
“总部企业经济技术国际合作发展... 2025年12月29日,“总部企业经济技术国际合作发展大会”在东方雨虹总部研发基地举行。作为中国国际...
华誓视联体战略解码:深度技术+... 近日,中国眼视光行业迎来一个可能重塑未来格局的战略发布——“华誓国民视觉健康管理视联体”(下称“华誓...