游戏开发经验总结:分布式架构、数据库与进程设计

如果把游戏看成一辆赛车,那么,游戏开发在其中扮演着至关重要的发动机角色,控制着玩家所感知到的剧情、关卡、实时社交沟通、版本更新、兼容和性能等问题;而运维则充当了决定赛车生死的安全刹车,不管是端游、页游还是手游,能否扛住卡顿、宕机与DDoS攻击等都离不开运维的支持。但开发者往往在突破核心玩法、保障运维质量、抵御恶意攻击等方面,会遇到诸多挑战。

腾讯云,基于自身业务与海量用户,在如何打造一款爆款游戏上摸索出了一系列完整的解决方案。1月12日腾讯云联合InfoQ举办的游戏主题沙龙,来自腾讯云、腾讯游戏和三七互娱的专家们,就游戏的云端开发与运维展开了深入探讨,本文整理了部分精彩内容。

提供云端技术支持 腾讯云游戏解决方案概述

来自腾讯云的腾讯游戏云解决方案架构副总监王璋,从游戏业务云上最佳实践和案例入手,深度剖析了游戏开发面临的技术挑战,以及腾讯云在游戏行业提供的各种解决方案,与一众参会者探讨如何寻找适合自身业务的游戏云方案。

游戏开发面临的技术挑战?

王璋首先介绍到,过去一年,游戏开发者最关心的问题主要包含加速+专线、攻击、游戏语音、IOPS+PPS以及Hadoop+AI大数据分析等,这也是当前游戏开发者比较头疼的几个方面,基于这些问题,腾讯云提供了系列通用解决方案。

腾讯云游戏行业技术解决方案

1、网络加速

玩家到服务端的加速,尤其是跨国加速更多的还是由玩家去购买迅游、网易等提供的加速器产品,为降低玩家体验游戏的门槛,提升玩家的体验,腾讯云提供两套方案来实现服务端解决跨域长距离传输网络质量问题。

如下图为腾讯云的“游戏加速家架构(一)”,具体实现方式为在玩家所在的区域与游戏服务器之间架设一条专线通道构建起对等网络,通过专线链路为玩家提供上下行稳定可靠的访问体验。当然这套方案需要游戏开发者在玩家和服务器所在的区域搭建两个代理集群,用于上下行流量的转发,有一定成本开销,同时对于已经在线运营的业务涉及到玩家请求IP地址的变更。

另一套方案,业务的改造成本较低,即保持原有RS(Realy Server) IP地址不变,新增其他区域的LBS IP地址与映射RS映射,公网IP所在的网关集群与RS间为专线链路,实现一台RS通过多个公网IP辐射到不同的地域。比如,RS在香港,国内的玩家可分别从腾讯云华北、华东、华南Region的LBS IP上行,走专线到RS,韩国、日本、新加坡区域的玩家也同样可以就近通过本地的LBS IP上行访问RS的服务。


2、安全防护

除了加速解决方案,腾讯云在网络攻击的安全防护上也提供了多套方案来对抗不同特点的攻击,包括超大流量攻击对抗方案、精细化攻击对抗方案、棋牌游戏攻击对抗方案等等。以超大流量攻击对抗为例,业务遭受攻击时长占业务在线时长其实不大,所以业务的常态服务可以通过体验较好的BGP网络提供,并且BGP可以提供百G规模攻击流量的清洗,超出百G的攻击BGP的清洗成本会直线上升,因此会通过腾讯云提供的中间域名将流量自动调度到三网出口进行超大攻击流量的清洗。


3、其他场景的应用探索

除了上述解决方案,腾讯云针对游戏业务的痛点,还在尝试其他解决方案的探索,比如全球支付、游戏智能客服、游戏营销安全等。以游戏智能客服为例,玩家在游戏中遇到的问题大多是相似的,通过对知识库数据的分析,实现在线自动应答,依靠腾讯海量的用户标签数据,和优秀的算法,训练出真正智能的客服,游戏都可以通过智能客服解答玩家的疑问,提升玩家问题的处理效率和游戏本身的体验。

腾讯游戏海量服务架构构建之路

