区分服务器和客户端,玩家的控制权

Posted 疯狂的凑脚丫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区分服务器和客户端,玩家的控制权相关的知识,希望对你有一定的参考价值。

在蓝图中有一个区分服务器和客户端的宏:SwitchHasAuthority

宏里判断了Server和Client

 

 

 FORCEINLINE_DEBUGGABLE bool AActor::HasAuthority()const

{

return (Role == ROLE_Authority);       //为真就表示是Server控制的角色,说明这个东西实在服务器上的;

}

 

引擎的EegineTypes.h有角色代理类型的枚举

 

 

 

同步:

物体(Actor)有一个复制属性,若为Ture则表是该物体可以进行网络复制,同步到其他Client。

 

 

 

 

 

 如果要实现Actor的网络同步,则Replicates必须为Ture,且需要在Sercer端执行逻辑。

Acotr在Server端和Client的表现大概有:以生成一个物体为例

Replicates == Ture

1.在某Client调用本地执行的逻辑本地会生成一个物体,则其他Client端和Server端不会生成物体;

2.某Client在本地向Server端发起请求生成一个物体,在Server上生成一个物体,则Server和所有Client都会生成物体;

Replicates == False

1.在某Client调用本地执行的逻辑本地会生成一个物体,则其他Client端和Server端不会生成物体;

2.某Client在本地向Server端发起请求生成一个物体,在Server上生成一个物体,所有Client都不会生成物体;

通常使用的EventBeginPlay生成物体其实在Server和Client都生成了一个

 

 

Server和Client都不会有物体生成:

5键是在本地执行的,按下后本地的值为Ture,Tick事件会在Client和Server都调用,所以所以Tick可以看作

Server调用:Server端的值还是False,不执行后面逻辑

Client调用:在Switch。。处停止

Owner:

链接:      https://api.unrealengine.com/CHN/Gameplay/Networking/Actors/OwningConnections/index.html

以上是关于区分服务器和客户端,玩家的控制权的主要内容,如果未能解决你的问题,请参考以下文章

带你走进整个游戏行业《下》

带你走进整个游戏行业《下》

Unity Photon Rigidbody Addforce 仅适用于主客户端

《Python多人游戏项目实战》第一节 简单的方块移动

上班划水神器:一个可以在控制台玩斗地主项目!

什么是向日葵客户端