[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 ...
随机推荐
- 你真的了解word-wrap和word-break的区别吗? (转载)
这两个东西是什么,我相信至今还有很多人搞不清,只会死记硬背的写一个word-wrap:break-word;word-break:break-all;这样的东西来强制断句,又或者是因为这两个东西实在是 ...
- 自动化部署--shell脚本--3
登录gitlab第一次登录gitlab,需要为root用户修改密码,root用户也是gitlab的超级管理员.http://192.168.58.11设置密码是gitlab 密码不够长,重新设置下,设 ...
- [转]从OSI网络模型到TCP/IP协议族简介
OSI七层模型 OSI(Open System Interconnection,开放系统互联)七层网络模型成为开放式系统互联参考模型,是一个把网络通信在逻辑上的定义,也可以理解成为定义了通用的网络通信 ...
- nginx 镜像使用说明
nginx 镜像说明 目录 说明 /etc/nginx nginx安装目录 /usr/share/nginx/html nginx网站资源存放的目录 运行nginx容器,相关命令: 命令 说明 doc ...
- yum和编译两种方式升级or降级Centos内核
http://blog.51cto.com/renzhiyuan/1882599 今天探讨用yum和编译两种方式升级或者降级内核版本: 升级:比如玩kvm,docker等虚拟化,centos内核则升级 ...
- 获取docker容器的ip地址
1.进入容器后执行cat /etc/hosts 会显示自己以及(– link)软连接的容器IP 2.使用命令 docker inspect --format '{{ .NetworkSettings. ...
- python初始化list列表(1维、2维)
1.初始化递增的list: list1 = range(10)#print list1#[0,1,2,...,9] 2.初始化每项为0的一维数组: list2 = [0] * 5#print list ...
- KNN手写实践:Python基于数据集整体计算以及排序
1. 距离计算,不要通过遍历每个样本来计算和指定样本距离,而是通过对于指定样本进行广播(复制)成为一个shape和全局一致后,再进行整体计算,这里的广播 / 复制采用的是tile函数来实现的: 2. ...
- monkey配置及简单报告生成(安卓)
参考网址:http://www.51testing.com/html/72/502872-3709760.html 1.安装jdk,配置环境变量 2.安装sdk(解压后,配置环境变量到path ...
- Python Scrapy环境配置教程+使用Scrapy爬取李毅吧内容
Python爬虫框架Scrapy Scrapy框架 1.Scrapy框架安装 直接通过这里安装scrapy会提示报错: error: Microsoft Visual C++ 14.0 is requ ...