导语:近年以来,随着游戏市场的玩法不断丰富多样化,游戏后台技术架构对与存储、网络、计算、安全等基础资源的能力要求也逐步提升,如何合理的规划业务架构,选择合适的上云方案,会对业务的架构扩展性以及运营稳定性,有至关重要的影响。本文作者结合过往支持大型多人在线类游戏以及公有云上客户上云方案的经验,对游戏架构上云的架构规划以及架构扩展性等问题展开描述,帮助游戏开发者和运维更准确的规划架构上云方案。
识别游戏技术架构类型
游戏的分类,按照策划和游戏玩法划分,会有若干个纬度:角色扮演、沙盒竞技、FPS、TPS、休闲舞蹈、音乐社交、SLG、二次元等等,粗略估计有二三十种分类,且无官方准确答案,因为玩法是随着市场需求变化而不断更迭的。
本文作者提出一个新的思路:技术架构类型。所谓技术架构,是指抛开玩法和策划品类的纬度,单纯从技术角度来分析一下游戏类型。目前市面上主流的游戏玩法,从技术结构上看主要有两种类型:
1. 匹配竞技类:所谓匹配竞技,是指多个游戏玩家通过一定的组队规则,组成一个游戏对组,然后一起到一个指定的游戏房间完成游戏对战,对接结束后对组失效,用户通过对战过程种获取经验增长和游戏成长,以及对应的段位、积分排名等信息的变化。这里组队可以有多种理解,包括类似MOBA游戏的5V5,吃鸡游戏的百人对局,也包括类似枪战游戏的房间人数上限,也包括类似1V多,人机对抗等模式。这类游戏的特点是以PVP内容为主,用户一定需要与更多的真实用户PK,才能获取游戏的乐趣和成长。
2. 角色扮演类:所谓角色扮演,是指用户在游戏里扮演一个虚拟角色,通过包括单人和好友组队等方式的挑战,完成游戏内容设计好的一些关卡内容挑战,通过挑战获得经验加成和角色成长以及对应的积分排名信息变化。这类游戏主要的玩法是PVE,包括主流的角色扮演大世界类游戏(MMORPG)、回合制、休闲舞蹈、闯关益智等。
从技术结构上看,匹配竞技类游戏需要强的服务器逻辑来处理多人之间的消息同步,通过状态同步或者帧同步去实现多个玩家之间的操作协同,保持游戏体验流畅感。角色扮演类游戏对服务器算力要求相对较弱,因为大部分的游戏逻辑是集成在游戏客户端内部的,玩家的打斗效果,更多是在游戏客户端上实现,服务器只是实时记录一些结果数据并做一些额外的策略逻辑和外挂校验等工作。
选择合适的部署方案
游戏的部署方案,是指如何结合业务实际需求和发布区域的要求,制定一个服务器分布和用户覆盖区域的对应方案,以保证大部分玩家能够流畅体验游戏,常见的部署方案有两种:
1. 集中部署方案:所谓集中部署,是指不论用户分布在哪里,游戏的后台计算、战斗以及数据逻辑只存放在一个物理区域。这种部署方式主要适用于对网络延迟要求不高的休闲类、角色扮演、闯关益智类游或者卡牌、棋牌等对网络延迟要求不高的匹配竞技类游戏,因为所有的玩家都需要最终连到同一个物理区域的服务器,所以网络链路的稳定性和丢包率会成为首要考虑因素,需要通过网络加速方案,通过内网稳定性避免公网传输的不可靠性和丢包率下降。
2. 分布部署方案:所谓分布部署,是指根据用户所在的区域分布,选择多个物理地域部署游戏服务器,最终通过多个物理区域的服务器集群协同,来实现完整游戏后台架构对外提供服务。这种方案主要适用于对网络延迟要求较高的大型多人在线匹配竞技类游戏,如吃鸡、MOBA、大型射击、竞速类等游戏。这种部署方案下,玩家的游戏体验延迟是能有保障的,随之而来的问题是多个区域的数据同步、用户的匹配选择推荐等问题。
制定游戏架构上云方案
明确了前两个问题之后,即可根据业务的实际情况,选择适合的上云方案,这里列举几种常见的上云方案产品组合,帮助读者参考对比:
架构方案对比 | 技术特点 | 适应类型 | 网络延迟 | 容灾效果 | 维护复杂度 |
---|---|---|---|---|---|
匹配竞技-集中部署 | 单个区域覆盖所有玩家 | 卡牌、棋牌、SLG | 200ms左右能流畅游戏 | 较差,单个区域网络故障会影响全局玩家 | 相对简单,只需要在一个区域部署和维护服务器 |
匹配竞技-分布部署 | 多个区域覆盖不同区域玩家 | 吃鸡、MOBA、射击、竞速 | 120ms以下能流畅游戏 | 较好,用户可以在多个区域调度 | 相对复杂,需要通过跨区域互联组成内网 |
大世界-集中部署 | 单个区域覆盖所有玩家 | MMORPG、闯关益智、休闲养成 | 300ms以下能流畅游戏 | 较差,单个区域网络故障会影响所有玩家 | 相对简单,每个大区架构为复制关系,可以大批量操作 |
大世界-分布部署 | 多个区域覆盖不同区域玩家 | 回合制、城防、沙盒 | 200ms以下能流畅游戏 | 相对较好,网络故障仅影响所在大区,其他区域不受影响 | 较为复杂,涉及到跨服站等逻辑 |
腾讯云游戏产品能力推荐
上文分析了主流游戏类型以及上云部署方案,也列举了常见部署方案的优劣势,腾讯云基于腾讯游戏多年的技术方案和经验积累,为客户提供全方位的游戏解决方案以及产品能力,帮助客户解决上云的效率,提升架构稳定性,以积木的方式搭建游戏后台架构,避免开发者在可用性、资源分配、容灾调度等基础资源逻辑上投入太多时间精力。
腾讯云游戏解决方案GameArch,提供游戏研发到上云部署全方位解决方案,主要包括以下几方面:
- 功能研发类
数据库高并发
腾讯云TcaplusDB是腾讯游戏团队历经十年打磨,同时承载线上400款以上产品稳定运营的自研全托管分布式NoSQL数据库。通过NoSQL的数据结构扩展性精准解决游戏场景下的数据结构复杂性以及更新频繁等问题,TcaplusDB也通过存储集群的随机分片、自动扩展、冷热数据分离、二级索引等功能,规避开源NoSQL数据库的性能和扩展以及数据分析困难等问题。
战斗服弹性伸缩
腾讯云GSE(Game Server Engine)是腾讯云游戏解决方案团队自研的一款游戏战斗服全托管上云产品,GSE通过接管游戏房间分配和销毁逻辑,结合公有云资源池的弹性伸缩能力,实现按实际用量计费,战斗服务器算力成本节省35%以上,同时GSE也支持在线更新和灰度发布,在游戏运营策略更新的过程中,保障战斗服永不停机的高可用性。
游戏内语音社交
腾讯云游戏多媒体引擎(Gaming Multimedia Engine,GME)提供一站式游戏语音解决方案。针对不同游戏场景进行深度优化,覆盖休闲社交、MOBA、MMORPG、FPS 等多种游戏类型;支持多人实时语音、3D位置语音、语音消息和语音转文本等功能;功能完备,接入门槛低,一个 SDK 即可满足多样化的游戏语音需求。
游戏运营活动数据库
云数据库 Redis 混合存储版(集群架构)基于腾讯内部广泛使用的 KV 存储引擎 Tendis ,Tendis 是腾讯自研兼容 Redis 协议的 Rocksdb 存储引擎,拥有高性能、高压缩比、高稳定性特性,在腾讯内部有着丰富的运营活动支持经验。
- 部署运营类
用户访问链路加速
腾讯云提供业内领先的BGP互联能力、全球化的网络覆盖能力、跨数据中心互联能力和强大的网络调度与容灾能力,助力游戏轻松实现全球化部署。基于腾讯自建的“数据中心互联网络”,各数据中心间已实现了高速互联,游戏轻松实现全球同服架构。借助全球应用加速(Global Application Accelerate Platform,GAAP)服务,依赖全球节点间稳定可靠的专有高速通道、转发集群及智能路由技术,实现各地用户的就近接入,并将流量转发至源站,帮助业务解决全球玩家访问卡顿或者延时过高的问题。
跨区域网络连接
云联网(Cloud Connect Network,CCN)分布式部署架构下,游戏的战斗服务器和游戏大厅属于不同的物理区域,游戏逻辑分配和战绩信息回写,都需要一个安全可靠的技术通道,保证数据传输的安全性和稳定性。
游戏网络安全
腾讯云游戏高防解决方案,具备全面和高效专业的 DDoS防护能力,基于先进特征识别算法进行精确清洗,帮助您抵御 Syn Flood、ICMP Flood 等各种大流量攻击。同时针对业务多IP的防护场景,腾讯云提供多IP共享防护峰值方案,且可配置保底+弹性的灵活计费方式,为业务节省安全防护成本。此外,结合BGP高防和三网高防两者优势的域名防护方案,不仅为业务提供了优质的BGP网络访问质量,同时依托腾讯云强大的网络带宽资源优势,可轻松实现T 级的DDoS防御能力。最新推出的水印防护方案,能对客户端的每个包嵌入水印特征,有效防御各类型CC攻击。
结语:游戏架构迁移上云,并不是简单的在云提供的风和水电基础环境中,把旧的业务架构复制一遍,其核心思路是利用好公有云的资源和产品优势,选择适合自己业务类型的产品和方案,通过上云的迁移,实现业务的可用性、架构扩展性、资源弹性以及成本结构优化。
作者简介:宋永周,腾讯云游戏行业架构总监。从事游戏行业技术支持工作超过10年以上经验,曾负责过腾讯内部自研以及代理多款游戏大作的运维团队管理工作。目前聚焦于游戏客户上云方案规划和建设工作。