何时使用 Photon Networking 主客户端?
Posted
技术标签:
【中文标题】何时使用 Photon Networking 主客户端?【英文标题】:When to use Photon Networking master client? 【发布时间】:2016-06-10 08:12:11 【问题描述】:我试图了解 Photon Networking 主客户端到底是什么。文档给出了该术语的 folowing 使用场景:
在没有服务器的情况下,它可以负责处理逻辑 只能由房间中的一个客户执行(例如开始比赛 当每个人都准备好了)。
为什么要将某些服务器功能委托给其中一个客户端? Photon Server 不应该一直可用吗?
例如,在this Photon 教程中他们使用引用“非常方便的功能”:
PhotonNetwork.automaticallySyncScene = true
如果是这样,MasterClient 可以调用 PhotonNetwork.LoadLevel() 和所有连接的玩家将自动 加载相同的关卡。
如果他们有 Photon 服务器,为什么要给其中一个客户端同步所有人的权限?
总结一下我有2个问题:
1) 究竟什么是主客户端?
2) 有哪些典型的使用场景?
非常感谢!
【问题讨论】:
【参考方案1】:Photon 服务器其实可以做一点。基本上它只帮助客户交换消息。
由于服务器无法运行游戏逻辑,您有两种选择,要么在所有客户端上并行运行游戏逻辑,要么选择一个客户端来执行所有计算并将生成的游戏状态发送给所有其他客户端。有了这样权威的客户端,让所有客户端保持同步就容易多了。
你不应该太在意哪个客户端是主人。它是自动分配的。如果当前主服务器断开连接,房间中的下一个客户端将接管。如果需要,您仍然可以手动切换主客户端。
在实现游戏逻辑时,使用 PhotonNetwork.isMasterClient 属性检查当前客户端是否为主。如果您想从非主客户端触发某些操作,只需将 RPC 发送到主客户端,要求其执行操作。
【讨论】:
以上是关于何时使用 Photon Networking 主客户端?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Photon Unity Networking 与我的自定义服务器一起使用?
使用 Photon Unity Networking 向网络游戏中的特定玩家显示消息
我如何在 Core Data 中为球队、比赛和主客场球队关系建模?