网络游戏和其他互联网服务一样,需要面对承载海量服务的压力,同时还需要满足游戏所要求的低延迟、高业务逻辑复杂度特性。来自腾讯游戏研发部资深架构师韩伟,基于腾讯游戏的海量架构构建经验,为大家分享了游戏海量服务的架构特征、核心模块以及弹性能力的实现手段等技术内容,为游戏开发者在面对海量用户时提供了一些借鉴思路。

分布式进程框架构建

现在的腾讯游戏,包括业界其他很多游戏,如魔兽世界等大多使用的是跨服务器,所以现在游戏服务器端的趋势是全面的分布式系统。相较于古老的游戏架构,分布式系统,具有方便部署到不同机器、更精细的负载均衡单位以及便于监控和问题定位等优势,更加符合闲杂用户对游戏系统的体验要求。

下图是腾讯云的分布式集群架构图,主要包括接入进程和逻辑进程。左边是客户端,腾讯有一些接入进程,主要是处理网络连接,把这些网络连接的数据做初步处理之后,再放到逻辑进程进行分析。有可能这个逻辑进程并不是自己的进程,因此可能还会转发到别的逻辑请求,最后给客户端回应,也有一种情况是游戏需要多个回应,即一对多的请求,这个时候整个过程需要由多个进程同时满足,不同的客户端可能连接在不同的进程上面。

不管是接入进程还是逻辑进程,都需要统一的集群中心来管理,集群中心是所有集群管理的最核心的节点,用来管理多进程的模型。可以看到,如果将整个集群看成一个单位的话,每一个进程其实都可以方便的部署到不同的机器上去,通过集群中心,进程之间也可以知道对方的信息、收发数据,然后合理的将进程分布到不同的机器上,提高整个集群的容量。

那么,腾讯云是如何构建这样一个分布式的集群系统的?韩伟提到了两个关键点:分布式通信和缓存系统。

分布式通信:现在分布式通信基本上都会使用到消息队列技术,腾讯的消息队列有一个特点,每一个消息的收发端都是一个消息队列服务。这个消息队列服务的收发端只收取自己相关的数据,这种方式可以明显减少消息列队在中转过程的传递时间。另外,腾讯云也会采用自定义路由的方式,由客户端根据需求选取合适的路由方式,灵活配置集群中心的地址。

分布式存储:分布式存储的核心要点为持久化和缓存两大块。接入代理在接到请求后,会带上一个数据片,包含数据来源等相关信息,用以做数据的追踪和留存;在缓存方面,逻辑进程负责承载玩家所要读写的数据缓存,按照腾讯游戏运营标准,玩家丢失数据的时间不能超过十分钟,因此,腾讯云会做一个定时自动回写的代码,每十分钟自动回写一次,防止数据丢失。

这套系统每个进程之间的链接看起来比较复杂,但是实际上这个复杂性被一套通用的分布式通信消息队列所接管,开发者只需要了解这个集群里面有什么样的服务,并不需要自己管理这个复杂性进程,因此,这一整套系统的开发和维护上并不困难。

海量服务器运维实践

那么,这套分布式系统是如何做运维的呢?首先腾讯云会从部署角度搭建一个云服务平台,做整个集群的进程部署、进程监管等工作这个平台软件会把所有的功能划分成一个个集群,这个里面的节点数量非常多;因此,腾讯云也配套搭建了一套计算能力伸缩平台,根据需求进行自动的扩容和缩容的操作;对于服务接口的定义,系统有服务的绑定、服务的发现才能做服务对接,所以在分布式开发框架之外,也会配置服务管理系统;最后是基础运营服务平台,包含一些非功能性的能力,比如可以输出标准的日志,输入标准的监控指标等,这个平台主要是支持一些运维的操作。

韩伟最后向现场观众透露道,腾讯研发部已经将部分跟游戏逻辑关系不是特别紧密的服务都做成了云平台,比如储存方面,王者荣耀采用这套云平台的储存的同时,全民突击也会用这个存储系统,这样能够极大的提升运营效率以及运维效率。

“吃鸡”类游戏架构分析

