关于进程

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,复制的更多相关文章

  1. UE4网络同步属性笔记

    GameMode只有服务端有,适合写游戏逻辑.PlayerController每个客户端拥有一个,并拥有主控权.GameState在服务端同步到全端. CLIENT生成的Actor对其有Authori ...

  2. [UE4]复制引起的重复对象

    一.在角色的BeginPlay事件中,在角色正前方1米到2米处生成一立方体. 二.开启2个玩家,第一个创建是服务器端,第二个窗口是客户端.可以看到:服务器端窗口创建了2个灰色的立方体,客户端却创建了4 ...

  3. UE4 UriEncode 问题

    当Uri 路径中带中文字符时,需要进行编码 否则会照成不可预见错误: FString temp = FGenericPlatformHttp::UrlEncode(queryStr); FString ...

  4. UE4 4.14 专用服务器没有生成解决办法

    简单说一下UE4 专用服务器的生成(网上也有其它版本的但是在4.14.1 上不管用) 1.用源代码编译的引擎(如何获取百度上有很多介绍)创建一个C++ UE4 工程. 2. 在vs 中找到红色这个文件 ...

  5. ue4 NewObject/StaticConstructObject_Internal/StaticAllocateObject/FObjectInitializer:对象创建和初始化

    UObject是一套很复杂的体系,之前读ue3代码时曾分析过其类型系统实现,主要是与UClass间的关系 现在转到ue4,发现那一块其实差不多,于是再重点备忘一下UObject本身的创建和初始化过程 ...

  6. 《Inside UE4》-2-GamePlay架构(一)Actor和Component

    <Inside UE4>-2-GamePlay架构(一)Actor和Component     <Inside UE4>-2-GamePlay架构(一)Actor和Compon ...

  7. UE4 在C++ 动态生成几何、BSP体、Brush ---- Mesh_Generation

    截至UE4  4.10 runtime 无法生成BSP类 ,只能通过自定义的Mesh的Vertex 进行绘制 ( Google 考证,能改UE4源码的请忽略 ) 可用到的 UE4 集成的Render ...

  8. UE4简单AI

    首先做个小小的声明把,由于俺之前也没接触过AI ,所以有一些专业的词汇可能翻译存在各种问题,如果你发现的话,还是希望能够提出来哦,我们一起进步. 记住配合视频食用更佳哦~ 视频连接:http://ww ...

  9. UE4编程之C++创建一个FPS工程(二)角色网格、动画、HUD、子弹类

    转自:http://blog.csdn.net/u011707076/article/details/44243103 紧接上回,本篇文章将和大家一同整理总结UE4关于角色网格.动画.子弹类和HUD的 ...

随机推荐

  1. ionic打包步骤(安卓)

    打包APP之前要做的工作: ionic resources -icon : [创建一个app图标]: 以png/psd/AI格式保存在项目目录下的:resource/android/icon.png ...

  2. Cassandra基础2

    ========================================================= gossip协议1.点对点(peer to perr)的网络通信协议,节点间地位相同 ...

  3. Mosaic 前端微服务框架

    Mosaic 是一系列的服务.库,集成在一起,定义了组件如何彼此交互,可以用来支持大规模的web 站点开发 一张架构图 说明 尽管上图中的一些组件已经迭代演化了(skipper 的route 配置,上 ...

  4. Spring的两种动态代理:Jdk和Cglib 的区别和实现

    这是有意义的一天!自己研究一路畅通的感觉真爽 原理是参考大神的,代码手敲 一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处 ...

  5. 二分查找法(binary_search,lower_bound,upper_bound,equal_range)

    binary_search(二分查找) //版本一:调用operator<进行比较 template <class ForwardIterator,class StrictWeaklyCo ...

  6. 23 模块 os sys pickle json

    一.   os模块 主要是针对操作系统的 用于文件操作 二.    sys 模块 模块的查找路径   sys.path 三   pickle 模块 1.  pickle.dumps(对象) 序列化  ...

  7. requestAnimationFrame 持续动画效果

    1. requestAnimationFrame 概述 requestAnimationFrame 是浏览器用于定时循环操作的一个API, 类似于setTimeout, 主要用途是按帧对网页进行重绘. ...

  8. 在浏览器中输入url回车之后会发生什么

    在浏览器中输入URL之后,浏览器会经历以下5个步骤: 1.解析URL 2.DNS域名解析 3.浏览器与网站建立TCP链接(三次握手) 4.请求和传输数据 5.浏览器渲染页面 一.解析URL 什么是ur ...

  9. Go mysql使用举例

    下载MySQL驱动 $ go get github.com/go-sql-driver/mysql 或者下载源码放到GOPATH中,下载地址:https://github.com/go-sql-dri ...

  10. 学习大数据基础框架hadoop需要什么基础

    什么是大数据?进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,描述数据系统的数据量的计量单位从MB(1 ...