1.3.1 网络模式和服务器类型

网络模式

描述了计算机与网络多人游戏会话的关系。游戏实例可采用以下任意网络模式:

拥有游戏副本的用户均可启动聆听服务器并在同一计算机上运行,因此聆听服务器对于用户而言较易自发设置。支持聆听服务器的游戏通常拥有游戏UI,用于启动服务器或搜索要加入的服务器。但由于主持聆听服务器的玩家会直接在服务器上游戏,因此比其他必须使用网络连接方可游戏的玩家更具优势,于是便导致了公平和作弊问题。同时,要作为服务器运行,还需支持如图形和音效等玩家相关系统,从而引发额外处理负载。此类因素导致聆听服务器不适用于激烈的竞技或网络负载极高的游戏,但对于小型玩家群体间进行临时合作和竞技多人游戏而言,却十分好用。

专属服务器成本更高,更难以配置,需要独立于所有参与玩家的计算机,并需要完成自身网络连接。但所有加入专属服务器的玩家均使用相同类型的连接进行游戏,从而保证了公平性。
由于专属服务器不会渲染图形或执行仅与本地玩家相关的其它逻辑,因此还可高效处理gameplay和网络
因此,出于安全、公平或可靠方面的原因,专属服务器更适用于需要大量玩家或需要高效执行、可信服务器的游戏。此类游戏包括MMO、竞技MOBA,或快节奏网络射击游戏。
因为独立游戏服务器可同时作为服务器和客户端,为多人游戏创建的逻辑可在无需额外工作的情况下,在单人游戏中运行。

1.3.2 Actor复制

复制是指在网络会话中的不同机器间复制游戏状态信息。若正确设置复制,将可同步不同机器的游戏实例。多数Actor默认不会启用复制,且将本地执行所有功能。在C++ Actor类中设置 b Replicates 变量,
或将Actor蓝图的 复制(Replicates) 设置设为 true,可启用给定类的Actor复制
以下为创建网络游戏时的常见复制功能:

虽然创建、销毁和移动等常见使用可自动处理,但即使启用复制,其他所有gameplay功能也不会默认自动复制。必须根据游戏的需求明确指定要复制的变量和函数。欲了解上述所有复制功能的详情,参见Actor复制 指南。

Actor、Pawn和角色的部分常用功能不会复制:

此类项目均在所有客户端上单独运行。但是,若复制驱动此类视觉元素的变量,则可确保所有客户端都具有相同信息,从而以大致相同的方式进行模拟。

1.4 网络角色和授权

Actor的 网络角色 将决定网络游戏期间控制Actor的机器授权 Actor被认为可控制Actor的状态,并可将信息复制到网络多人游戏会话中的其他机器上。
远程代理 是该Actor在远程机器上的副本其将接收授权Actor中的复制信息。其由 Local Role 和 Remote Role 变量进行追踪,可取以下值:

虚幻引擎使用的默认模型是 服务器授权,意味着**服务器对游戏状态固定具有权限,而信息固定从服务器复制到客户端。**服务器上的Actor应具有授权的本地角色,而其在远程客户端上的对应Actor应具有模拟或自主代理的本地角色。
欲了解Actor网络角色,参见Actor角色和远程角色 指南。

1.5 客户端拥有权

特定客户端机器上的 Player Controller 拥有网络游戏中的pawnPawn调用纯客户端函数时,其将无视调用函数的机器,而仅指向拥有玩家的机器。若将Actor的 Owner 变量设为特定Pawn,则通关关联,该Actor属于该Pawn的拥有客户端,并将纯客户端函数指向其拥有者的机器。可使用C++中的 Is Locally Controlled 函数,或蓝图中的 Is Locally Controlled 节点,以决定Pawn是否在其拥有客户端上。

由于构造期间Pawn可能未指定控制器,因此避免在自定义Pawn类的构造函数中使用 Is Locally Controlled。

有关拥有权的详情,参见Actor及其拥有连接 上的指南。

1.5.1 相关性和优先级

相关性 用于决定是否需要在多人游戏期间复制Actor。复制期间将剔除被认为不相关的actor。此操作可节约带宽,以便相关Actor可更加高效地复制。若Actor未被玩家拥有,且不在玩家附近,将其被视为不相关,而不会进行复制。
不相关Actor会存在于服务器上,且会影响授权游戏状态,但在玩家靠近前不会向客户端发送信息。覆盖 Is Net Relevant For 函数以手动控制相关性
并可使用 Net Cull Distance Squared 属性决定成为相关Actor所需距离。
有时在游戏单帧内,没有足够带宽供复制所有相关Actor。因此,Actor拥有 优先级(Priority) 值,用于决定优先复制的Actor。
Pawn和Player Controller的 Net Priority 默认为 3.0,从而使其成为游戏中最高优先级的Actor,而基础Actor的 Net Priority 为 1.0。Actor在被复制前经历的时间越久,每次成功通过时所处的优先级便越高。
欲了解Actor相关性和优先级的详情,参见网络优先级 上的指南。

1.6 变量复制

在C++中使用对应 UPROPERTY 宏内的 Replicated 或 Replicate Using 说明符,或在蓝图的细节面板中将它们指定为已复制,可将复制添加到变量和对象引用。授权Actor上复制变量的值变更时,其信息将自动从授权Actor发送到连接会话的远程代理。

1.6.1 Rep Notify