今年从3月份开始吃鸡游戏一直占据游戏话题排行榜首位,随后,国内的厂商也开始进行这类游戏的开发,据统计,吃鸡“”类游戏的全球销量超过3000万份,同时在线超过240万,连续43周蝉联Steam周销量榜冠军。那么,这样一个火爆游戏的背后,其游戏架构是怎样的呢?并针对“吃鸡”类游戏在反外挂、加速、安全等方面的需求,有什么样的解决方案?来自腾讯游戏云资深架构师贺广平,就“吃鸡”类游戏架构和相关解决方案做了详尽的分析。

“吃鸡”类游戏的架构分析

下图为一个“吃鸡”类游戏完整的架构图,这里,lobby和DS服务架构用作全球部署;安全方面有DDOS防护和TP反外挂方案,其中,TSS(tencent security system)是腾讯的反外挂系统;XMMP 是即时通讯系统,负责信息的传递;TC为腾讯充值系统-IDIP。

整个系统看起来比较复杂,但开发者实际上只要关注两块,左边的游戏登陆模块和右边游戏服相关模块。

相关性能解决方案介绍

整体来看,“吃鸡” 类游戏是多人同时在先游戏,兼之全球同服的特点,整个架构有四大要求和特点:高并发、低延迟、反外挂以及游戏语音,腾讯云在这四方面也提供了相应的解决方案。

高并发解决方案:吃鸡” 类游戏的特点是同一地图会有100人以上同场竞技,需要服务端有高并发包量的处理能力和大流量吞吐能力。腾讯云采用的解决方案是高主频+SSD云盘+多队列+智能网卡的方式,提供高 IO 云服务器以及高可用云数据库,应对激增、高并发、海量访问需求。

 

低延迟解决方案:多人实时竞技,需要保证每个玩家的网络延时和稳定性要求,腾讯云在全球共用 Lobby,统一管理和调度全球各地区服务器,如下图,在网络堵塞的情况下,A地域玩家可以通过加速代理直接访问C地域lobby服务。

反外挂解决方案:外挂已经严重影响到游戏的平衡,尤其在“吃鸡”类游戏中更加泛滥,一套强大反外挂系统保证游戏稳定运营,TP反外挂系统是腾讯自主研发的一套安全系统,通过增加客户端代码加密、外挂特征扫描、动态代码验证等措施,实时保障游戏不受外挂、木马侵害。其系统框架如下图所示:

游戏语音解决方案:竞技类游戏需要通过语音来指挥组内其他同伴的战斗,陌生玩家可以语音直接互动,也通过声音判断其他玩家的位置。下图为腾讯云的TMG游戏语音框架图,其3D音效技术,利用“头部关联传输函数”(HRTF 算法),对双耳之间的时间差异和频谱差异进行建模,形成有声源方位感的声音。同时使用采样混响方式填补HRIR缺失的环境反射声,从而构建完整的声场模型。比如在一个小房间里,不仅可以听到两个人之间的对话,还可以听到声音从墙壁中反射的效果,增加沉浸感。

目前,基于游戏开发引擎(例如Unreal、Unity)实现的3D音效在游戏中的应用已经非常普遍了,通过游戏引擎模拟重现空间中声源方位,例如CS中射击的枪声、中弹时的音效、附近敌人轻微的脚步声,可以显著提高游戏的沉浸感,造就身临其境的游戏体验。

三七互娱游戏上云的现状与未来

三七互娱开发和运营了多款成功的游戏,从《永恒纪元》到《大天使之剑》等,在游戏开发和运维领域有着丰富的经验和心得,三七互娱运维总监龚宏绩,从三七互娱实际业务情况出发,分享了对游戏现状及未来的一些看法和思考。

龚宏绩认为,未来互联网企业只有两种存在方式:大数据和安全,而云是大数据和安全的完美结合体,也可能当下甚至未来很长一段时间唯一存在的形态。传统游戏企业在做开发和运维的时候,往往会面临区域性或者跨区域网络构建与管理、全面的系统和业务监控告警、安全事件甄别处理、大量日志收集分析处理等问题,而云,恰好能帮助解决这些事情。

