目录
网络身份
行为同步和属性同步
Actor网络身份-区分Client & Server
身份授权类别
划分终端所在用途
思考几个问题:
- 什么是同步?
- 网络游戏中,什么内容需要同步?
- 虚幻中的同步单位是什么?
- 是不是所有内容都需要同步?
场景中摆放的Actor,默认是同步到所有终端,但是它们没有做网络关联。
Net Load On Client选项默认是勾选的,也就是场景中的物体默认都会在所有终端显示,但是并不代表所有物体对象都需要进行网络同步,因为所有内容全部同步的成本非常高。
场景中摆放的Actor需要进行网络同步时,需要在细节面板中勾选"Replicates",默认是关闭的。
生成和销毁
在服务器生成Actor,若开启"Replicates",则会同步到所有终端
在服务器销毁Actor,若开启"Replicates",则所有终端中关联对象均会被销毁
但是,开启"Replicates"就一定会同步所有行为和属性吗?
No!开启"Replicates"只代表对象在网络有同步的能力,而具体怎么同步,要同步什么内容,需要设计者去思考。
调用与执行位置进行拆分。即:调用位置和执行位置不一定相同。(RPC)
当对象开启了网络同步,那么将会获得网络身份授权。
根据终端不同,分为本地身份(Local)和远端身份(Remote)
在执行行为同步时,我们必须直到当前对象执行行为时所在的终端类型,以便我们选择合适的同步方式,处理动作。
举例:Client有一个开枪动作,这时就需要到Server去检查玩家是否具备开枪的能力。Client开枪,但执行结果在Server,这时就需要我们知道动作产生在哪里。
Unreal框架中,有主机端的概念,即玩家操控端和主机端重叠(说白了就是房主,比如CS、魔兽争霸里的房主,也需要参与游戏),主机端也产生游戏逻辑。所以执行动作我们必须要清楚动作的所在终端。