在阅读本文档之前,请先阅读多人在线对战服务总览及 MasterClient ,了解多人在线对战开发的基础结构。
多人在线对战服务(即下图中的 Multiplayer 服务)很好的解决了「房间」抽象与房间之间玩家交换消息的问题。我们以「剪刀石头布」游戏为例,游戏的流程是这样的:
其中 Multiplayer 服务扮演的是一个纯粹的消息转发角色,为了方便之后的讨论,我们可以把这个图简化一下(虚线代表消息是通过 Multiplayer 服务传递的):
这个流程很简单,但也存在一些问题:
不同的游戏类型对于这些问题的容忍度是不同的。在不改变上图流程的前提下,这些问题也都能找到各自改进的方案。但 Client Engine 方案试图用一个釜底抽薪的方法解决这些问题:把 MasterClient 运行到服务端。在 Client Engine 方案里,游戏的流程是这样的:
在这个流程中,在服务端运行的 MasterClient 是唯一拥有上帝视角的裁判。所有玩家都只与 MasterClient 交换信息,MasterClient 只会给客户端同步部分信息(比如只告诉 B「A 出拳了」,但出了什么未知)。游戏逻辑的运算(包括随机、胜负判定)以及最终结果的上报都在服务端进行。
Multiplayer 服务是基础。玩家客户端并不与 MasterClient 直接通信,图中的虚线表示消息仍然是通过 Multiplayer 服务转发的。
Client Engine 是 LeanCloud Play 提供的多人在线游戏 Client 托管方案。多人在线对战服务提供了 MasterClient 机制来控制游戏逻辑:MasterClient 是一个特殊的 Client,它接收和处理游戏内的所有事件与消息,进行实时处理之后将结果下发给其他游戏客户端,用以控制游戏向下执行。开发者可以基于多人在线对战的 SDK 开发出一套完整的 MasterClient 逻辑,继而将这样的「客户端」托管到 Client Engine,省去程序部署、运维的负担。如图所示:
除了 MasterClient 的托管外,开发者还可以在 Client Engine 中
将游戏逻辑托管在 Client Engine 有以下优势:
详细的使用方式请参考文档:
示例 Demo:
开发版下提供「体验版」供开发者免费使用:
休眠策略:
标准实例不会休眠。
体验实例会执行休眠策略:
如果不希望预备环境的体验实例因为强制休眠而中断服务,或需要多个实例来完整模拟生产环境,可以在预备环境根据需要购买标准实例。
商用版下可通过控制台从「体验版」升级到「标准版」,「标准版」提供预备环境,支持自动扩容及负载均衡,不会休眠。
「标准版」按照「计算单元」扩容与计费。一个计算单元包含 100 CCU 和 50% CPU,我们会在任意一个指标用尽的时候自动增加计算单元。例如在某一时刻 Client Engine 消耗了 80 CCU 与 90% CPU,则此时系统会为其分配 2 个计算单元。
系统会按照每天的计算单元用量峰值计费,单个计算单元的价格请参考官网。例如国内节点的一个应用某天最多使用了 2 个计算单元,当天收费为 2 * 国内计算单元价格。
Client Engine 总览
在阅读本文档之前,请先阅读多人在线对战服务总览及 MasterClient ,了解多人在线对战开发的基础结构。
Client Engine 解决了什么问题
多人在线对战服务(即下图中的 Multiplayer 服务)很好的解决了「房间」抽象与房间之间玩家交换消息的问题。我们以「剪刀石头布」游戏为例,游戏的流程是这样的:
其中 Multiplayer 服务扮演的是一个纯粹的消息转发角色,为了方便之后的讨论,我们可以把这个图简化一下(虚线代表消息是通过 Multiplayer 服务传递的):
这个流程很简单,但也存在一些问题:
不同的游戏类型对于这些问题的容忍度是不同的。在不改变上图流程的前提下,这些问题也都能找到各自改进的方案。但 Client Engine 方案试图用一个釜底抽薪的方法解决这些问题:把 MasterClient 运行到服务端。在 Client Engine 方案里,游戏的流程是这样的:
在这个流程中,在服务端运行的 MasterClient 是唯一拥有上帝视角的裁判。所有玩家都只与 MasterClient 交换信息,MasterClient 只会给客户端同步部分信息(比如只告诉 B「A 出拳了」,但出了什么未知)。游戏逻辑的运算(包括随机、胜负判定)以及最终结果的上报都在服务端进行。
Multiplayer 服务是基础。玩家客户端并不与 MasterClient 直接通信,图中的虚线表示消息仍然是通过 Multiplayer 服务转发的。
Client Engine 介绍
Client Engine 是 LeanCloud Play 提供的多人在线游戏 Client 托管方案。多人在线对战服务提供了 MasterClient 机制来控制游戏逻辑:MasterClient 是一个特殊的 Client,它接收和处理游戏内的所有事件与消息,进行实时处理之后将结果下发给其他游戏客户端,用以控制游戏向下执行。开发者可以基于多人在线对战的 SDK 开发出一套完整的 MasterClient 逻辑,继而将这样的「客户端」托管到 Client Engine,省去程序部署、运维的负担。如图所示:
除了 MasterClient 的托管外,开发者还可以在 Client Engine 中
将游戏逻辑托管在 Client Engine 有以下优势:
文档及 Demo
详细的使用方式请参考文档:
示例 Demo:
价格
开发版
开发版下提供「体验版」供开发者免费使用:
休眠策略:
标准实例不会休眠。
体验实例会执行休眠策略:
如果不希望预备环境的体验实例因为强制休眠而中断服务,或需要多个实例来完整模拟生产环境,可以在预备环境根据需要购买标准实例。
商用版
商用版下可通过控制台从「体验版」升级到「标准版」,「标准版」提供预备环境,支持自动扩容及负载均衡,不会休眠。
「标准版」按照「计算单元」扩容与计费。一个计算单元包含 100 CCU 和 50% CPU,我们会在任意一个指标用尽的时候自动增加计算单元。例如在某一时刻 Client Engine 消耗了 80 CCU 与 90% CPU,则此时系统会为其分配 2 个计算单元。
系统会按照每天的计算单元用量峰值计费,单个计算单元的价格请参考官网。例如国内节点的一个应用某天最多使用了 2 个计算单元,当天收费为 2 * 国内计算单元价格。