云计算包含网络物理的IaSS基础设施即服务、系统容器的应用服务的PaSS平台即服务,在产品的自动扩容、虚拟化和数据高度集成等方面提供了一套完整的解决方案。在运维方面,传统互联网企业的运维可以分为三个阶段:标准化、自动化和服务化。国内的大多数企业,基本上分都处于前面的标准化和自动化两个阶段,而国内的一些云服务供应商如腾讯云、阿里云等,已经走到了服务化阶段,这些企业基于自身业务的同时,也开发了一套比较成熟的产品做成服务。

现场,龚宏绩也表示,现阶段企业上云并非完美无缺,包括三七互娱在内,大多数的游戏企业在公有云成本的管理、以及用户数据安全保障等方面都遇到了比较大的挑战,这也是现今云厂商一直在需求解决之道的方向,也将是未来云领域的技术趋势之一。

演讲最后,对龚宏绩对云技术的发展给出自己的思考:不管是大数据还是安全,从商业的角度来说,未来的技术和产品发展趋势必然是一个用户为中心的世界、一个数据驱动产品的世界、一个生态协同的世界,这是无可置疑的。

直播+游戏 腾讯云线上知识竞技方案详解

最近一段时间,“直播答题”已席卷互联网。王思聪力推《冲顶大会》、周鸿祎的花椒直播上线《百万作战》、今日头条&西瓜视频推出《百万英雄》、映客在线答题《芝士超人》、一直播的《黄金十秒》……仿佛一夕之间,众多互联网直播版《开心辞典》冒了出来。在游戏行业竞争如此激烈的背景下,知识为何能竞技异军突起,成为直播行业又一风口。来自腾讯云P2P直播解决方案负责崔立鹏,分享了“冲顶大会”背后的商业逻辑和技术实现。

冲顶大会背后的商业逻辑

冲顶大会的规则非常简单,用户参与直播答题,留在最后的用户可以角逐当期奖金。这些直播答题的题目范围涉及很广,每次活动共 12 道题,规则 10 秒中之内未答题和答错题都将被淘汰。

那么,这样一款直播竞技游戏为何如此快速火爆?崔立鹏从拉新促活、广告分成、以及互联网直播内容升级三个角度给与解答。游戏商可以通过极低的成本获取大量的用户数据和用户画像;其次,问题的设置面非常广泛,涉及天文地理历史科学娱乐影视音乐诗歌礼仪等,游戏商极易通过提问的形式为广告方“悄悄”植入广告;最后,是互联网直播的升级,过往大多直播是以主播为主导,用户通过留言互动,而这类知识竞技直播,更多的以用户为主角,极大的提高用户参与度。

崔立鹏表示,冲顶大会只是直播+游戏的一个小小起步,接下来,将有更多类似的游戏以直播的方式,进行转型升级,带来新一波的玩法。

直播竞技的技术痛点和解决方案

之前说到,冲顶大会是多人同时在线游戏,同时,在题目显示10S之内,用户必须给出问题的答案,因为,这类竞技节目的最大痛点是高并发和直播延迟。试想在网络卡顿时,主播抛出问题后,而其他地域的终端用户没有及时同步到信息,那么,他极有可能因为网络问题而被Pass掉,这对用户来说是一个致命的体验打击。

腾讯云基于上述问题提供了业内首家线上竞技的完整解决方案,如下图所示,出题方,主持人在演播室,将信息通过IM系统推到腾讯云平台,加上腾讯云自己的播放器就实现播放,在直播这方面一个链条已经形成了;同时,在导播台,有一个简单的答题后台,后台提前录制好了题目和单,放一个屏幕可以看到这个题目的,主持人说请听题,导播在SDK通知时间匹配后显示题目,然后通过腾讯云消息通道向全网下发。

题目虽然下发了,但其实不能排除题目和视频之间是很精准同步的,这方面,腾讯云做了比较精准的时间同步,即在流处理过程中加一个timestamp,现场发题的时候也加一个标准时间,这两个时间设置同步状态,随后在播放时,将视频的音频和视频时间解析出来,这样能够实现比较好的同步。