前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >UE网络通信(二) 相关性

UE网络通信(二) 相关性

作者头像
JohnYao
发布于 2022-06-29 07:13:07
发布于 2022-06-29 07:13:07
1.2K0
举报

序言

前篇文章概括性的介绍了UE4的网络通信。地址如下。

johnyao:UE网络通信(一) 概述

在本篇文章中,对UE4的网络相关性继续进行讨论。

UE4 网络相关性

网络相关性在传统的MMORPG游戏中有另外一个名称AOI(Area Of Intrest)。

一个游戏世界中的Actr数量太多,对于某个连接来说,它如果关注所有的Actor,那么同步带来的计算量就会很大。所以我们引入网络相关性来裁减需要同步的Actor数量。 前章已经提到了判断某个Actor和某个连接是否相关的属性配置,我们可以简单的归为三类。

  1. 同步距离
  2. 同步范围(AlwaysRelevant,和所有连接相关;OnlyRelevantToOwner, 仅和Owner相关)
  3. 同步频率(NetUpdateFrequency:上次同步间隔小于该频率,在该帧不进行同步)

对于UE4默认的相关性算法就是最简单的遍历。对于下图所示的例子。

可以看到,图中有两个人形Actor,他们对应了两个客户端连接。那么如果有N个actor, M个客户端连接,则会带来O(N*M)的计算复杂度。这个复杂度,可以将上面的例子转化为顶视图,用下图来演示。

Replication Graph

Unreal 4.21版本正式发布了Replication Graph。Replication Graph简单的讲是一种空间换时间的做法。它为所有的Actor提前创建好索引。比如同步范围为所有连接的Actor放在AlwaysRelevant索引下,同步范围为OnlyRelevantToOwner,放在以连接为key的Relevant For Connection索引下。

特别的,对于同步距离,Replication Graph提供了一种基于九宫格的相关性裁减算法。

该算法实现思路算法如下

  1. 按照预设大小将世界,水平划分成不同的网格
  2. 根据Actor同步距离缓存到不同的网格
  3. 当客户端连接对应的观察点走到对应网格,则直接将该网格对应的缓存的Actor直接加到连接对应的相关性列表中。

特别的,加入网格的Actor有静态和动态之分。

  1. 静态Actor插入和从Replication Graph中删除,是对所有缓存该Actor的网格进行一次性处理。
  2. 动态Actor则每帧会计算该Actor覆盖网格的差量值,将新覆盖的网格进行插入,刚取消覆盖的网格进行删除。

使用Replication Graph后,多了一些索引维护的开销,但整体可以将之前O(N*M)的复杂度降低为O(M)。

进一步的优化

利用Replication Graph,理论上我们可以扩展更多的索引节点,并定制AOI算法。

在我经历的项目中,我们将节点扩展为Relevant For Team和Relevent Folllow Owner。

Relevant For Team比较好理解,就是队伍内共享的相关性。 Relevent Folllow Owner就是该Actor的相关性跟随其Owner;当这个Owner和某个连接相关时,则Follow该Owner的Acotr也和该连接相关。

特别的,我们又对游戏内大量存在的道具做了动态的索引调整。

  1. 当道具丢弃到游戏世界中,相关性索引使用静态空间网格。
  2. 拾取到背包,相关性索引使用Relevant For Connection。
  3. 装备外显或者使用,相关性索引使用使用Relevent Folllow Owner。

由于我们引入了这种动态的相关性策略。我们同时引入了策略的缓存,因为在每一帧的tick阶段可能会有多次的相关性调整。但对于这一帧来讲,只有最后一次的才会生效。通过缓存最后一次的操作,我们可以减少单帧内相关性调整次数。 实测下来,这个缓存策略带来的性能优化效果有限,更多的是带来处理逻辑的统一。

当然,如果还想进一步优化,可以根军自己项目的实际情况,替换现有九宫格空间裁减算法。

结语

