10 月 23 - 25 日,QCon 上海站即将召开,现在大会已开始正式报名,可以享受 8 折优惠 了解详情
写点什么

一款成功的全球服游戏该如何进行架构选型与设计

  • 2019-11-12
  • 本文字数:3243 字

    阅读完需:约 11 分钟

一款成功的全球服游戏该如何进行架构选型与设计

全球服游戏如今正在成为出海游戏的主要考虑模式,跨国对战、全球通服打破国界的限制,将不同地区不同语言的玩家放在一起合作/竞技,成功吸引了大量玩家的关注,并逐渐成为主流的游戏玩法。


游戏厂商们也在尝试采用一地部署多地覆盖、全球逐步宣发的模式进行第一款全球服游戏的发行试点及成本控制。文章主要针对全球服和出海游戏的特性优势、架构布局、网络规划、实用技术等几个方面进行探讨。


本文主要观点:


(1) 微服务是主流,模块化架构易于扩容以及维护,微服务+自动化的业务架构对于全球服游戏来说几乎是必然的选择;


(2) 架构高度自动化,自动注册/剔除保证可用性;


(3) 帧同步+UDP 特性,高性能传输和带宽成本控制(对战类游戏要求较为突出);


(4) 核心架构集中部署为主,全球网络优化覆盖玩家;


(5) 游戏代码的关键帧及预判设计关系到游戏对网络延迟的兼容性。

为什么要微服务和自动化?

原因一:全球服游戏多为逻辑服或无区服概念的通服、对战类游戏。为了保证游戏性和全球化的特点,保证匹配和游戏世界玩家的多元化,传统意义上的区服架构和跨服对战模式并不适配,以皇室战争、列王纷争等为例的一众匹配对战游戏便是其中的代表。


原因二:全球服游戏要求承载全球玩家的涌入,及时发现负载瓶颈并扩容是一个必然的要求,模块化拆分架构之后可以灵活的针对不同活动、玩家特性增加对应的业务服务器,并通过自动注册机制实现快速扩容。


整个架构采用注册管理+自动化之后,可以通过研发脚本或者通行的管理工具,甚至 Docker 的 K8S 来实现业务宕机的自动恢复和容灾、负载突发的自动扩容,这可以极大的降低运维成本,并对于业务健壮性进行极大的提升。


对于游戏服务的自动注册机制,在项目早期,受限于研发实力或者工期,开发者一般会选择 ZooKeeper 进行管理维护,但是在实际运行中由于 ZooKeeper 自身较重的功能实现、二次开发及 bug 处理的复杂度,很多用户会将其替换为自主研发实现的轻量级 RPC 自动注册服务。实际情况要具体视研发能力而定,此外 GRPC 也有不少的支持者。

帧同步技术和 UDP 传输协议的使用

关于帧同步主要针对对战类游戏,对于 RPG 世界或者卡牌类游戏也有一定参考意义,用户使用帧同步主要在于三点:1、全球同步效率;2、服务端压力缓解;3、全球化大流量的成本控制。


以往有过这样的情况,用户在全球服游戏逐步宣发、对应国家客户端上线的过程中,遇到跨国专线成本问题无法承担的问题,最终无奈选择降级服务采用特殊优化过的外网出口覆盖的案例。


而选择使用 UDP 传输而非 TCP 传输主要考虑到对战要求的实时性,TCP 自身的重传逻辑已经无法满足全球化(对战)游戏的网络保障要求,通过自主实现 UDP 重传,甚至是报文同时重复发送的逻辑,来保证游戏数据包最终的抵达成功率。


关于最核心的全球服模式上,我的总结是:先集中再分布。


以当前大部分游戏的框架,如卡牌对战、RPG 世界等完全可以通过集中部署+网络调优的方式实现,当前全球双向延迟一般在 300ms 以内,而一般人的反应时间一般在 300ms 左右,故网络延迟对于玩家的感知非常微小,大部分游戏都可以集中部署并且不牺牲玩家游戏体验。同时集中部署的另一个优势是对于架构复杂度的降低,维护便捷度的提升,对于成本控制及玩家数据统计也会方便很多。



图一:集中部署全球服架构


什么情况下考虑“再分布”呢?首先,游戏是房间类的对战游戏,其次游戏对于网络延迟极敏感(FPS 类),最后重要的点是,游戏架构采取的是对战前缓存预热数据、对战结束后写入的异步模式。



图二:分布式部署全球服架构


