一款商业化的游戏服务器框架的应该具备什么?

由于服务器后端涉及的逻辑往往比较繁杂,重新搭建一套底层的游戏服务器框架需要较大的人力与时间投入,若设计不合理还将面临后期修改的一些系列问题。为了提升开发效率,大部分开发者都会选择一些第三方的开源游戏服务器框架,并在其基础上进行开发。国内的社区论坛想github上开源的第三方的服务器开源框架还是非常多的,比如skynet、网易的Pomelo都是国内比较知名的开源框架。

不过对于不少中小团队的而言,开源框架技术支持是一个很大的问题,遇到的技术问题需要自己去摸索,且无法得到及时的技术支持,最终影响有限开发效率。游戏愈加轻量化的趋势下,开发者对于联网游戏的快速开发与后续稳定性维护有着很高的诉求。下面我们以商业化游戏服务器引擎Matchvs为例为大家进行讲解。

一般而言,商业化游戏服务器引擎是在开源框架的基础上进行进一步的封装。将这些功能的集成一个高可用的API,开发者只需要调用这些API ,根据自己的游戏逻辑修改对应的参数即可。相对于开源框架,这意味着即便是没有服务端开发经验的工程师也能在很短的时间内容搭建一款具有标准的联网对战游戏。

试想一下如果重头开发一款联网对战游戏,仅仅是为了解决玩家间简单的数据收发,开发者往往就需要解决协议商定、服务框架选型、匹配、房间管理逻辑的设计与实现、高效数据转发、以及弱网环境优化、服务器采购、服务高可用实施等诸多问题。而以上每个问题可能都需要有相应实践经验的人才能解决。

因此,一款商业化的游戏服务器引擎应该包括 SaaS + PaaS + 引擎适配三个部分:

1be7a91c3caed77b0defb814dbb9c61a3f9.jpg

开发者通过SaaS层提供的API,即可完成“就近”节点接入、玩家匹配、游戏数据通信的建立;PaaS提供多种常见语言的GS开发框架、托管平台,游戏开发者无需自有服务器资源即可扩展Matchvs引擎联网能力,实现自定义的服务端逻辑;引擎适配层使得开发者无论使用cocos、Unity、还是白鹭、laya等游戏引擎都能快速、方便地接入,降低开发者学习成本、提升开发效率。

整体架构如图

48ef6f8b4c8b6dc4308a954326750d9d059.jpg

1 SaaS

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

MVS集群(set):提供匹配、对战能力的服务(模块)集合,Set也是全服调度的基本单位。一个完整set包括了玩家接入、对手匹配、游戏数据传递、GS扩展等功能,与此相对应可将模块划分为1接入层;2业务层;3基础服务层;4 GS层,MVS集群(set)组成可参见如下结构图:

5103ed6bfbfba9abd9f250135d294e984d4.jpg

1.1 区域调度服务

游戏作为延迟敏感型应用,尤其是FPSMOBA类游戏对延时要求更为苛刻,能提供多区域节点覆盖和玩家“就近”接入就显得尤为重要。引入区域调度服务的主要作用包括:(1)实现用户“就近”接入,降低用户延迟,显著提升对战游戏体验;(2)CP可顺应市场需要、针对玩家分布合理选择部署区域;

区域调度服务与SDK配合用于指导、调度客户端接入不同set的全局服务。主要有如下三个功能:用户甄别;多区域列表下发、接入推荐; 接入效果反馈、查询;

94af34cd6bab8f303ff2ce7bf385129f3a8.jpg

1.2 匹配与对战服务

一般来说基于“房间”模式的联网对战,游戏流程包括两个阶段: 1 匹配(matchmaking) 2 对战(gameplay)。匹配是指将满足一定规则的玩家“撮合”到一起进行游戏,不管是Android、iOS还是web都是可以匹配到一起的,具体匹配策略可由游戏开发者通过匹配API的具体参数来指定;对战是指匹配成功的玩家通过SDK提供的接口同步玩家操作、游戏状态等数据以支持同一房间内玩家对战和互动。

在Matchvs联网引擎中我们将和房间匹配相关数据称之为“控制流”,将房间内游戏对战数据称之为“数据流”,显然这两种不同类型的流对带宽、延时等指标容忍度不同,下图说明了set内的控制流和数据流的流向和分离情况。

2f16528ba97a789f1caa3143732cf6112b0.jpg

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

7239eccea1953608c372b471478d499d19d.jpg

2. PaaS与GameServer

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

2.1 GS架构

GameServer和引擎的高交互性,以及游戏低延迟的要求,决定了GS和引擎最好物理上接近。Matchvs游戏云提供的GS托管服务实际是一个类似heroku的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实现定制化的功能,例如控制游戏进程、仲裁、数据持久化等等。

转载于:https://my.oschina.net/u/3998589/blog/2885462

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、本课程是一个干货课程,主要讲解如何封装服务器底层,使用Tcp/ip长连接,IDE使用vs2019 c++开发以及使用c++11的一些标准,跨平台windows和linux,服务器性能高效,单服务器压力测试上万无压力,服务器框架是经历过上线产品的验证,框架简单明了,不熟悉底层封装的人,半个小时就能完全掌握服务器框架上手写业务逻辑。2、本课程是一个底层服务器框架教程,主要是教会学员在windows或linux下如何封装一个高效的,避免踩坑的商业级框架服务器底层使用初始化即开辟内存的技术,使用内存池,服务器运行期间内存不会溢出,非常稳定,同时服务器使用自定义哈希hashContainer,在处理新的连接,新的数据,新的封包,以及解包,发包,粘包的过程,哈希容器性能非常高效,增、删、查、改永远不会随着连接人数的上升而降低性能,增、删、查、改的复杂度永远都是恒定的O(1)。3、服务器底层封装没有使用任何第三方网络库以及任何第三方插件,自由度非常的高,出了任何BUG,你都有办法去修改,查找问题也非常方便,在windows下使用iocp,linux下使用epoll.4、讲解c++纯客户端,主要用于服务器之间通信,也就是说你想搭建多层结构的服务器服务器服务器之间使用socket通信。还可以使用c++客户端做压力测试,开辟多线程连接服务器,教程提供了压力测试,学员可以自己做压力测试服务器性能。5、赠送ue4和unity3d通信底层框架以及多人交互demo,登录,注册,玩家离开,同步主要是教会学员服务器与客户端如何交互。6、赠送c++连接mysql数据库框架demo,登录,注册,玩家离开数据持久化.7、服务器教程使用自定义通信协议,同时也支持protobuf,选择权在开发者自己手里,想用什么协议都可以,自由度高。8、服务器教程使用手动敲代码逐句讲解的方式开展教学课程。非喜勿喷,谢谢大家。9、服务器教程提供源码,大家可以在平台提供的地址下载或者联系我,服务器使用c++11部分标准,std::thread,条件变量,线程锁,智能指针等,需要学员具备一定c++知识,购买前请慎重考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值