UE4 Run On owing Client解析(RPC测试)
今天看到文档中游戏性指南->远程调用函数->在蓝图中使用远程调用函数的 Run On Owning Client 在所有权的客户端上运行部分,发现把Add Item和Remove Item设置为Not Replicated时,跟示例的效果并没有区别,下面将分析这种情况的原因和其中的原理。
1,首先解释上面这种情况的原因,该示例使用的是第三人称模板,在Character里写了一个String变量Inventory,设置如图:

在场景中放置一个Trigger Box,在关卡蓝图添加BeginOverlap和EndOverlap事件:

AddItem和RemoveItem:打印一个字符串并给Character里的Inventory赋值。


在示例中这两个事件设置为Run On owing Client,游戏运行起来的效果是当服务器的Character进入Trigger时,会调用服务器的Character的AddItem,当切换到客户端的Character进入Trigger时,会调用客户端的Character的AddItem,但是这是依赖Trigger重叠的Actor来分别调用的,跟AddItem这个函数的同步属性没有关系。根据RPC中的图表:

可以看到当在服务器调用RPC时,如果actor的所有权是服务器,那调用的函数是notreplicated、server、client时的结果都是在服务器上执行,示例中是在Triggerbox的Overlap事件调用的AddItem,所以AddItem属于Triggerbox,而Triggerbox的所有权是服务器,AddItem都是在服务器上执行的,所以AddItem函数的这几个选项的结果都是一样的。
下面是关于RPC的一些试验:
1,Level Blueprint存在于服务器和客户端,GameMode存在于服务器(这个都知道-.-)
2,枪开火的函数应该如何实现?

根据文档说明,Run on owing client必须放在以上Actor中执行,否则服务器不知道要给哪个客户端执行,所以一种方法是开火的函数设置为Run On Server,并且把产生的粒子特效设为复制,这样所有客户端都能看到效果.
还有一点需要注意,虚幻采用的是客户端服务器模式,一个客户端是不能直接与任何一个客户端通信的!!!但是可以模拟这个行为,创建两个函数,第一个为Run On Server,第二个为Multicast,第一个函数只负责调用第二个函数,第二个函数为创建开火的粒子特效,这样创建的粒子特效不用复制也能有同样的效果。
UE4 Run On owing Client解析(RPC测试)的更多相关文章
- iOS5系统API和5个开源库的JSON解析速度测试
iOS5系统API和5个开源库的JSON解析速度测试 iOS5新增了JSON解析的API,我们将其和其他五个开源的JSON解析库进行了解析速度的测试,下面是测试的结果和工程代码附件. 我们选择的测试对 ...
- 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试
机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...
- dotnet core TargetFramework 解析顺序测试
dotnet core TargetFramework 解析顺序测试 Intro 现在 dotnet 的 TargetFramework 越来越多,抛开 .NET Framework 不谈,如果一个类 ...
- alluxio源码解析-rpc调用概述-client和worker之间的block模块的通讯架构(netty版本)(3)
(1.8版本)client和worker之间的block模块的通讯架构 block作为alluxio文件读取或者存储的最小基本单位,都是通过BlockOutStream和BlockInputtream ...
- UE4 Run On Server与Run on owning client
- Axis2创建WebService服务端接口+SoupUI以及Client端demo测试调用
第一步:引入axis2相关jar包,如果是pom项目,直接在pom文件中引入依赖就好 <dependency> <groupId>org.apache.axis2</gr ...
- 通过http.client解析url返回的数据时为什么中文变成了unicode码
今天在解析json数据的时候得到了一堆这样的数据:{"errNum":0,"errMsg":"success","retData& ...
- dubbo、zookeeper心跳相关参数解析与测试
dubbo consumer和provider的心跳机制 dubbo客户端和dubbo服务端之间存在心跳,目的是维持provider和consumer之间的长连接.由dubbo客户端主动发起,可参见d ...
- junit源码解析--捕获测试结果
OK,前面的博客我们整理了junit运行完了所有的测试用例,那么OK了,现在开始该收集测试结果了. 在这最后一步中,junit主要是玩一个类,TestResult.这里类中封装了几个参数,在初始化这个 ...
随机推荐
- poj1751最小生成树
The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has a very poor system of p ...
- 关于vector push_back()与其他方式读取数据的效率对比
引言: 在读取大量数据(数组)时,使用vector会尽量保证不会炸空间(MLE),但是相比于scanf的读取方式会慢上不少.但到底效率相差有多大,我们将通过对比测试得到结果. 测试数据:利用srand ...
- 分针网—IT教育:作为PHP开发人员容易忽视的几个重点
无论是学习什么样的一个开发.ASP开发.java开发.当学习还不是很久的时候,一般都是不知道它们的精华是在哪里,而现在很多的php程序员也是不知道PHP的精华所在,为什么perl在当年在商界如此的出名 ...
- (转载)提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- DokiCam 360°4K相机:为极致运动爱好者而生
去年11月,位于中国苏州的DokiCam为其360°消费像机推出了Kickstarter人群资助活动.随着本次活动圆满结束,这款被称为DokiCam 360°的动作相机现在已经可以购买. 进入360° ...
- 新鲜出炉的less与sass较量
最近接触了Bootstrap,涉及到了LESS,CSS的预处理器使用最广泛的就是LESS和Sass,都是努力把CSS武装成为开发语言,让它从简单的描述性语言过渡到具有程序式特性的语言,主要的特性就是: ...
- 密码学之DES/AES算法
本文示例代码详见:https://github.com/52fhy/crypt-demo DES DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算 ...
- Centos5搭建vsftpd服务
更换镜像源 由于centos5已经历史久远,内置的镜像源已经不能用.看: 因此,我手工更换了阿里云的源.(ps:我本来是想用网易的源,但不知为什么,这个源在安装vsftpd时提示http 404错误) ...
- 【Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数】
一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(Firs ...
- android组团开发站立会议第三周第一次会议
会议时间:组队开发第三周 星期一 开始时间晚上9:30-10:00 会议地点:学一食堂 二楼 到会人员:李志岩 王亚蕊 安帅 薛禄坤 张新宇 孙存良 会议概要: 1. ...