利用 MongoDB Atlas 简化游戏数据管理,包括全球用户档案、竞技记录和实时仪表盘。
使用案例: 分析
行业: 媒体
产品: Atlas, Atlas Global Clusters, Atlas Search, Atlas Charts, Aggregation Framework, Atlas Data Federation
合作伙伴: Unity 游戏引擎,Amazon EC2
解决方案概述
在游戏行业中,管理全球范围内的玩家资料、物品栏和游戏状态是一项挑战。MongoDB Atlas 与 Leafsteroids 相结合,提供了解决方案。全球集群可无缝处理玩家资料,无论玩家身处何地,而 MongoDB 凭借其灵活的文档模型,提供了高级数据管理功能,可详细记录游戏。通过 Atlas Charts 提供的实时玩家仪表盘和与 Atlas Search 的友好互动,提升了玩家体验。MongoDB Atlas 标志着未来已来,全球可扩展性、高效数据管理和以用户为中心的设计在游戏行业中和谐共存。
参考架构
没有 MongoDB
图 1.不含 Atlas 的参考架构
在全局范围内管理游戏数据和配置文件的传统方法包括构建全局查询路由器,在全局多个节点之间进行复制服务,以及集成到不同的热存储选项中。该架构还需独立的搜索引擎和可视化工具,并通过无服务器查询服务将数据联合到可视化工具中。
借助 MongoDB
图2. 包含 Atlas 的参考架构
借助 Atlas,只需一个连接到 MongoDB Atlas 现代多云数据库平台即可。通过利用全球集群、在线存档、Atlas Search、Atlas Charts 和 Data Federation,我们具备了在全球范围内管理游戏数据所需的全面功能。
数据模型方法
图 3.数据模型方法插图
记录表示玩家在某个事件中的游戏过程,包括得分、动作和统计数据。使用 .NET(C#),玩家和事件的子集通过扩展引用模式存储在记录中,采用子类化和自定义序列化。此设计通过允许选择性字段嵌入来提高查询性能,并为未来提供灵活性。在像“PUBG”这样拥有数十亿玩家的大型网络游戏中,数据本地化对于获得最佳体验和满足法律要求至关重要。利用基于位置的 ISO 代码,对玩家和记录进行全球分片。Atlas 全球集群具有卓越的性能和易扩展性,允许在不中断服务的情况下添加分片和区域。
构建该解决方案
引人入胜的 Leafsteroids 游戏平台的核心是 MongoDB Atlas 的稳健性。该游戏设计为一个演示项目,实现了交互体验与精细数据管理的和谐融合。在 GitHub 存储库中,您将找到有关如何构建此解决方案的详细说明。
功能与集成
MongoDB Atlas:Leafsteroids 充分利用了Atlas 全球集群的所有功能。这样可确保高效地管理庞大的玩家资料,无论玩家身处何处,都能享受不间断的游戏体验。为了确保数据的精确性,在存储玩家信息时采用了 ISO 国家/地区代码和分片/区域分配。
数据处理的基础是灵活的文档模型。它不仅支持深度游戏录制,还体现了“数据协同,共生价值”的理念。遵循操作简化的设计理念,其他数据集均归整于结构简洁的集合中。
随着时间的推移,当游戏取得巨大成功、拥有数百万玩家和游戏运行时,所产生的数据量可能会增加成本并影响性能。Leafsteroids 通过 Atlas Online Archive 使用数据分层策略,自动将超过 90 天的游戏数据卸载至优化存储。然后,Atlas Data Federation 允许无缝访问最近和历史数据。
用户体验亮点
玩家仪表盘:作为一项突出功能,定制化的玩家仪表盘可通过 Atlas Charts 在线访问,确保实时更新游戏内的成就和进度。利用 Atlas Charts 的过滤和嵌入功能,相同的仪表盘可重新用于玩家级或事件级仪表盘。这提升了整体玩家体验。
Atlas Search:作为游戏用户中心化的另一个关键组件,玩家可以通过 Web 用户界面的自动补全和模糊匹配功能,迅速找到昵称,从而促进更直观的用户交互。
架构
游戏客户端:使用 Unity3D、.NET 和 C# 开发
游戏服务器:基于 ASP.NET Web API、.NET 和 C# 构建
网站:使用 .NET 和 C# 精心打造的 Blazor 服务器应用程序
设置您的克隆
先决条件:安装 .NET SDK 7 并设置 MongoDB Atlas 数据库。
运行 REST 服务:导航至 rest_service 文件夹,修改 .env 文件,并使用给定命令执行。
启动网站:访问网站文件夹,调整 .env 文件,并使用提供的命令运行。
游戏客户端执行:在 game_client 目录中,调整 Assets 文件夹中的 .env 文件,然后启动游戏。
游戏方面
游戏回放(录屏):这些数据呈现了玩家在游戏活动期间的实时行为轨迹。这些记录使用扩展引用模式存储,可以链接到完整的播放器和事件对象,但在持久化时只对部分字段进行序列化。
玩家档案和游戏玩法:在大型多人在线游戏中,数据本地化至关重要。Leafsteroids 解决方案对 Players 和 Recordings 集合进行全局分片。通过 Atlas 全球集群,ISO 国家和子区域代码连接到区域,从而优化查询和写入请求的路由。好处包括无限的可扩展性和轻松无忧的数据分发升级。
使用的技术和产品
MongoDB 开发者数据平台
合作伙伴技术
主要考虑因素(Key Considerations)
使用 Atlas 全球集群,从从节点读取数据,并将数据写入主节点,以实现水平扩展并支持全球用户,同时避免副作用和延迟。
利用文档模型,在单个文档中存储单个游戏运行的所有数据,但在运行时序列化子集,以提高性能。
Players(玩家)和 Recordings(记录)集合采用“全局分片”存储方案。分片键的第一个部分是位置。Atlas 请求集群将 ISO 国家/地区代码和行政区域代码(ISO-3166-1、ISO-3166-2)与区域相关联,区域是云区域上托管的 1 个以上的分片,用于路由查询和写入请求,以确保最佳性能。全局查询同样受支持。
作者
Sigfrido Narvaez, MongoDB
Dominic Frei,MongoDB
Hubert Nguyen,MongoDB