网络特性内容实例
概述
在 Content Examples (内容示例)项目中的 Network_Features (网络特性)地图展现了如何通过蓝图完全实现网络功能。 它在 Replication (复制)中提供了关键实例,这些实例包括了可以在Actors上进行设置的 Replicates (复制)布尔值,检测 Network Authority (网络授权)并基于该授权端执行不同的逻辑,使用 Variable Replication (变量复制)以及它如何在游戏中进行使用,使用 RepNotify 的变量复制对基于复制的变量更新执行逻辑,以及使用 Function Replication (函数复制)来处理非关键游戏要素或"一次性"的事件。
地图的另一部分提供了关于 Relevancy (关联性)的观点,以及如何正确处理在服务器和客户端间的信息沟通。 很多情况下,服务器并不需要把每条信息都要传送到每个客户端中(例如,在地图一侧的玩家不需要了解在地图另一侧的玩家打开宝箱的事情)。 然而有时会产生与该玩家产生关联性的情况(例如,如果该玩家移动到被打开的箱子的地图那侧),此地图中的内容实例将显示如何处理类似于此的情况以及如何处理玩家加入已在进行中的游戏的情况。
您可以通过点击各表格中示例的名称来找到关于示例是如何构建的额外资源。
复制
在 复制 部分的示例展示了在服务器和客户端间的信息沟通的合理方式以及何时采用不同的技术。
示例 | 展示的内容 |
---|---|
1.1 Actor复制 | 在本实例中有两个Actors,一个是 Replicated (复制的),另一个不是(例如,同时出现在客户端/服务器的Actor,以及仅出现在服务器的Actor)。 |
1.2 检测蓝图中的网络权限和远程客户端 | 本实例中,蓝图基于 Network Authority (网络授权)执行不同的逻辑(例如,Actor基于服务器或客户端而进行不同的显示)。 |
1.3 变量复制 | 本示例展示了从服务器到客户端对生命值变量进行 Replicating (复制)的实例(例如,当服务器更新变量时,显示Actor的生命值并在客户端上进行更新)。 |
1.4 变量复制 (RepNotify) | 本实例中,变量被标记为 RepNotify ,它在服务器和客户端上自动更新(例如,使用 RepNotify 变量的街道灯光可确保在服务器和客户端查看相同的内容)。 |
1.5 函数复制 (RPCs) | 本示例中, Replicated Function (复制的函数)被用来在客户端或服务器按下按钮时进行通讯。 |
关联性
在 Relevancy (关联性)部分展示的示例展现了如何处理在打开箱子时的 Network Relevancy (网络关联性)以及如何在服务器和客户端间沟通状态。 主要是解决了一个非常常见的问题,如何处理Actor一开始不关联并在随后成为关联的情况。 这和处理玩家加入存在的进行中的游戏的情况非常类似。
下方的示例提供了对以上所述问题的可能解决方案以及为何它们无法产生作用。 最终的示例通过混合多种技术而解决了此问题。
示例 | 展示的内容 |
---|---|
2.1 网络关联性 - 根本未被复制 | 使用 No Replication (无复制)的相关性示例(例如,服务器打开箱子,客户端不认为箱子已打开)。 |
2.2 网络关联性 - 函数复制解决方案的尝试 | 如何使用 Function Replication (函数复制)的相关性示例 (例如,在服务器侧打开了箱子,但客户端不认为箱子已打开,并在移近它时不认为它已打开)。 |
2.3 网络关联性 - 变量复制解决方案的尝试 | 如何使用 Variable Replication (变量复制)的相关性示例 。例如,在服务器侧打开了箱子,但客户端不认为箱子已打开,但在移近它时认为它已打开。 粒子特效也会播放,由于此盒体在之前由另一个玩家打开过,因此对此实例不需要这样。 |
2.4 网络关联性 - 组合方案 | 使用组合方式的关联性示例,包括使用 Function Replication (函数复制)来播放与开箱关联的特效,并使用 Replicated Variable (复制变量)来保存箱子的状态以及其是否已打开。 |