[UE4]RPC,远程调用
RPC
一、Remote Procedure Call:远程程序调用
二、一个进程调用另外一个进程上的函数

由于“Server-shoot”方法被标记为“在服务器上运行”,所以尽管是在第二个窗口(客户端)开火,输出的信息是:Server:准备射击,表明这是在服务器上运行。


在服务器上“Server-shoot”方法又调用调用了“MutiCast-Shoot”方法,“MutiCast-Shoot”(被标记为“多路传送”),所以服务器会通知所有客户端都去执行这个方法。
结果就显示:Server:全体射击和Client 1:全体射击。
因为没有勾选“运行专用服务器”,因此第一个窗口同时是服务器和客户端,“多路传送”的时候也把消息传送给也身兼客户端的自己,因此就会显示“Server:全体射击”

二、远程调用Actor拥有权。
- 如果通过Get All Actors Of Class函数获得到客户端A控制的角色实例赋值给标记为“在服务器端运行”的方法“Server-shoot”(目标默认是self),在客户端B上运行(把客户端B实例赋值给“Server-shoot”的目标参数),服务器上并不会去执行这个操作,被舍弃了,当然也不会被传播到其他客户端。
- 但如果是在服务器上调用标记为“在服务器端运行”的方法“Server-shoot”,不管“Server-shoot”的目标参数赋值给谁,都会被执行,也会被传播到其他客户端。


