Files
UnrealEngineUWP/Engine/Documentation/Source/Gameplay/Networking/Example/Example.CHN.udn
2016-06-13 13:06:55 -04:00

30 lines
2.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
INTSourceChangelist:2713562
Availability:Public
Title: 复制过程示例
Crumbs:%ROOT%, Gameplay, Gameplay/Framework
Description:设置多人模式连网游戏。
Related: Gameplay/Networking/Blueprints
Related: Gameplay/Networking/Actors
version: 4.9
为了让示例更加形象具体,我们在这里假设您是网络游戏中的一个客户端。您会看到两名对手朝着您这里跑来,对您射击,而且会听到他们的射击声。既然所有的游戏状态
都是在服务器而非您的计算机上维护,您为何能看到和听到这些事物呢?
您可以看到对手,是因为服务器已经识别出对手与您相关(也就是说,他们是可见的),而此时服务器会将这些 Actor 复制给您。这样,您(客户端)
就会有这两个正在追击您的玩家 Actor 的本地复本。您可以看到对手朝您跑来,是因为服务器正在将他们的方位和速率属性
复制给您。在服务器提供方位更新的间隔,您的客户端会在本地模拟对手的移动。您可以听到他们的射击声,是因为服务器正在将
ClientHearSound 函数复制给您。当服务器确认 PlayerPawn 听到声音时,就会为 PlayerPawn 调用 ClientHearSound 函数。
讲解至此,虚幻引擎多人游戏背后的底层机制应该是清晰明确了 。服务器不断更新游戏状态并作出所有的重大游戏决策;服务器会
复制一部分 Actor 给客户端;服务器会复制一些变量给客户端。同时,服务器还要向客户端复制一些函数调用。
另外可以明确的是,并非所有的 Actor 都需要复制。例如,如果一个 Actor 已经通过了半个关卡并离开您的视野,您就无需浪费带宽来发送与此有关的
更新。同样,变量也无需全部更新。例如,服务器做出 AI 决定时所用的变量可以不必发送到客户端;客户端只需了解
它们的显示变量、动画变量和物理变量。同时,服务器上执行的大多数函数都不应被复制。只有那些能让客户端看到或听到事物的
函数调用才需要被复制。总之,服务器中包含了大量数据,而只有一小部分数据会涉及客户端,影响到玩家的所见、所闻或
所感。
因此从逻辑上讲,我们不禁要问:“虚幻引擎如何知道要复制哪些 Actor、变量和函数调用
答案就是,无论谁来给类编写代码或设置蓝图,都要负责确定所需复制的变量和函数。