Iris向虚幻引擎(UE)的复制系统引入了多个新概念。 本页面介绍了在讨论Iris复制系统的结构和操作时常用的一些术语。
术语
- Actor复制桥
Actor复制桥将实现复制桥接口。 Actor复制桥会从Actor和Actor组件构造复制协议和复制实例协议。 它还会实现从属性轮询状态数据并发出必需旧版回调的代码。
- 复制写入器
复制写入器负责为所有连接跟踪和序列化所有复制的对象的状态。
这包括:
基于以下条件安排复制数据:
优先级。
安排优先级。
复制的对象的复制状态。
依赖性
子对象
序列化
- 复制协议
复制协议定义如何复制对象的数据。 复制协议是描述要复制的数据的所有复制状态的数组。
- 复制实例协议
将为每个对象实例创建一个复制实例协议。 它是实例的所有复制片段的数组,并在每次Gameplay代码和复制系统之间交换状态数据时使用。
- 复制数据流
复制数据流负责序列化和反序列化复制数据。
其实现分为两个部分:
复制读取器
复制写入器
- 复制片段
复制片段是复制状态的所属对象。 要在复制系统和Gameplay代码之间来回传输数据,复制状态必须绑定到所属对象。 复制片段充当复制状态的所属对象。
- 复制状态
复制状态是结构体,其中包含应该通过网络复制或传输的数据。
- 复制状态描述符
复制状态描述符将描述复制状态的所有方面,包括:
内部和外部表示的内存布局。
如何序列化状态的每个成员。
必需操作。
- 复制状态描述符编译器
复制状态描述符编译器基于反射数据为所有支持的类型构建复制状态描述符。
- 复制系统
复制系统是在Gameplay代码中与Iris交互的主接口。
- 复制系统内部
复制系统内部是复制系统的内部接口,仅向内部Iris代码公开。
- 复制网桥
复制网桥会在Gameplay代码和网络代码之间传输数据。 复制网桥会为游戏提供特定于类型的接口,并有从数据创建复制协议和复制实例协议的功能。 复制网桥还负责在从复制系统请求时实例化Gameplay对象,例如Actor和其他支持的类型。
- 复制记录
复制记录是复制写入器中的动态数据的列表。 复制写入器的一个重要作用是跟踪所有动态数据。 这样做是为了方便在数据丢失或交付时相应高效地采取措施。 只要对象的动态数据仍在等待交付通知,复制记录就会为该对象维护链接列表。
- 复制读取器
复制读取器是负责传入数据的内部系统。 它使用复制网桥驱动反序列化和状态应用。
- 对象引用缓存
对象引用缓存将存储已复制并静态命名的
`UObject`的引用。 其工作方式类似于NetGUID缓存和客户端数据包映射。- 属性复制片段
属性复制片段是属性复制状态的所属对象。
- 属性复制状态
属性复制状态是用于与当前反射系统交互的动态复制状态。
- 快速数组复制片段
快速数组复制片段是快速数组复制状态的所属对象。 这是快速数组的复制片段的特定实现。
- 数据流送
数据流是通用复制系统中数据通道的Iris等效项。 数据流负责序列化数据。 你还可以使用数据流为不同类型的数据实现特定数据交付保证。
- 更改遮罩
更改遮罩是位数组,用于跟踪所复制数据的脏污。 Iris以两种方式使用更改遮罩:
* 所有复制状态都有内联存储,用于对更改的成员进行本地、缓存友好的跟踪。
* 复制系统为复制协议中的所有复制状态维护合并的更改遮罩。
- 类型化复制状态
类型化复制状态是一种基于结构体的复制状态,该结构体拥有所有成员和内部成员的访问器,用于存储所属网络对象的ID以及位字段(用于跟踪每个成员的脏污)。
- 网络Blob
网络Blob是可以随对象复制的某事项的基类。 当前只有Iris自身在使用它,但你可以使用它们来发送大部分类型的数据或事件,例如,调试数据或RPC。
- 网络RPC
为处理标准RPC而专门实现的网络Blob。
- 网络RPC处理程序
网络RPC处理程序处理在创建和处理接收的RPC时涉及的逻辑。 例如,网络RPC处理程序将确定某个Actor是否仍有效,以便对其调用RPC。
- 网络令牌
网络令牌是各种类型的数据的网络对象,这些数据不一定直接与网络相关,但你可能仍希望服务器与客户端之间能够通信。
可以表示为网络令牌的内容的示例:
字符串
数据Blob
包
你可以使用在启动时加载或在序列化期间导出的网络令牌数据流,显式地将令牌数据传达给客户端。 你可以向网络令牌管理器查询远程端所有令牌的状态。
- 网络令牌数据流
网络令牌数据流将序列化网络令牌数据。
- 网络字节流读取器
网络字节流读取器有利于高效地反序列化内存缓冲区中的字节。
- 网络对象
网络对象是Gameplay代码中实例化的复制对象的内部网络表示。 网络对象与唯一的网络引用句柄和内部索引关联。
- 网络引用句柄
网络引用处理程序是服务器和客户端上某个对象的唯一标识符,在概念上类似于NetGUID(网络全局唯一标识符)。 网络句柄用于以下对象的对象引用:
静态可寻址对象
复制的Object
- 网络引用句柄管理器
网络引用句柄管理器为所有网络对象分配内部ID和状态存储。