玩家A通过执行标识为Run On Server的开枪事件来通知服务器玩家A开枪了,服务器接收到玩家A的开枪通知,通过标识为“多路传播”的方法“开火动作”,来告诉所有客户端的玩家A镜像执行“开火动作”
下面的表格根据执行调用的 actor 的所有权(最左边的一列),总结了特定类型的 RPC 将在哪里执行。
从服务器调用的 RPC
|
Actor 所有权 |
未复制 |
|
|
|
|---|---|---|---|---|
|
Client-owned actor (客户端拥有Actor所有权) |
在服务器上运行 |
在服务器和所有客户端上运行 |
在服务器上运行 |
在 actor 的所属客户端上运行 |
|
Server-owned actor (服务器端拥有Actor所有权) |
在服务器上运行 |
在服务器和所有客户端上运行 |
在服务器上运行 |
在服务器上运行 |
|
Unowned actor (没有拥有者的Actor) |
在服务器上运行 |
在服务器和所有客户端上运行 |
在服务器上运行 |
在服务器上运行 |
从客户端调用的 RPC
|
Actor 所有权 |
未复制 |
|
|
|
|---|---|---|---|---|
|
Owned by invoking client (Actor被所调用的客户端拥有所有权) |
在执行调用的客户端上运行 |
在执行调用的客户端上运行 |
在服务器上运行 |
在执行调用的客户端上运行 |
|
Owned by a different client (Actor被其他客户端拥有所有权) |
在执行调用的客户端上运行 |
在执行调用的客户端上运行 |
丢弃 |
在执行调用的客户端上运行 |
|
Server-owned actor (Actor被服务器端拥有所有权) |
在执行调用的客户端上运行 |
在执行调用的客户端上运行 |
丢弃 |
在执行调用的客户端上运行 |
|
Unowned actor (没有拥有者的Actor) |
在执行调用的客户端上运行 |
在执行调用的客户端上运行 |
丢弃 |
在执行调用的客户端上运行 |
关于RPC远程调用更多信息查看官方文档:http://api.unrealengine.com/CHN/Gameplay/Networking/Actors/RPCs/index.html
[UE4]RPC,远程调用的更多相关文章
- 測试JSON RPC远程调用(JSONclient)
#include <string> #include <iostream> #include <curl/curl.h> /* 标题:JSonclient Auth ...
- 使用Socket&反射&Java流操作进行方法的远程调用(模拟RPC远程调用)
写在前面 阅读本文首先得具备基本的Socket.反射.Java流操作的基本API使用知识:否则本文你可能看不懂... 服务端的端口监听 进行远程调用,那就必须得有客户端和服务端.服务端负责提供服务,客 ...
- 从0到1:全面理解RPC远程调用
上一篇关于 WSGI 的硬核长文,不知道有多少同学,能够从头看到尾的,不管你们有没有看得很过瘾,反正我是写得很爽,总有一种将一样知识吃透了的错觉. 今天我又给自己挖坑了,打算将 rpc 远程调用的知识 ...
- Openstack Nova 源码分析 — RPC 远程调用过程
目录 目录 Nova Project Services Project 的程序入口 setuppy Nova中RPC远程过程调用 nova-compute RPC API的实现 novacompute ...
- rpc远程调用开发
RPC即远程过程调用,适用于集群管理,集群节点就是RPCServer,而我们发起远程调用的web服务器就是RPCClient.所以是少数rpcClient(可能一个)对多个RPCServer(集群节点 ...
- dubbo集成zookeeper rpc远程调用
注:下面使用dubbo依赖的是zookeeper注册中心,这里没有详细的介绍.在配置之前,请自行准备好zookeeper环境. 后续如果写zookeeper的配置会补放链接 添加Gradle依赖 co ...
- 详解RPC远程调用和消息队列MQ的区别
PC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制. RPC框架 知名度较高的有Thrift(FB的).dubbo(阿里的). RP ...
- go语言net包rpc远程调用的使用
一.基于http的RPC 服务端: package main; import ( "net/rpc" "net/http" "log" ) ...
- RPC远程调用概念 && demo实例
RPC是指远程过程调用,直观说法就是A通过网络调用B的过程方法. 也就是说两台serverA.B,一个应用部署在Aserver上,想要调用Bserver上应用提供的函数/方法,因为不在一个内存空间,不 ...
- RabbitMQ学习之基于spring-rabbitmq的RPC远程调用
http://blog.csdn.net/zhu_tianwei/article/details/40920985 spring-rabbitmq中实现远程接口调用,主要在com.rabbitmq.s ...
随机推荐
- SQL Server 表分区备忘
1.创建的代码如下: )) AS RANGE LEFT FOR VALUES ( N', N', N',... ) CREATE PARTITION SCHEME [01_SubjectiveScor ...
- mongodb添加验证用户 删除用户
1.创建用户 db.createUser( { user:<name_string>, #字符串 pwd:<password_string> ...
- 给网卡设备添加两个IP别名(一个网卡绑定多个ip)
首先执行ifconfig,查看网卡设备名称 [root@localhost conf]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULT ...
- spark aggregate函数详解
aggregate算是spark中比较常用的一个函数,理解起来会比较费劲一些,现在通过几个详细的例子带大家来着重理解一下aggregate的用法. 1.先看看aggregate的函数签名在spark的 ...
- Python实例属性限制(__slots__)
Python的动态绑定可以在程序运行的过程中对实例或class加上功能,但是如果我们想要限制实例的属性怎么办呢?更改内容请参考:Python学习指南 正常情况下,当我们定义了一个class,创建了一个 ...
- MYSQL之 GroupCommit
组提交(group commit)是MYSQL处理日志的一种优化方式,主要为了解决写日志时频繁刷磁盘的问题.组提交伴随着MYSQL的发展不断优化,从最初只支持redo log 组提交,到目前5.6官方 ...
- docker 学习资料
docker 学习资料 学习资料 网址 Docker 教程(菜鸟教程) http://www.runoob.com/docker/docker-tutorial.html
- PHP实现IP访问限制及提交次数的方法详解
一.原理 提交次数是肯定要往数据库里写次数这个数据的,比如用户登陆,当用户出错时就忘数据库写入出错次数1,并且出错时间,再出错写2,当满比如5次时提示不允许再登陆,请明天再试,然后用DateDiff计 ...
- matlab:Source Control Integration
http://cn.mathworks.com/help/matlab/source-control.html
- ASP.NET AJAX入门系列(3):使用ScriptManagerProxy控件
在ASP.NET AJAX中,由于一个ASPX页面上只能有一个ScriptManager控件,所以在有母版页的情况下,如果需要在Master-Page和Content-Page中需要引入不同的脚本时, ...