联网和多人游戏

客户端和服务器同步数据和调用程序的过程被称为复制(Replication)

虚幻引擎使用 客户端-服务器 模型。网络中的一台计算机作为 服务器 主持多人游戏会话,而所有其他玩家的计算机作为 客户端 连接到该服务器。然后,服务器与连接的客户端分享游戏状态信息,并提供一种客户端之间通信的方法。

复制是指在网络会话中的不同机器间复制游戏状态信息。若正确设置复制,将可同步不同机器的游戏实例。多数Actor默认不会启用复制,且将本地执行所有功能。

在C++ Actor类中设置 bReplicates 变量,或将Actor蓝图的 复制(Replicates 设置设为 true,可启用给定类的Actor复制。

Actor的复制

Actor主要通过两种方式更新:1、属性更新  2、RPC(远程过程调用)

属性更新和RPC的主要区别:属性在发生变化时自动更新,RPC只能在被执行时获得调用更新

组件复制

静态组件:随Actor一起创建的静态组件。无需通过复制存在于客户端

动态组件:运行时服务器上生成的组件。需通过复制的方式存在于所有客户端

可以将变量设置成Replicated,也就是说,这个变量会生成一个该变量的一对一副本,然后该副本将从服务器复制到客户端。或者你可以使用RepNotify变量。

它拥有Replicated的所有功能,同时还提供了一个函数,每当该函数关联的变量更新时,该函数就会调用并在服务器和客户端上执行。

Actor的Role和RemoteRole属性

如果 Role 是 ROLE_Authority

RemoteRole 是 ROLE_SimulatedProxy 或 ROLE_AutonomousProxy,就说明这个引擎实例负责将此 actor 复制到远程连接。

RPC:

RPC(远程过程调用)是在本地调用但在其他机器(不同于执行调用的机器)上远程执行的函数,可允许客户端和服务器通过网络连接相互发送消息

要将一个函数声明为RPC,只需将Server、Client、NetMulticast关键字添加到UFUNCTION声明

1、声明一个服务器上调用、客户端执行的RPC:

UFUNCTION( Client )

void ClientRPCFunction();

2、声明一个客户端上调用、服务器执行的RPC:

UFUNCTION( Server )void ServerRPCFunction();

3、多播 RPC 可以从服务器调用,然后在服务器和当前连接的所有客户端上执行

UFUNCTION( NetMulticast )void MulticastRPCFunction();

注意:客户端调用只能在本地执行

4、默认情况,RPC并不可靠。要确保调用需要指定Reliable关键字

UFUNCTION( Client, Reliable )void ClientRPCFunction();

多人游戏下的Gameplay框架

GameInstance在引擎会话的持续时间内一直存在,意味着在引擎启动时创建,并在引擎关闭后才会销毁或更换。服务器和每个客户端上都存在一个独立的GameInstance,这些实例彼此不通信。由于GameInstance存在于游戏会话之外,并且是在关卡加载期间唯一存在的游戏结构体,因此非常适合于保存特定类型的持久数据

GameMode对象仅存在于服务器上。它通常存储客户端不需要明确知道的游戏信息。

GameState存在于服务器和客户端上,因此服务器可以在GameState上使用复制变量让所有客户端保持最新的游戏数据。

每一台客户端上的每一个玩家存在一个PlayerController。它们在服务器和关联的客户机之间进行复制,但不会复制到其他客户端,因此在服务器上每个玩家都有PlayerController,但本地客户端只有本地玩家的PlayerController。

服务器和客户端上存在与游戏相连的每个玩家的PlayerState。这个类可以用于所有客户端感兴趣的复制属性,而不仅仅是所属客户端,如单个玩家在自由竞赛游戏中的当前分数。

Pawn(包括Character)也存在于服务器和所有客户端上,可以包含复制变量和事件。决定对特定变量或事件使用PlayerController、PlayerState还是Pawn取决于具体情况,但务必要记住的是,只要所属玩家保持与游戏相连,且游戏没有加载新关卡,则PlayerController和PlayerState就保持不变,而`Pawn`则不然。例如,如果Pawn在游戏期间死亡,它通常会被销毁并替换为一个新Pawn,而PlayerController和PlayerState将持续存在,并在新Pawn产生后与新Pawn关联。

UE网络-官方联网和多人游戏相关推荐

  1. 虚拟机网络、联网设置、与宿主机互联、网络配置

    虚拟机网络.联网设置.与宿主机互联.网络配置 一.虚拟机网络 二.虚拟机的联网设置 三.与宿主机互联 四.手动配置网络 1.ifconfig 2.netstat 一.虚拟机网络 检查虚拟机网络编辑器 ...

  2. 腐烂国度2服务器无响应,腐烂国度2无法连接网络 无法联网解决方法

    腐烂国度2中许多Windows10的玩家在游戏联机的时候都遇到了无法联网或code6的问题,接下来带来腐烂国度2Windows10无法联网解决方法 ,需要的不妨来参考一下吧. 腐烂国度2中许多Wind ...

  3. 【经验分享】桥接网络无法联网、开发板挂载根文件系统问题解决

    文章目录 总结:开发板挂载根文件系统遇到的一些问题 一.桥接网络 1.简介 注意避坑: 2.解决办法: 二.开发板端测试: 总结:开发板挂载根文件系统遇到的一些问题 一.桥接网络 1.简介 是指需手动 ...

  4. Unity的多人游戏与网络

    第十三章.多人游戏与网络 So you have to trust that the dots will somehow connect in your future. You have to tru ...

  5. UE笔记1:基础知识

    文章目录 一.虚幻引擎术语 项目 (uproject) 蓝图(Blueprints) 材质(Materials) 对象和类 类型转换 AActor 组件 Pawn Character Player C ...

  6. nessus安全工具主要用途_发电技术 | 发电厂DCS 网络安全评估与防护

    区块链 | 方 响等 分布式新能源接入下的区块链共识机制研究 区块链 | 颜 拥等 基于区块链的电力数据保全应用研究 区块链 | 能源互联网中的区块链应用:优势.场景与案例 <浙江电力>2 ...

  7. C# 获取电脑的网络连接状态

    C# 获取电脑的网络连接状态 原文:C# 获取电脑的网络连接状态 判断连网的方法介绍 1. InternetGetConnectedState 此函数获取网络状态有延时,且对网卡伤害较大 MSDN官方 ...

  8. 《工业控制网络安全技术与实践》一3.2.2 工业控制网络病毒

    3.2.2 工业控制网络病毒 本文讲的是工业控制网络安全技术与实践一3.2.2 工业控制网络病毒,在信息技术与传统工业融合的过程中,工业控制正面临越来越多的网络安全威胁,其中工控网络病毒就是主要的威胁 ...

  9. 微软服务器WIFI连不上吗,微软官方解决Surface Pro 4连不上WiFi的六种教程

    任何电子产品都或多或少都存在一些小毛病,对于微软Surface来说,WiFi连接问题似乎比较常见,具体表现为Surface唤醒后Wi-Fi无法使用.Wi-Fi连接受限.Wi-Fi能用但速度很慢或信号微 ...

最新文章

  1. 自定义Android注解Part2:代码自动生成
  2. 开源跳板机(堡垒机)Jumpserver v0.2.0 使用说明
  3. Scala中映射的语法(对应Java中的Map集合的定义)
  4. CentOS 7.4 下 如何部署 AspNetCore 结合 consul
  5. Android与server通信的方法之中的一个(json)效率不高安全性不好
  6. TCP转输控制协议(转)
  7. python列表方法图解_python中list(列表)的使用方法总结(图文)
  8. AC自动机-算法详解
  9. C++ API 设计 15 第十章 测试
  10. CSDN 博客版块问题解决日志
  11. 谷歌浏览器:下载,插件安装
  12. 视频点播服务器项目,项目九搭建视频点播vod服务器美萍vod.doc
  13. 5S管理卫生考评办法
  14. 芯片可靠性测试要求及标准解析
  15. 新能源汽车OTA升级中的UDS通信分析
  16. 一山一世界,雅居乐陈卓林“乐活”美好生活,在此进阶
  17. 电脑配件 - 机械键盘的由来, 与普通键盘的区别以及如何选购及使用维护 - 学习/实践
  18. WEB前端网页设计-Bootstrap 超大屏幕(Jumbotron)
  19. HZNUOJ 1019 取火柴
  20. 【Proteus仿真】ATMEGA16 ADC转化数码管显示

热门文章

  1. 【C语言】八道经典指针笔试题(详解)
  2. Java 初学者做的第一个微信小程序--关于Java基础
  3. 大学四年看了这18般书籍,我成了别人眼中的程序员大神!
  4. 引领腕上健康潮流:华米科技再推时尚智能手表新品
  5. idea 导入 vue项目 improt全都报红
  6. elementUI中el-radio-group的使用
  7. galaxy s8 android pc,现在 你可以用三星S8解锁Win 10 PC了
  8. for循环用腻了,试试列表生成式。
  9. 怎么用xshell启动mysql_xshell怎么配置mysql
  10. 麦子学院美国商务中心成立,探索在线教育新高点www.maiziedu.com