2023-11-21
随着对决类网游愈来愈热门,大家处理方案架构师团队也汇总从业经验,上线了这套AmazonGameTech结构良好的实践系列,MOBA/FPS架构篇章今天给大家带来:
FPS/MOBA 结构由大厅及周边组件及作战环境组成。实际架构如图所示:
游戏作战之外的大部分功能,包括购物中心系统,都属于延迟不敏感的操作。一般来说,由于大厅是核心服务,因此会选择延迟可接受的部分进行多个可用区域的部署,建议对程序模块进行模块化和解耦解决,并使用Autoscaling Group进行弹伸缩,尽量保持核心服务的无状态化,并将缓存存储在Elasticache中。
在数据库方面,建议使用适用团本弹伸缩功能的Aurora mysql 以及非关系高能数据库 DynamoDB,Elastiti可以借助 cache提高了数据库的读取压力。
大部分FPS//MOBA 游戏属于延迟要求很高的游戏分类,所以大部分作战环境的部署必须就近与玩家相连,必须在世界多个地区部署。
大部分FPS//MOBA 游戏属于延迟要求很高的游戏分类,所以大部分作战环境的部署必须就近与玩家相连,必须安排在世界多个地区。Gamelift可以实现匹配逻辑和作战环境的弹性伸缩。

大厅及周边服务一般无情况,服务相对较轻,Graviton2可根据arm架构选择(m6g)或intel架构型号(m6i)
大多数FPS游戏在战斗环境中会选择帧同步和DR状态同步的组合通信系统,对内存的要求会比较高,最好使用m6g或m6i,选择还需要注意编程语言,如果Graviton2适合Graviton2,如果采用C 在其他语言中,或者建议选择intel架构的型号,目前新版本的编译器也可以适用于arm架构的Graviton2型号。
大厅及周边服务一般无情况,服务相对较轻,Graviton2(m6)可根据arm架构选择g)或intel架构型号(m6i)
大多数MOBA游戏在战斗环境中都会选择帧同步通信系统,在同步帧中需要大量的CPU和网络吞吐,如果Graviton2适用于Graviton2,则最好使用C6g或C5。如果使用C6g或C5,则还需要注意编程语言。 在其他语言中,或者建议选择intel架构的型号,目前新版本的编译器也可以适用于arm架构的Graviton2型号。可根据作战环境的实际系统选择竞技游戏。可根据作战环境的实际系统选择竞技游戏。
FPS/MOBA游戏,由于配对动作游戏属于,操作环境往往与数据库无交互,主要是与数据交互的组件或大厅、注册、登录、充值等业务模块。根据业务类型,注册、登录和充值系统更适合应用关系数据库,因为它属于强关系和事务所有权。最好使用Aurora MySQL提供弹伸缩和更高的读写能力。大厅角色数据关系弱,信息量大。有大量适合key-value的数据库,通常需要强烈的一致性。最好使用amazon 用DynamoDB。而且考虑到减轻整体数据库的压力,可以使用Elasticachee, for Redis分享同样的数据读取压力。如果有些数据需要持续化,也可以使用Amazon MemoryDB for Elasticachech取代Elasticachedis for Redis。
Aurora for MySQL是亚马逊云技术自主研发的新一代完全适合Mysql语法的关系数据库,实际原理如图所示:
Aurora for MySQL的优点:
RPO( Recovery Point Objective,数据修复点的目标是0,RTO只有几分钟( Recovery Time Objective ,恢复时间目标)
FPS/MOBA适合DynamoDB的技术场景:
决斗结束后,结论升级到角色数据库(KeyValueUpdate)
DynamoDB的优点:
客户审计必须采用流日志记录方式,还支持持持续备份(PITR)及其按需备份
Amazon Elasticache for Redis是亚马逊云技术与Redis协议完全兼容的内存缓存,支持pub/sub达到序列。Elasticache for Redis 有两种模式(集群模式,主备模式)。Elasticache for Redis 有两种模式(集群模式,主备模式)。在FPS/MOBA场景中,它主要用于共享和存储数据库读取缓存、大厅消息队列及其计算过程中的状态数据。MemoryDB可用于对SLA要求较高的数据进行持久存储。
优点:
单独集群适用于超过250个节点、超过170TB的存储空间、每秒5000万的阅读和最新的Gravinton2案例,给予更高能
大厅服装包括大厅、信息通道、聊天、排名榜、配对、商场等程序模块,以支持玩家所需的各种功能。
新闻中心是大厅和其他程序模块之间通信的中间桥
建议使用Aurorara MySQL
大厅服装中的大厅、配对、排名榜、闲聊、商场等模块都可以设计成无状态,因此可以借助AWS的弹性伸缩作用,对CPU来说、监控内存或业务指标,在业务高峰期自动扩展更多EC2,以承载玩家流量。随着业务的逐渐下降,一些服务器自动退出以降低成本。随着业务的逐渐下降,一些服务器将自动退出以降低成本。当服务器出现故障时,弹性伸缩也会自动拉动服务器进行体积填充。
Amazon EC2 Spot 案例让你可以使用 AWS 云中未使用的 EC2 容积。与按需案例的价格相比,应用程序 Spot 最大限度地享受案例 90% 的折扣。同样,Spot案例类型可以用于大厅、排名榜、聊天等模块。当案例有被回收的风险时,会发出警告,让业务有足够的时间转换为更多的案例类型。当案件确定要回收时,报警将在2分钟内发出,业务可以利用这段时间优雅地停止接收流量。
容器化部署的好处

游戏战斗听从以前的网状对等网络模式(P2P,peer to peer)到目前为止,专用服务器已经发展成为主要方式(Dedicate Servers),帮助我们提高玩家的游戏体验,处理网络对决游戏的稳定性和连接问题。
并且,DedicateServer 方式,操作同步可以放在服务端,这样可以特别好地处理游戏插件和作弊的问题。
并且,DedicateServer 方式,操作同步可以放在服务端,这样可以特别好地处理游戏插件和作弊的问题。
在开发游戏时,gamelift可以集成,后端服务器管理基本上不需要花费太多精力,服务器资源管理和弹出扩展可以很容易地克服两个问题。

理想的Matchmaking技巧每个人都需要一个很好的游戏配对感觉,那就是游戏平衡和等待时间; 对于理想的战斗体验,我们应该扩展服务器和较低的延迟。


在游戏对战中,我们经常收集一些对战数据和服务器log进行分析和监督。如下图所示,我们可以使用APIGWog作为客户端log Lambda Elasticsearch是以http的形式收集的。我们通过在服务器镜像中添加日志收集工具、Fluentd或服务器logFluent Bit等。如下图所示,我们可以使用客户端logAPIGW Lambda Elasticsearch是以http的形式收集的。我们通过在服务器镜像中添加日志收集工具、Fluentd或服务器logFluent Bit等。以下数据分析部分将在准实时和非实时动态收集和分析方面进行更多介绍。
从那时起,我们完全实现了一场比赛的整个过程。从大厅到战斗,我们可以通过亚马逊云技术的各种服务快速开发和部署,帮助开发者专注于制作游戏本身。