下图为对战游戏的基础架构,通过该部署模式要点为:


(1)平台操作仍然集中化部署玩家统一访问,如日常操作、装备购买等延迟不敏感操作;(2)对战房间分布于全球各个数据中心,而当玩家需要对战、进行匹配分房时,通过算法调度到相对大多数用户最近的节点;


(3)节点提前预取相关用户数据,对战产生的全部数据统计由本地进行交互处理,并在对战结束后集中上传至中心数据节点。



图三:对战游戏基础架构


该方案在对战网络延迟和数据一致性上进行了保证,但是相对架构会更为复杂,实际落地过程中需要较好的配合和较深的维护经验。


那么,当前的分布式数据库解决方案是否能够解决全球服数据一致性的问题?实际上,为了保证数据一致性,这里以 TiDB 为例,暂不支持超过 30ms 的集群内部延迟。而且即使强行部署,集群内部的高延迟会严重影响 QPS 性能。在当前的技术环境下,全球分布式数据库最好的代表者应该是区块链技术,不过性能是可能无法满足大部分游戏使用的,即使是仅有 21 个核心节点的 EOS,其极限 QPS 也远逊于普通配置的集中数据库。

游戏设计和网络延迟的关系

游戏设计初期必然要对当前全球网络环境有一个初步了解,这点之前也有提到,基本上当前物理链路的双向延迟为 300ms 内,但是考虑到无线信号不稳定、传统 3G 网络性能等原因,极端情况可能达 500-1000ms 甚至更高的情况,游戏必须为此进行一定取舍,早期帧同步游戏会因为网络最差的玩家造成整个战局的卡顿,而随着技术的发展,乐观锁已经通过舍弃低网络质量玩家的部分数据包来保证全球的游戏体验。



图四:简单全球网络数据


这边先不说延迟本身,聊下限制网络延迟的客观因素和数据:地球周长是 40076 千米 (赤道),光速恒定 299792458 米/秒(真空),而网络当前主要是光纤传输,在物理速度和传输介质没有突破性进展的情况下绕地球一周需要近 150ms,而实际网络光缆不一定完全直线,中间设备转发也会造成延迟开销,按照实际网络质量评估的话,中国全国覆盖一般在 100ms(包括偏远地区)。


我们之前遇到一位用户,研发要求全球服在 60ms 的延迟以内。按照正常情况,60ms 一般可以勉强覆盖北上广三地热门地区。但是要全球服的情况下会比较捉襟见肘,这种情况下,建议做成跨国区域服的模式。


另外关于国际出口的情况,以中国为例,从我们的监控情况看,常规出口的可用率并不乐观,而我们亚太数据中心接入的电信 CN2 精品网可以做到不错的稳定性保证(也的确有全球服游戏通过此出口传输),但是并不能做到非常完美的 SLA,不定期也会发生拥塞和抖动。而且这个问题并不是中国特例,台湾地区、俄罗斯、印尼、印度部分邦都存在有一定的跨国出口问题,需要通过外网接入点选择或者产品解决方案如 UCloud PathX 解决方案进行网络优化。



图五:PathX 案例视图


所以在做一个全球服的项目之前,可以先做调研、和云厂商或者同行多聊聊,基于这些信息,在关键帧和乐观锁的时间制定、游戏内部预判及同步机制的设计上会更有把握。

杂谈拓展:区块链游戏

区块链游戏是一种新兴的游戏模式,但是本质上是依托于以太坊或者其他共识模式的链实现的玩法,当前市场上的游戏主要分两类:1、纯区块链游戏;2、装备或搜集元素上链。


前者主要以以太猫为代表,核心是收集、养成类游戏,随着部分市场关注赋予了部分商业属性。后者则是融合了区块链元素在其内部,附加了很多其他玩法,诸如集换式卡牌等等。


区块链行业还在摸索阶段,共识算法、共同监督、不可否认性是其核心特质,但性能较低、需要支付 GAS 等也是其短板,现在作相关评论还比较早,如果有兴趣的话,可以钻研下相关共识技术,对于各种链、共识技术有一个认知后,再根据自己的游戏模式选择一个适合的场景。


一般来说区块链游戏和链本身是相互依存的,如果链自身出现问题也会影响到游戏,可以说链是基础支撑,这个在选择的时候建议慎重考虑。我们也在探索相关的技术方向实践,并同公有云进行结合。7 月 21 号 UCan 下午茶成都站——“游戏出海,那些弯和那些坑”主题沙龙上,沈皓也会在现场深入分享出海游戏全球服架构及解决方案,感兴趣的读者可以关注沙龙后续技术内容。


