发现问题,我要反馈

Matchvs游戏云

一、Matchvs 简介

Matchvs游戏云(简称“Matchvs”)是一款商业化游戏服务器引擎,与游戏服务器开源框架不同,Matchvs将一整套联网功能集成为一个高可用的SDK,适用于包括立项之初接入与后续单机改造的多场景应用。开发者只需根据自身设计的游戏逻辑,通过SDK提供的API接口来调整所需参数,即便是无服务端开发经验的工程师也能在短时间打造出一款标准的多人实时在线联网游戏。Matchvs为开发者提供游戏联网通信解决方案,拥有快速接入联网、多节点、低延迟、云端一键部署、可定制扩展等特色,帮助开发者节省开发成本,大幅缩短开发周期。

二、特性展示

三、架构说明

如果以传统方式从零开始开发一款联网对战游戏,仅仅是为了解决玩家间简单的数据收发,开发者往往就需要解决:协议商定、服务框架选型、匹配、房间管理逻辑的设计与实现、高效数据转发、以及弱网环境优化、服务器采购、服务高可用实施等诸多问题。而以上每个问题可能都需要有相应实践经验的人才能解决。Matchvs将自身多年对战平台开发、运营经验加以总结和提炼,形成了Matchvs游戏云理念:帮助游戏开发者高效解决游戏联网问题。

简单来说Matchvs游戏云 = SaaS + PaaS + 引擎适配。如下图所示 :

开发者通过SaaS层提供的API,即可完成“就近”节点接入、玩家匹配、游戏数据通信的建立;

PaaS提供多种常见语言的GS开发框架、托管平台,游戏开发者无需自有服务器资源即可扩展Matchvs引擎联网能力,实现自定义的服务端逻辑;

引擎适配层使得开发者无论使用cocos、Unity、还是白鹭、laya等游戏引擎都能快速、方便地接入Matchvs游戏云,降低开发者学习成本、提升开发效率。

Matchvs游戏云的愿景与目标是为游戏开发者提供低延迟、高可用、可扩展、低成本、易使用的联网对战引擎。

为了实现这一目标当前 Matchvs 的整体架构如图所示:

1. SaaS 服务

SaaS 层由 SDK 和后端服务组成,开发者通过 SaaS 层提供的 API,即可完成就近区域节点接入、玩家匹配、游戏数据通信的建立。

MVS 集群(set):提供匹配、对战能力的服务(模块)集合,Set 也是全服调度的基本单位。

一个完整set包括了玩家接入、对手匹配、游戏数据传递、GS扩展等功能,与此相对应可将模块划分为

1接入层;2业务层;3基础服务层;4 GS层

MVS集群(set)组成可参见如下结构图:

1.1 区域调度服务

游戏作为延迟敏感型应用,尤其是FPS、MOBA类游戏对延时要求更为苛刻,能提供多区域节点覆盖和玩家“就近”接入就显得尤为重要。

引入区域调度服务的主要作用包括:(1)实现用户“就近”接入,降低用户延迟,显著提升对战游戏体验;(2)CP可顺应市场需要、针对玩家分布合理选择部署国内外区域;

区域调度服务与SDK配合用于指导、调度客户端接入不同 set 的全局服务。

主要有如下三个功能:用户甄别;多区域列表下发、接入推荐; 接入效果反馈、查询。

1.2 匹配与对战服务

一般来说基于“房间”模式的联网对战,游戏流程包括两个阶段: 1 匹配(matchmaking) 2 对战(gameplay)。

匹配是指将满足一定规则的玩家“撮合”到一起进行游戏,不管是Android、iOS还是web都是可以匹配到一起的,具体匹配策略可由游戏开发者通过匹配API的具体参数来指定;

对战是指匹配成功的玩家通过SDK提供的接口同步玩家操作、游戏状态等数据以支持同一房间内玩家对战和互动。

在 Matchv s联网引擎中我们将和房间匹配相关数据称之为“控制流”,将房间内游戏对战数据称之为“数据流”,显然这两种不同类型的流对带宽、延时等指标容忍度不同。

下图说明了set内的控制流和数据流的流向和分离情况:

为了便于开发者上手,我们将API分为基础联网和扩展两部分,使用基础接口开发者即可实现基本的匹配和对战功能,而使用扩展接口开发者可以完成更复杂、更定制化的功能。

各API功能和详细说明可参考API手册

2. PaaS与GameServer

PaaS提供多个语言版本的GS开发框架、托管平台,开发者无需自有服务器资源即可对引擎联网能力进行扩展,实现自定义的服务端逻辑;

2.1 GS架构

GameServer和引擎的高交互性,以及游戏低延迟的要求,决定了GS和引擎最好物理上接近。Matchvs游戏云提供的GS托管服务是一个PaaS服务(提供了应用程序的开发、运行环境),作为一个服务众多CP的PaaS平台,在Matchvs引擎引入GS需要解决如下几个关键问题:

(1)不同语言、框架依赖、运行环境如何满足?

(2)多个CP的GS如何管控,资源如何限制和分配?

(3)自动化的缩、扩容、监控、高可用如何保证?

针对上述问题,我们将CP开发的GS容器化,通过基础镜像来解决框架、依赖等环境差异的问题;将GS统一纳入K8S集群,使用namespace隔离不同CP资源调度、分配;GS被抽象成service形式存在,使用K8S的对应扩容、高可用机制。

2.2 GS SDK框架和GS接口

gameServer 与Matchvs server之间使用基于长连接、二进制协议的高性能RPC组件通信,能很好地支持 Matchvs 全双工低延迟通信、验证授权等功能要求。 gameServer framework 主要提供了以下功能:

  1. 接收并处理房间匹配、对战数据等消息;
  2. 为gameServer SDK提供主动推送数据的能力;
  3. 在独立部署方案下,向Matchvs注册gameServer。 gameServer SDK提供面向开发者的房间、玩家、对战数据等API接口。开发者能够以此获取并控制每一个房间和玩家的状态,从而实现更丰富的游戏功能。 自定义服务端逻辑。开发者基于gameServer SDK实现定制化的功能,例如控制游戏进程、仲裁、数据持久化等等。
最后更新于 24th May 2019