写点什么

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

  • 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:261915

评论

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

国内鞋服品牌如何打造出优衣库的“零库存”运营体系

第七在线

软件测试学习笔记丨性能测试体系

测试人

软件测试

加速大模型落地:火山引擎向量数据库的实践应用

字节跳动云原生计算

大模型 向量数据库 混合搜索

ETL与抖音数据同步,让数据流动无阻

RestCloud

数据同步 ETL 数据集成

技术管理者如何避免被裁掉(3)

芃篙君

管理

Frappe下解决Socket.io 的问题

麦兜

体育赛事直播平台的进入壁垒与成本结构分析

软件开发-梦幻运营部

如何提高项目成功率?分享20 种项目管理工具、技术和软件

PingCode

项目管理 项目管理软件

龙蜥社区成立系统安全 SIG,助力系统安全生态

OpenAnolis小助手

开源 操作系统 系统安全 龙蜥社区 sig

Java 日期和时间 API:实用技巧与示例 - 轻松处理日期和时间

小万哥

Java 程序人生 编程语言 软件工程 后端开发

AI板块的io.net 为什么值得关注?

币离海

AI IO.NET

智能部署之巅:Amazon SageMaker 引领机器学习革新

亚马逊云科技 (Amazon Web Services)

一键打通红圈泛微,让协同办公更轻松!

聚道云软件连接器

案例分享

汽车制造业PMC组态应用最佳实践

图扑物联

百度智能云专有云 ABC Stack 平台通过一云多芯认证,为用户构建全栈国产化云平台

Baidu AICLOUD

专有云 一云多芯

基于亚马逊云科技新功能:Amazon SageMaker Canvas 无代码机器学习—以构建货物的交付状态检测模型实战为例深度剖析以突显其特性

亚马逊云科技 (Amazon Web Services)

可观测性十大场景 | 关于保险行业开门红期间应用性能的端到端全栈可观测

博睿数据

CC攻击对网站的影响

德迅云安全杨德俊

架构实战营-模块一作业

满心

架构实战营

好用工具清单——ver1.1

充实的orzi

工具 实用工具

自定义对象池实践

FunTester

常用的数据分析方法和工具有哪些?

悦数图数据库

图数据库

一文读懂 Databend 的开放表格式引擎

Databend

AI制作PPT工具有哪些?10款AI生成PPT软件盘点推荐!

彭宏豪95

职场 PPT PPT模板 办公软件 AIGC

104 Connection reset by peer

麦兜

青否数字人7.0正式发布,数字人克隆+声音克隆效果大幅提升!

青否数字人

数字人

合伙/雇佣/灵活用工,供需双方该如何选择呢?

凌晞

灵活用工 人力资源规划

科技向善,真的吗?

算法的秘密

鸿蒙ArkUi中List样式

贺公子之数据科学与艺术

数据解读乡村发展!专家详解 2024 年(第 17 届)中国大学生计算机设计大赛大数据主题赛赛题

ModelWhale

大数据 数据分析 交叉学科 中国大学生计算机设计大赛 新文科

从智慧PC到千行百业:在华为擎云 G540中找到新质生产力

脑极体

AI PC

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