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.这里类中封装了几个参数,在初始化这个 ...
随机推荐
- hdu1166树状数组
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于 ...
- [故障公告]14:39-15:39博客站点部分负载均衡遭遇3次20G以上的流量攻击
非常抱歉,今天下午14:39-15:39左右,博客站点的部分负载均衡遭遇3次20G以上的流量攻击,造成很多用户不能正常访问.由此给您带来麻烦,请您谅解. 攻击的过程是这样的: 14:39,第1次攻 ...
- linux文件系统下的特殊权限
SUID, SGID, Sticky 1 权限 r, w, x user, group, other 2 安全上下文 前提:进程有属主和属组:文件有属主和属组: (1) 任何一个可执行程序文件能不能启 ...
- iframe框架的应用
同学接私活,我写几个页面. 后台系统,点击侧栏菜单后,右边div的要显示对应的内容.就是说,没选一下左边的菜单,右边的内容都要变化. 这次首先尝试了一下Oldfasional办法--iframe框架. ...
- bootstrap 获得轮播中的索引或当前活动的焦点对象
今天用bootstrap做一个轮播,当轮播滚到每张图的时候,在页面下面就显示相对应的内容,那么问题来了:为了轮播图的可扩展性,我们肯定需要知道当前活动(显示图片)的索引号,查了bootstrap文档, ...
- redis集群添加删除节点
Redis3.0集群添加节点 1:首先把需要添加的节点启动 cd /usr/local/cluster/ mkdir 7006 cp /usr/local/cluster/redis.conf /u ...
- 工厂模式(Factory)和抽象工厂模式(Abstract Factory)
一.工厂模式(Factory):通过让子类决定该创建的对象是什么,来达到将对象创建的过程封装的目的,工厂方法让类的实例化推迟到子类 (1)涉及角色:抽象产品,具体产品,抽象创建者,具体创建者. ...
- StringTokenizer使用笔记
StringTokenizer 基本使用 笔者最近在做算数表达式的逆波兰式转换和解析,原始表达式为String类型,在使用StringTokenizer 之前笔者的解决思路是 将原始表达式->转 ...
- Natas Wargame Level 3 Writeup 与 robots.txt
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnsAAAC5CAYAAABQi/kBAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF
- POJ2524并查集水题
Description There are so many different religions in the world today that it is difficult to keep tr ...