Choose your operating system:
Windows
macOS
Linux
内容示例项目中的 网络_功能(Network_Features) 地图展示了如何通过蓝图全面实现网络功能。其中,在 复制(Replication) 部分中提供了一些重要的示例,包括可以在Actor上设置的 复制(Replicates) 布尔值、检测 网络权限(Network Authority) 并根据权限执行不同的逻辑、变量复制(Variable Replication) 的用法以及如何在Gameplay中运用、变量复制中使用 复制通知(RepNotify) 根据对所复制变量进行的更新来执行逻辑,以及使用 函数复制(Function Replication) 来处理非关键性Gameplay元素或"一次性"事件。
该地图中的其他部分提供了关于 相关性(Relevancy) 的介绍,以及如何正确处理服务器和客户端之间的通信。在很多时候,并不需要将全部信息都从服务器传递到每个客户端(例如,在地图一端的玩家不需要知道另一个玩家在地图另一端打开了一个宝箱)。不过在有些情况下,这些信息可能变得对玩家很重要(例如,该玩家传送到了地图另一端的宝箱旁边)。此地图中的内容示例就将展示如何处理这类情况,以及如何处理玩家在游戏进程中加入的情况。
你可以点击表格中的示例名称,找到构建示例的附加资源。
复制
复制(Replication) 部分中的示例展示了在服务器和客户端之间正确通信的方法,以及应该在何时使用不同的技巧。
示例 |
展示内容 |
---|---|
两个Actor的示例,其中一个是复制的,另一个不是(例如,一个Actor在客户端和服务器上都显示,而另一个只在服务器上显示)。 |
|
此蓝图示例根据网络权限执行不同的逻辑(例如,Actor根据在服务器上查看还是在客户端上查看,会有不同的显示)。 |
|
该示例演示了将生命值变量从服务器复制到客户端(例如,当服务器更新某个Actor的生命值变量时,会在客户端上显示并更新该Actor的生命值)。 |
|
该示例演示了标记为RepNotify的变量在服务器以及客户端上自动更新(例如,信号灯使用RepNotify变量来确保客户端和服务器都在查看同一物体)。 |
|
此示例展示了在服务器或客户端按下按钮时,如何使用复制函数传递信息。 |
相关性
相关性(Relevancy) 部分中的示例展示了如何处理打开宝箱的 网络相关性 并在服务器和客户端之间交流状态。它解决了一个非常普遍的问题,即如何处理某个Actor先是无关、后来又变为相关的情况。这与处理玩家在现有游戏进程中加入的问题非常相似。
以下示例提供了上述问题可能的解决方案,以及这些方案有效或无效的原因。最后一个示例通过运用多种技巧的混合解决方案解决了问题。
示例 |
展示内容 |
---|---|
一个相关性示例,在其中使用"不复制"方法(例如,当服务器打开宝箱时,客户端不会看到宝箱被打开)。 |
|
一个相关性示例,在其中使用"函数复制"方法(例如,服务器打开宝箱,客户端不会看到宝箱打开,移动到宝箱附近时也不会看到它打开)。 |
|
一个相关性示例,在其中使用"变量复制"方法(例如,服务器打开宝箱,客户端不会看到宝箱打开,但移动到宝箱附近时会看到它打开。此时还会播放粒子效果,而在这个示例中这是我们不希望看到的,因为宝箱先前已经被另一个玩家打开了)。 |
|
一个相关性示例,在其中既使用了函数复制来播放与打开宝箱相关的效果,也使用了复制的变量来保存宝箱的状态和它打开与否的信息。 |