[UE4]Replications,复制
关于进程
1.进程:运行中的程序
虚幻4游戏进程的四种网络模式
1、StandAlone:单机模式,不联网
2、Client,网络游戏中的客户端。
3、ListenServer,服务器和一个客户端
4、DedicatedServer,专用服务器,没有图形表现,本地没有客户端
Replication,复制
1、是一种同步机制
2、Actor及Actor中的属性,可以设置是否复制。Actor要设置可复制,期内的属性设置可复制才会起作用。

勾选表示可被复制
Pawn及其子类、Character及其子类默认是可被复制的,Actor及其子类默认是不可复制,但都可以通过手动设置是否可被复制。

Actor中属性也可以设置是否被复制。Replicated:复制;RepNotify:复制并通知

如果选择“RepNotify”会自动生成一个OnRep_UsingMotion函数
3、复制是单向的,只能从服务器到客户端。不能从客户端复制到服务器
Actor的产生和复制
1、客户端Spawn的Actor,不会被复制
2、服务器Spawn的Actor,可以被复制
3、放置在关卡中的Actor,可以被复制。

1、服务器创建了3个角色,把这3个角色复制到客户端。
2、“玩家A”打了“玩家B”一下,服务器经过判断以后让“玩家B”掉了20点血剩余80点血,“玩家B”的血量值就会别复制到ABC这3个客户端的玩家B镜像
3、如果在客户端A修改了“玩家B”的血量值,是不会更新到服务器的,也不会更新到客户端B和C。复制是单向的,只能从服务器到客户端。不能从客户端复制到服务器
血量示例
服务器的两种模式
1、ListenServer:一个服务器和一个客户端,都在一个进程里面。

客户端A创建了游戏,客户端A同时是A的客户端和服务器,也是是客户端B和客户端C的服务器。

在ListenServer模式中,第一个游戏窗口是第一个打开,所以第一个游戏窗口既是客户端也是自己的服务器,同时也是第二个窗口的服务器。
如图所示,在第一个窗口打一下第二个游戏窗口的玩家掉了20点血还剩80点血,因为第一个窗口是客户端也是服务器,所以会把第二个玩家的血量复制到第二个客户端,因此第二个窗口的玩家可以看到自己还剩80点血。

在第二个窗口打一下第一个窗口的玩家,在第二个窗口可以看到第一个玩家还剩80点血,因为第二个窗口是客户端,第一个窗口才是服务器端,所以第一个窗口(客户端)并不会把数据同步到第二个窗口(服务器)。
附示例设置:


变量右上角出现2个白小球,表示是一个可被复制的变量。
2、DedicatedServer:专用服务器,没有可用于控制的客户端,只有其它客户端的镜像。


如图所示,左边打出的子弹,在右边窗口并不会显示,只要把子弹设置成可复制即可。并且右边窗口中立方体也能看到被子弹打飞。



但是在右边窗口打出的子弹(客户端)在左边窗口(服务器端)是不会出现的。
[UE4]Replications,复制的更多相关文章
- UE4网络同步属性笔记
GameMode只有服务端有,适合写游戏逻辑.PlayerController每个客户端拥有一个,并拥有主控权.GameState在服务端同步到全端. CLIENT生成的Actor对其有Authori ...
- [UE4]复制引起的重复对象
一.在角色的BeginPlay事件中,在角色正前方1米到2米处生成一立方体. 二.开启2个玩家,第一个创建是服务器端,第二个窗口是客户端.可以看到:服务器端窗口创建了2个灰色的立方体,客户端却创建了4 ...
- UE4 UriEncode 问题
当Uri 路径中带中文字符时,需要进行编码 否则会照成不可预见错误: FString temp = FGenericPlatformHttp::UrlEncode(queryStr); FString ...
- UE4 4.14 专用服务器没有生成解决办法
简单说一下UE4 专用服务器的生成(网上也有其它版本的但是在4.14.1 上不管用) 1.用源代码编译的引擎(如何获取百度上有很多介绍)创建一个C++ UE4 工程. 2. 在vs 中找到红色这个文件 ...
- ue4 NewObject/StaticConstructObject_Internal/StaticAllocateObject/FObjectInitializer:对象创建和初始化
UObject是一套很复杂的体系,之前读ue3代码时曾分析过其类型系统实现,主要是与UClass间的关系 现在转到ue4,发现那一块其实差不多,于是再重点备忘一下UObject本身的创建和初始化过程 ...
- 《Inside UE4》-2-GamePlay架构(一)Actor和Component
<Inside UE4>-2-GamePlay架构(一)Actor和Component <Inside UE4>-2-GamePlay架构(一)Actor和Compon ...
- UE4 在C++ 动态生成几何、BSP体、Brush ---- Mesh_Generation
截至UE4 4.10 runtime 无法生成BSP类 ,只能通过自定义的Mesh的Vertex 进行绘制 ( Google 考证,能改UE4源码的请忽略 ) 可用到的 UE4 集成的Render ...
- UE4简单AI
首先做个小小的声明把,由于俺之前也没接触过AI ,所以有一些专业的词汇可能翻译存在各种问题,如果你发现的话,还是希望能够提出来哦,我们一起进步. 记住配合视频食用更佳哦~ 视频连接:http://ww ...
- UE4编程之C++创建一个FPS工程(二)角色网格、动画、HUD、子弹类
转自:http://blog.csdn.net/u011707076/article/details/44243103 紧接上回,本篇文章将和大家一同整理总结UE4关于角色网格.动画.子弹类和HUD的 ...
随机推荐
- ionic打包步骤(安卓)
打包APP之前要做的工作: ionic resources -icon : [创建一个app图标]: 以png/psd/AI格式保存在项目目录下的:resource/android/icon.png ...
- Cassandra基础2
========================================================= gossip协议1.点对点(peer to perr)的网络通信协议,节点间地位相同 ...
- Mosaic 前端微服务框架
Mosaic 是一系列的服务.库,集成在一起,定义了组件如何彼此交互,可以用来支持大规模的web 站点开发 一张架构图 说明 尽管上图中的一些组件已经迭代演化了(skipper 的route 配置,上 ...
- Spring的两种动态代理:Jdk和Cglib 的区别和实现
这是有意义的一天!自己研究一路畅通的感觉真爽 原理是参考大神的,代码手敲 一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处 ...
- 二分查找法(binary_search,lower_bound,upper_bound,equal_range)
binary_search(二分查找) //版本一:调用operator<进行比较 template <class ForwardIterator,class StrictWeaklyCo ...
- 23 模块 os sys pickle json
一. os模块 主要是针对操作系统的 用于文件操作 二. sys 模块 模块的查找路径 sys.path 三 pickle 模块 1. pickle.dumps(对象) 序列化 ...
- requestAnimationFrame 持续动画效果
1. requestAnimationFrame 概述 requestAnimationFrame 是浏览器用于定时循环操作的一个API, 类似于setTimeout, 主要用途是按帧对网页进行重绘. ...
- 在浏览器中输入url回车之后会发生什么
在浏览器中输入URL之后,浏览器会经历以下5个步骤: 1.解析URL 2.DNS域名解析 3.浏览器与网站建立TCP链接(三次握手) 4.请求和传输数据 5.浏览器渲染页面 一.解析URL 什么是ur ...
- Go mysql使用举例
下载MySQL驱动 $ go get github.com/go-sql-driver/mysql 或者下载源码放到GOPATH中,下载地址:https://github.com/go-sql-dri ...
- 学习大数据基础框架hadoop需要什么基础
什么是大数据?进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,描述数据系统的数据量的计量单位从MB(1 ...