作者介绍:


沈皓,UCloud PathX 产品早期方案设计者之一,深耕全球服游戏领域,曾全面负责多个知名游戏出海项目的全球/跨国业务对接、部署及落地。对于 MOBA、RTS、FPS 等各类游戏的出海全球化的需求、难点、架构实现等深入分析并有独到见解。


本文转载自公众号 UCloud 技术(ID:ucloud_tech)。


原文链接:


https://mp.weixin.qq.com/s/YO5SAYoqkX3MTZCkcQXlhg


2019-11-12 10:262894

评论

发布
暂无评论
发现更多内容

未来几年,低代码开发平台会如何发展?

优秀

低代码

基于NB-IoT的智慧路灯监控系统(NB-IoT专栏—实战篇5:手机应用开发)

不脱发的程序猿

物联网 28天写作 3月日更 NB-IoT智慧路灯 手机应用开发

模仿Activiti工作流自动建表机制,实现Springboot项目启动后自动创建多表关联的数据库与表的方案

朱季谦

建表

关于热力图数据上报清洗,我们做了一个有意思的尝试

阿里巴巴中间件

是谁拖(慢)了 Redis 的后腿?

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

近万字原创长文,以追忆2020年:《请回答,2020》

朱季谦

随笔杂谈

Kylin安装部署

五分钟学大数据

kylin 3月日更

区块链电子合同签署平台,助力企业数字化转型

13828808769

区块链+ #区块链#

EGG Network阿凡提的模式是怎么样的?早点了解别错失这个机会!

币圈那点事

区块链

金三银四,冰河为你整理了这份20万字134页的面试圣经!!

冰河

面试 面经 offer 金三银四 我要进大厂

Knativa 基于流量的灰度发布和自动弹性实践

Serverless Devs

Serverless Kubernetes 运维 云原生 Knative

策略枚举:消除在项目里大批量使用if-else的正确姿势

朱季谦

枚举 策略模式

visualvm工具远程对linux服务器上的JVM虚拟机进行监控与调优

朱季谦

JVM GC 调优

云端数智新引擎,腾讯云原生数据湖计算重磅发布

腾讯云大数据

大数据 数据湖

智能安防监控系统的发展与应用

anyRTC开发者

android 监控 音视频 WebRTC RTC

6大创新技术及2亿美元投入计划,这个活动有点料

华为云开发者联盟

人工智能 数据库 华为 云原生 HDC.Cloud

web前端面试题详细解析

yumibgt

面试

数字化进入深水区

鲸品堂

方法论 数字化 企业数字化转型

基于深度学习的端到端通信系统模型

华为云开发者联盟

深度学习 端到端 编码器 通信系统 信道模型

Python OpenCV 图像平移,取经之旅第 10 天

梦想橡皮擦

3月日更

v01.12 鸿蒙内核源码分析(双向链表) | 谁是内核最重要结构体 | 百篇博客分析 HarmonyOS 源码

鸿蒙研究站

鸿蒙 HarmonyOS 鸿蒙内核源码分析 百篇博客分析鸿蒙 百万汉字注解鸿蒙

vue项目中使用tinymce富文本编辑器实现图片上传/粘贴格式

yumibgt

tinymce

压抑了五个月的我终于可以放声呐喊了!阿里是真的难进,Java四面面经+面试题

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

微信扫码登录技术实现的简单思考

朱季谦

redis

关于企业容器安全问题的思考

阿里巴巴中间件

MindSpore实践:对篮球运动员目标的检测

华为云开发者联盟

深度学习 mindspore 图像检测 yolo 篮球运动

spark性能调优之JVN调优

大数据技术指南

spark 3月日更

Activiti工作流自动生成28张数据库表的底层原理分析

朱季谦

Activity 工作流引擎

降维打击:数据可视化降本增效,传统制造业价值即将扭转!

一只数据鲸鱼

物联网 数据可视化 工业物联网 数字化运维 3D

Rust从0到1-基础概念-函数

rust 函数

大“食”代来临,后厨重地可以更“聪明”点儿

IoT云工坊

人工智能 物联网 PaaS 智慧厨房 智慧餐饮

一款成功的全球服游戏该如何进行架构选型与设计_架构_沈皓_InfoQ精选文章