网络相关性就先介绍到这里。 下一篇准备介绍下属性同步。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
UE4 ReplicationGraph分析
ReplicationDriverClassName="/Script/ProjectName.ClassName"
小伏羲
2018/12/18
4.6K0
UE4 ReplicationGraph分析
UE网络通信(一) 概述
现在市面上,绝大多数的游戏都是网络游戏。客户端和服务器之间通过网络进行通信,同步游戏内的信息。这个系列的文章以Unreal Engine 4.26版本为基础,试图讲解下UE4网络通信的相关功能。
JohnYao
2022/06/29
2.4K0
UE网络通信(一)  概述
Unity手游实战:从0开始SLG——世界地图篇(十一)AOI
AOI的全称叫Area Of Interest,感兴趣的区域。这个技术可以看做是服务器广播的一种。在MMO类型的游戏里是必须存在的。
放牛的星星
2020/07/10
4.4K0
Unity手游实战:从0开始SLG——世界地图篇(十一)AOI
UE网络通信(三) 属性同步
这一部分继续介绍属性同步。首先我们看下网络同步在整个引擎Tick循环是如何运转的。
JohnYao
2022/06/29
1.6K0
UE网络通信(三) 属性同步
UE网络通信(四)RPC&移动通信
距离上一次发表《UE网络通信》系列的文章已经过去了一年多。这段时间,UE5.0在2022年4月发布;UE5.1在2022年11月发布。好在新版本,引擎在同步方面尚未做大的变更;之前立的关于RPC,底层协议的写作flag,还是可以继续进行。
JohnYao
2023/04/28
2.8K0
UE网络通信(四)RPC&移动通信
UE4网络模块解析(一)
客户端所有的操作如击杀等都需要传到中央服务器来运算,得到的运算结果下发到各个客户端。服务器是UE4多人游戏的重要组成部分。它做出所有重要决策,包含所有权威状态,处理客户端连接,前往新地图,处理开始比赛、结束比赛等整个游戏流程。
玖柒的小窝
2021/12/14
7410
UE4 ContentExamples:Network_Features
最近一直没有弄过UE4了 和同事沟通的时候,看了下 Network_Features 今天自己简单记录一下 等 微积分 复习完,再考虑别的
dodo_lihao
2018/09/12
1.1K0
UE4 ContentExamples:Network_Features
入门必看 | 深度Q-learning简介【RL系列】
今天,我们将构建一个深度Q网络,为环境中的agent实现一个可以获取环境状态信息以及近似Q-value的神经网络。
昱良
2018/08/20
5090
入门必看 | 深度Q-learning简介【RL系列】
Golang语言社区--游戏服务器端开发的一些建议(转载)
大家好,我是Golang语言社区(www.golang.ltd)主编彬哥,本篇给大家转载一篇关于游戏服务器开发的文章。
李海彬
2018/03/18
2.9K0
Golang语言社区--游戏服务器端开发的一些建议(转载)
全网首篇? Unreal Iris Replication中文资料
前天看到Unreal 5.1引入了名为Iris的新的同步机制。过去三年一直在做UE4网络层的相关优化,看到这个新的实验特性,还是倍感振奋。在网上搜索了下,并没看到相关的中文资料。在Unreal开发者社区看到了如下文档:
JohnYao
2023/04/01
1.8K0
硬核干货丨游戏大世界的超远视距处理手法,建议收藏!
| 导语   本文从浮点数精度、实时阴影、合批策略和剔除算法四方面阐述游戏大世界的超远视距处理的常用手法。 当世界足够大的时候,浮点数的精度问题就会呈现出来。浮点数的精度可能带来的问题可谓五花八门,如模型之间出现接缝和穿插、光照计算出现溢出变黑、骨骼动画出现抖动等。如果你在半精度Shader开发中没碰到过这类问题,那不是你的算法太优秀,就是你还没被现实所教育。 位置和计算精度问题 一般来说,在CPU端,游戏中的数学库大多是基于32位浮点数构建,常用的如向量运算、矩阵运算、开方求幂、三角函数、BVH划
腾讯大讲堂
2020/10/21
2.7K0
干货:从相关性到RNN,一家线上“租碟店”的视频推荐算法演进 | 公开课实录
本周三,大数据文摘邀请到Hulu(美国第二大视频网站)推荐算法研发负责人周涵宁,来分享了基于深度学习的下一代视频推荐系统(戳蓝字了解)。周老师分享了大量干货,大数据文摘特整理公开课实录如下(在不改变原
大数据文摘
2018/05/24
8260
UE4的TArray(三)
TArray除了最基本的数组容器功能外,相比于std::vector来说,最不一样也是最有特色的地方,就是还能当作二叉堆来使用。提供的几个函数可以轻而易举的让TArray变成小根堆,大根堆,然后还可以做堆排序,堆插入,堆删除。可能你会说快速排序和堆排序复杂度相同,直接快速排序就好了,干嘛费这么大功夫用维护一个堆。但在实际业务中,有不少情况用堆来实现功能会有明显的优势。最后会具体来说,先来介绍基本用法。
quabqi
2021/10/22
1.5K0
UE4的TArray(三)
QQ浏览器是如何提升搜索相关性的?
导言 | 搜索相关性主要指衡量Query和Doc的匹配程度,是信息检索的核心基础任务之一,也是商业搜索引擎的体验优劣最朴素的评价维度之一。本文作者刘杰主要介绍QQ浏览器搜索相关性团队在相关性系统及算法方面的实践经历。值得一提的是,本文会特别分享在QQ浏览器搜索、搜狗搜索两个大型系统融合过程中,在系统融合、算法融合、算法突破方面的实践经验。希望对搜索算法以及相关领域内的同学有帮助。 业务介绍 搜索业务是QQ浏览器的核心功能之一,每天服务于亿万网民的查询检索,为用户提供信息查询服务,区别于一些垂直领域的站内搜
腾讯云开发者
2023/01/10
1.8K0
QQ浏览器是如何提升搜索相关性的?
UE4的智能指针 UObject相关
上一篇介绍了UE4普通的共享指针TSharedPtr,了解到了内部是使用引用计数来管理的。
quabqi
2021/11/04
3.5K1
UE4的智能指针 UObject相关
用图机器学习探索 A 股个股相关性变化
在本系列的前文 1,2中,我们介绍了如何使用 Python 语言图分析库 NetworkX 3 + Nebula Graph 4 来进行<权力的游戏>中人物关系图谱分析。
NebulaGraph
2020/09/24
1.4K0
有效降低数据库存储成本方案与实践
Tech 导读 在互联网行业降本增效的大背景下,如何治理成本投入重灾区——数据库(Mysql)成为了开发人员眼中的头等大事,本文介绍了降低数据库成本的方法与思路,并且介绍了在实践过程中需要着重关注的风险点与抵御风险的措施。
京东技术
2023/12/19
3310
有效降低数据库存储成本方案与实践
5G 与 4G 网络通信方面有什么区别?
近日,腾讯无线网络与物联网技术负责人李秋香与高校科研教授、产业链、运营商等各行业的嘉宾一起参与了知乎「 科技共振之 5G+ 」活动。除了专业的5G探讨,也聊了不少和开发者们息息相关的问题。基于此,云加社区联手知乎科技,从知乎超过 10000 条 5G 相关问答中精选内容落地社区专题「 共探 5G 」。
腾讯云开发者社区
2019/12/05
5.9K2
MMORPG技能管线设计经验总结
表现丰富、机制多变的技能作为MMORPG游戏战斗体验的核心组成部分,是吸引玩家的一大亮点,本文总结了笔者在MMORPG技能系统设计上的一些经验,供大家参考。
Kill Console
2022/08/22
1.9K0
大众点评搜索相关性技术探索与实践
总第521篇 2022年 第038篇 搜索相关性用于衡量Query和Doc的相关程度,是搜索引擎的重要环节,本文主要讲述大众点评搜索团队在相关性计算上的技术探索和实践,通过多相似矩阵模型结构、多阶段训练等方法提升预训练模型在相关性问题上的效果,同时解决基于交互的模型在线预测的性能问题,希望为从事相关工作的同学能够带来一些启发或者帮助。 1. 背景 2. 搜索相关性现有技术 3. 点评搜索相关性计算 3.1 如何更好地构造POI侧模型输入信息 3.2 如何优化模型来更好地适配点评搜索相关性计算 3.3 如何
美团技术团队
2022/07/07
1.1K0
大众点评搜索相关性技术探索与实践
推荐阅读
相关推荐
UE4 ReplicationGraph分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档