阿里云数据库MongoDB版助力极致游戏高效开发
客户简介
成立于2010年的厦门极致互动网络技术股份有限公司(以下简称“公司”或“极致游戏”),是一家集网络游戏产品研发与运营为一体的重点软件企业,公司专注于面向全球用户的网络游戏研发与运营。在整个产业链中,公司同时承担着游戏开发商、游戏运营商的角色,是一个完整产业链的互联网游戏公司。
自成立以来,极致互动成功研发出《上古王冠》、《魔侠传》、《道友请留步》、《文明大爆炸》、《东方故事》、《命运圣契》等多款原创型网络游戏。其中卡牌手游《命运圣契》自2024年9月14日上线以来,实现首月新增用户超400万 ,首月全平台流水破亿,荣登iOS与Taptap预约榜榜首。目前《命运圣契》可支持几十万、甚至上百万玩家同时在线。

业务挑战
近年来,游戏行业竞争愈发激烈,特别是在卡牌手游领域,因此需要保障玩家的极致游戏体验。在游戏的整个生命周期当中,游戏玩家的游戏体验和制作方的研发迭代速度及后台运维环环相扣,因此底层数据库的顺利运行是游戏体验的基础与保障。
在极致互动过往的游戏开发中,采用的是关系型数据库,而现在,研发团队需要一款能支撑快速开发及数据灵活的数据库,以确保在前期的开发中能缩短开发周期,在中期的发行中能保障游戏体验:
1)需要高效处理结构灵活变化的游戏数据
《命运圣契》属于第三代卡牌游戏,玩家角色属性、战斗数据和玩家排名等会经常发生变化,尤其是角色武器和道具的引入,都会带来游戏逻辑和数据结构等的动态变化。传统的关系型数据库无法支撑起游戏场景的灵活动态属性变化,需要能支持更高灵活性的数据库解决方案。
2)需要确保玩家的游戏体验顺畅,无中断无卡顿
游戏平台的部署架构需要具备高可用,能够在节点出现故障的时候不会影响服务,保证7*24小时不间断的服务,这对底层数据的存储、备份、恢复以及故障切换的速度要求特别高。例如,服务响应时间需要达到微秒级别,备份恢复达到分钟级别,还需要通过主从架构保证在不停服的情况下完成游戏版本的升级,从而保障玩家的游戏体验。
3)能够弹性扩展以支撑海量玩家在线
《命运圣契》是极致互动寄予厚望的产品,无论是老用户邀测、压力测试、全平台首发还是上线运营的各阶段,对数据库的资源需求是不同的,尤其是大型节假日高峰期,需要支撑几十万人同时在线,而且在初期需要对游戏玩家做分区分服,以及到后期的合服。虽然传统的关系型数据库能通过改造完成横向扩容,但是数据规模太大的情况下会带来非常繁琐的运维流程,这很可能会降低玩家的游戏体验。
解决方案
阿里云数据库MongoDB版深度契合游戏业务场景:
MongoDB帮助《命运圣契》落地丰富多彩的游戏世界
《命运圣契》的制作团队历时四年,创造出这款轻松休闲的卡牌游戏,人物建模和艺术风格值得称道。游戏采用鲜艳的色彩和细腻的角色设计,打造出一个充满奇幻色彩的世界,每个角色都经过精心设计,体现了独特的个性和故事背景。
● 玩家数据存储
与传统游戏开发有所不同,使用MongoDB去存储玩家的基础数据,例如角色数据、战斗数据、等级数据等,开发者可以灵活调整数据的结构,不同游戏可定义不同的数据模版。此外,得益于schema free特性,MongoDB支持多种数据类型和数据原子计算,开发者无需关心底层的数据细节,即可直接灵活定义数据。
● 游戏内经济系统闭环
假设把游戏内的经济系统理解为一个特殊的交易场景,处理游戏交易涉及订单、退款、跟踪回溯等多个环节,而通过MongoDB的原子化、事务性操作可以将整个交易流程一次性完成。虽然游戏内交易是虚拟的、复杂的,但采用MongoDB可以保证交易的规范性和完整性。
● 数据流能力
游戏开发者需要跟踪玩家的各种行为事件,以便形成流水日志,同时要保证玩家的所有事件可追溯、可查询。MongoDB的数据库实例,可将这些流水日志存储起来,并基于灵活的文档型结构,让开发者无论是在开发期间,还是游戏已经发行的期间,都可以快速检索玩家的所有事件流。
阿里云数据库MongoDB版让业务更稳定,运维更轻松
● 业务稳定性
基于阿里云数据库MongoDB版的分片集群架构,可以实现分钟级的横向扩缩容能力,对于《命运圣契》的发行至关重要,可以不用担心玩家规模的快速增加而影响玩家的游戏体验。
同时,阿里云数据库MongoDB版具备快速回档能力,可以实现快速的任意时间点恢复,通过其多线程增量恢复oplog等功能,备份恢复速度提升30倍,大幅度减少了游戏停更时间,保证玩家拥有更好的游戏体验。
● 运维成本
阿里云数据库MongoDB版简单易用的控制台可以实现全面托管服务,分钟级的自动扩缩容为《命运圣契》提供了低延迟和高可用的服务,兼容流量高峰期时保障用户体验及业务低峰时节约成本;
同时,阿里云数据库MongoDB版还提供丰富的可视化监控能力,包括实时可视化日志和监控面板,让研发和运维均可以实时监控业务运行状态;
除此之外,阿里云数据库MongoDB版还提供运行时间、状态异常等多维告警能力,使问题可以在最短的时间内被觉察及解决。
回顾与阿里云MongoDB的合作历程,极致互动成都研发中心技术经理汪兴表示,无论在功能还是性能上,阿里云数据库MongoDB版都很好地契合了游戏的业务场景,带给极致互动的不只是研发迭代效率的提升,同时还有运维价值。
阿里云数据库MongoDB版在不久的将来支持到MongoDB 8.0版本,极致互动研发团队期待借助新版本来开发更多的手游项目。随着《命运圣契》国内的发行成功经验,他们也正在计划让阿里云数据库MongoDB版帮助《命运圣契》走出国门,让海外玩家也能体验到高品质的第三代卡牌手游。
相关文章:
阿里云数据库MongoDB版助力极致游戏高效开发
客户简介 成立于2010年的厦门极致互动网络技术股份有限公司(以下简称“公司”或“极致游戏”),是一家集网络游戏产品研发与运营为一体的重点软件企业,公司专注于面向全球用户的网络游戏研发与运营。在整个产业链中,公…...
ESP32-S3模组上跑通ES8388(29)
接前一篇文章:ESP32-S3模组上跑通ES8388(28) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回解析到了es8388_init函数中的第11段也是最后一段代码,没有解析完,本回继续解析。为了便于理解和回顾,再次贴出该片段,在components\audio_hal\driver\es8388\es8388.c中,如下…...
使用ElasticSearch实现全文检索
文章目录 全文检索任务描述技术难点任务目标实现过程1. java读取Json文件,并导入MySQL数据库中2. 利用Logstah完成MySQL到ES的数据同步3. 开始编写功能接口3.1 全文检索接口3.2 查询详情 4. 前端调用 全文检索 任务描述 在获取到数据之后如何在ES中进行数据建模&a…...
通过k-means对相似度较高的语句进行分类
本文介绍了如何使用K-Means算法对相似度较高的语句进行分类,并附上java案例代码 import java.util.ArrayList; import java.util.List; import java.util.Random;public class KMeansTextClustering {public static void main(String[] args) {// 初始化语句数据集…...
国信华源科技赋能长江蓄滞洪区水闸管护项目验收成果报道
“碧水悠悠绕古城,闸启长江万象新。”近日,由北京国信华源科技有限公司倾力打造的万里长江蓄滞洪区水闸管护项目,圆满通过验收,为这片鱼米之乡的防洪安全注入了新的科技活力。 长江之畔,水闸挺立,犹如干堤上…...
HTML:表格重点
用表格就用table caption为该表上部信息,用来说明表的作用 thead为表头主要信息,效果加粗 tbody为表格中的主体内容 tr是 table row 表格的行 td是table data th是table heading表格标题 ,一般表格第一行的数据都是table heading...
wine的使用方法
wine版本 所有分支,新的主要版本: wine-x.0 All branches, release candidates:各分支、候选版本: wine-x.0-rcn Stable branch updates: 稳定分支更新: wine-x.0.z Development branch updates: wine-x.y wine *.exe “更改目…...
Linux服务器离线安装unzip包
Linux服务器离线安装unzip包 1. 安装unzip包的目的 解压Docker部署包和服务部署包。 2. 查看当前环境是否已经安装unzip rpm -qa | grep --color unzip3. 下载对应的离线包 地址:http://www.rpmfind.net/linux/rpm2html/search.php?query&submitSearch 例…...
Excel拆分脚本
Excel拆分 工作表按行拆分为工作薄 工作表按行拆分为工作薄 打开要拆分的Excel文件,使用快捷键(AltF11)打开脚本界面,选择要拆分的sheet,打开Module,在Module中输入脚本代码,然后运行脚本 Su…...
Mybatis---事务
目录 引入 一、事务存在的意义 1.事务是什么? 2.Mybatis关于事务的管理 程序员自己控制处理的提交和回滚 引入 一、事务存在的意义 1.事务是什么? 多个操作同时进行,那么同时成功,那么同时失败。这就是事务。 事务有四个特性…...
企业直播间媒体分发新闻转播拉流推广名单(金融财经科技类)
【本篇由 言同数字媒体直播分发 原创】随着直播与短视频成为各大企业营销的重要手段,如何选择合适的视频平台进行内容分发与拉流成为了企业关注的焦点。对于财经和科技类企业而言,选择具有专业受众群体和广泛传播能力的平台尤为重要。下面是一些可以帮助…...
华为FreeBuds Pro 4丢了如何找回?(附查找功能使用方法)
华为FreeBuds Pro 4查找到底怎么用?华为FreeBuds Pro 4有星闪精确查找和离线查找,离线查找功能涵盖播放铃声、导航定位、星闪精确查找、上线通知、丢失模式、遗落提醒等。星闪精确查找是离线查找的子功能,当前仅华为FreeBuds Pro 4充电盒支持…...
若依微服务登录密码加密传输解决方案
文章目录 一、需求提出二、应用场景三、解决思路四、注意事项五、完整代码第一步:前端对密码进行加密第二步:后端工具类实现 RSA 加解密功能第三步:登录接口中添加解密逻辑 六、运行结果总结 一、需求提出 在默认情况下,RuoYi 微…...
NVR小程序接入平台/设备EasyNVR深度解析H.265与H.264编码视频接入的区别
随着科技的飞速发展和社会的不断进步,视频压缩编码技术已经成为视频传输和存储中不可或缺的一部分。在众多编码标准中,H.265和H.264是最为重要的两种。今天我们来将深入分析H.265与H.264编码的区别。 一、H.265与H.264编码的区别 1、比特率与分辨率 H.…...
Redisson常用方法
Redisson 参考: 原文链接 定义:Redisson 是一个用于与 Redis 进行交互的 Java 客户端库 优点:很多 1. 入门 1.1 安装 <!--redission--> <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifa…...
html自带的input年月日(date) /时间(datetime-local)/星期(week)/月份(month)/时间(time)控件
年月日期控件 type"date" <input type"date" id"StartDate" valueDateTime.Now.ToString("yyyy-MM-dd") /> //设置值 $("#StartDate").val("2024-12-12"); //获取值 var StartDate$("#StartDate&quo…...
CSS系列(12)-- 响应式设计详解
前端技术探索系列:CSS 响应式设计详解 📱 致读者:掌握响应式设计的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS 响应式设计,学习如何创建适应各种设备的网页布局。 响应式基础 🚀 视口设…...
filecoin boost GraphQL API 查询
查询示例 查询失败交易 curl -X POST \ -H "Content-Type: application/json" \ -d {"query":"query { deals(limit: 10, query: \"failed to get size of imported\") { deals { ID CreatedAt Message } } }"} \ http://localhost:…...
SAS - Subtractive Port
在SAS(串行连接SCSI,Serial Attached SCSI)协议中,subtractive port 是一种特殊类型的端口,主要用于设备间的路由功能。它的作用是在路径选择过程中充当默认路径,以处理未明确指定路径的请求。以下是它的定…...
TCP客户端模拟链接websocket服务端
因一些特殊原因研究了下TCP模拟链接websocket。原理上可以连接但具体怎么连接怎么操作就不知道了,需要研究下,以下是个人研究的方案。 用线上和本地地址来做例子: 线上wss地址:wss://server.cs.com/cs/vido/1 本地地址ws://127…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)
旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...
