[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的 ...
随机推荐
- putty登陆sourceforge.net(设置登录)
打开putty.exe session选项的host name (ip address) 填写 shell.soureceforge.net 端口22(不变) 接下来是connection选项子目录下 ...
- css与html 与js的基础语法
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sample_2-23456.a ...
- 配置文件schema约束
解释:https://blog.csdn.net/zh15732621679/article/details/79074380 操作:https://blog.csdn.net/lhg_55/arti ...
- Redis源码剖析和注释(七)--- 快速列表(quicklist)
Redis 快速列表(quicklist)1. 介绍quicklist结构是在redis 3.2版本中新加的数据结构,用在列表的底层实现. 通过列表键查看一下:redis 列表键命令详解 127.0. ...
- Android USB gadget configfs学习笔记总结
1.一个config_item 是通过显式用户空间mkdir操作创建的,通过rmdir销毁.属性(文件)在mkdir之后出现,可以通过read和write读取或修改属性文件.与sysfs一样,read ...
- Python列表生成器
本篇将介绍python生成器,更多内容请参考:python学习指南 前言 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不 ...
- C++ vs Objective C
oc Short list of some of the major differences: C++ allows multiple inheritance, Objective-C doesn't ...
- GUI相关学习资料
分类 1,基于OS,包括windows,linux,android,ios 2,基于语言,包括c++,java,c#,javacript 3,按照技术分类,这个其实和os,编程语言分不开,大概可以分为 ...
- 大数据离线分析平台 用户数据Etl
Etl目标 解析我们收集的日志数据,将解析后的数据保存到hbase中.这里选择hbase来存储数据的主要原因就是: hbase的宽表结构设计适合我们的这样多种数据格式的数据存储(不同event有不同 ...
- kafka_2.11-0.8.2.1+java 生产消费程序demo示例
Kafka学习8_kafka java 生产消费程序demo示例 kafka是吞吐量巨大的一个消息系统,它是用scala写的,和普通的消息的生产消费还有所不同,写了个demo程序供大家参考.kaf ...