可指定在Actor成功接收特定变量的复制信息时要调用的 Rep Notify 函数。Rep Notify仅在变量更新时本地触发。触发gameplay逻辑响应授权Actor上的变量更改时,使用Rep Notify可减少开销。在C++中使用变量的 UPROPERTY 宏的 Replicated Using 说明符可访问此功能,或修改蓝图中变量的复制设置以使用Rep Notify。
由于Rep Notify可添加到需复制的变量中,而无需考虑其他gameplay功能,创建额外网络调用时刻节约大量带宽,因此Rep Notify比RPC或复制函数更加好用

ue4联网和多人游戏总结(第二部分)相关推荐

  1. UE网络-官方联网和多人游戏

    联网和多人游戏 客户端和服务器同步数据和调用程序的过程被称为复制(Replication) 虚幻引擎使用 客户端-服务器 模型.网络中的一台计算机作为 服务器 主持多人游戏会话,而所有其他玩家的计算机 ...

  2. UE4联网Steam

    LAN联网很简单相信大家都会了,现在跟大家分享下Steam联网的设置 参考:https://wiki.unrealengine.com/Steam,_Using_the_Steam_SDK_Durin ...

  3. Online Subsystem Steam 在线子系统Steam (虚幻引擎UE4 联网)

    在本页: 满足阀门的要求 正在下载Steamworks 设置Steamworks SDK Steam App ID 配置您的应用程序的设置 补充笔记 该在线子系统蒸汽API使您能够出货虚幻引擎4(UE ...

  4. UE4联网actor和变量复制 (第四部分)

    Actor 的复制 4.4 在蓝图中同步变量 介绍了如何使用 Actor 上的 Replicates 选项,以使其在服务器和客户端机器上显示(或不显示).在列举的两个示例中,同步 Actors 示例介 ...

  5. 关于UE4多人局域网联机游戏中联网和回放的设置细节问题

    背景 我们在游戏开发.仿真推演中可能会遇到这样的需求: 要搭建局域网,可以多人对战的. 要可以回放,能把大家玩耍的过程记录下来,重放给玩家们看,做复盘. 于是我们需要开发[联网]和[回放]功能.联网使 ...

  6. UE4插件与编辑器Slate

    教程使用软件:Visual Studio2017 .UE4 4.20和4.19版本引擎 UE4插件与编辑器Slate源文链接 哈喽,大家好,我叫人宅,很高兴和大家分享一下我们这套教程. 我们的UE4课 ...

  7. 第二篇python安装(1)

    python初学基础篇 1 嗨喽!各位观看我文章的大佬们,我是你们没事就喜欢折腾自己来玩的小可爱~~ 我又回来继续更新啦,虽然出了点小问题导致我周六周日没有更新,但是我坚挺的又出现在你们的面前,好啦, ...

  8. 游戏设计的艺术:一本透镜的书——第七章 游戏通过迭代改良

    这是一本游戏设计方面的好书 转自天之虹的博客:http://blog.sina.com.cn/jackiechueng 感谢天之虹的无私奉献 Word版可到本人的资源中下载 第七章 游戏通过迭代改良 ...

  9. 2022-2028年中国特高压电网行业深度调研及投资前景预测报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了特高压电网行业相关概述.中国特高压电网行业运行环境.分析了中国特高压 ...

  10. 2018全球最强物联网公司榜单揭晓|20家企业物联网战略大起底!

    来源: 物联网智库丨公众号 IDG旗下杂志<NetWork World>近期公布了全球最强物联网公司名单.本文根据入选评语,对20家企业战略布局进行搜集整理,供业内人士参考! 根据Gart ...

最新文章

  1. 实对称矩阵的性质_浅谈矩阵的相似对角化(一)
  2. hibernate三级缓存概括
  3. 关于eclipse的maven
  4. Linux命令学习手册-grep命令
  5. 留言条.html .js来完成
  6. Play框架的用户验证。
  7. 「协方差」与「相关系数」的概念
  8. 带有.NET Core 3和Electron.NET的多平台桌面HTML编辑器
  9. logstash收集syslog日志
  10. python dash html.table_阅读 Python dash 代码的时候有个问题, 那个包的调用有问题?
  11. tp6/thinkphp6实现微信小程序支付/微信支付v3版本,全部流程代码
  12. PPT 将图片的白色部分透明化
  13. 海康摄像机被锁了 怎么办
  14. 第七届泰迪杯挑战赛C题
  15. 【转】如何从计算视角研究网络传播影响力最大化问题?
  16. 【论文阅读】Fully Convolutional Networks for Semantic Segmentation【CVPR,PAMI】
  17. 深圳免费旅游景点大全|深圳旅游攻略(上)
  18. 转:写一个块设备驱动
  19. 多种方法教你 Docx怎么转换成Doc
  20. 计算机专业规划书实地访谈,计算机专业职业生涯规划书(1).doc

热门文章

  1. 如何转换html转化mp4,格式互转技巧:webm格式怎么转换mp4?
  2. qxdm无法安装问题闪一下_关于QXDM的安装,解决Win7下QIK报错的问题
  3. 李宏毅:1天搞懂深度学习,我总结了 300 页 PPT(附思维导图PPT)
  4. smartadmin mysql_smart-admin/README.md at master · Rainforestor/smart-admin · GitHub
  5. 行政区村界线_中国各省界线是如何形成的?古代行政区划界原则
  6. 虚拟机VMware安装学习过程中遇到的几个问题
  7. CentOS 7.6 vi编辑器常用命令详解
  8. 在线编程JavaScript
  9. python爬取book118中的书籍
  10. 如何部署服务器虚拟化,vmware服务器虚拟化方案(vmware虚拟化平台部署)