dxrating
面向 maimai DX 街机音游玩家的 Rating 计算与曲库管理工具,支持离线曲库、多语言和社区互动功能。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
面向 maimai DX 街机音游玩家的 Rating 计算与曲库管理工具,支持离线曲库、多语言和社区互动功能。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你是一个 maimai DX 资深玩家,刚刚在游戏厅里完成了一首难度 13+ 的曲子,拿到了 99.50% 的达成率,内心正在狂喜——但你知道自己在全服大概是什么水平吗?好友里谁比你强?你的 Rating(技术分)过去一个月涨了多少?这些问题,单靠游戏机本身很难回答。
DXRating(dxrating.net)就是为了解决这个问题而生的。它是一个面向 maimai DX 玩家的综合性 Web 工具,提供曲库浏览、Rating 计算器、个人战绩管理和社区互动功能。
在深入了解 DXRating 之前,有必要先科普一下它的服务对象。maimai DX 是日本世嘉(SEGA)公司出品的街机音乐游戏,国内常称"舞萌DX"。玩家跟随屏幕上的音符敲击对应的按键,游戏会根据精准度给出从 D 到 SSS+ 不等的评价等级。
maimai DX 有一个独特的 Rating( rating)系统:每首曲子根据难度被赋予一个内部系数(Rate),而你的 Rating 则是各曲 Rating 的总和,决定了你的"段位"。这个数值在游戏内可见,但想要横向对比、长期追踪自己的成长曲线,就需要像 DXRating 这样的第三方工具了。
这是 DXRating 最核心的功能。玩家可以输入自己在 maimai DX 中取得的成绩,系统会换算出对应的 Rating 值,并展示该曲在你总 Rating 中的贡献占比。计算器支持所有难度的谱面,让玩家在冲击高难度曲目前就能预估收益。
DXRating 内置了完整的 maimai DX 曲库数据,包括所有正式曲目和活动曲。玩家可以按难度、分类、新增时间等多个维度进行筛选,还能看到每首曲子的历史版本更新(比如某曲目的某个难度被调高了)。整个曲库数据可以在浏览器端离线使用(通过 sql.js 内嵌 SQLite),无需联网也能查谱。
除了工具属性,DXRating 还有社交功能。玩家可以为曲目添加标签(如"手元友好""读谱地狱")、留下评论,或者为曲目设置别名(alias)方便搜索。例如,一首日文歌名可能有一个社区公认的英文简称,玩家可以直接用简称搜索。
登录后,玩家可以绑定自己的游戏账号数据,查看自己的 Rating 变化趋势、与好友对比、追踪近期战绩。这个功能需要通过 OAuth 或 Passkey 登录认证。
DXRating 采用 Turborepo 管理 monorepo 项目,依赖由 pnpm 管理,工作空间包含三个应用和两个共享包:
apps/
├── web/ React 19 + Vite 单页应用
├── backend/ Hono API 服务
└── functions/ Cloudflare Workers 边缘函数
packages/
├── dxdata/ maimai DX 曲目元数据包
└── tsconfig/ 共享 TypeScript 配置
前端使用 React 19 搭配 Vite 构建工具,UI 层面采用了 Material-UI 5 和 shadcn/ui 的混合方案(都是基于 MUI 组件),样式框架是轻量化的 UnoCSS。路由由 wouter(轻量 React Router 替代品)负责,状态管理用的是 TanStack Query(异步状态+缓存利器)。
前端支持 4 种语言(简体中文、繁体中文、日语、英语),由 i18next 驱动。数据存储方面,曲库数据以 sql.js(浏览器端 SQLite)形式存在,即使用户完全离线也能查询曲库。
后端基于 Hono 框架(轻量、高性能的 Node.js/Edge 框架),API 类型安全由 oRPC 保证(oRPC 是 TypeScript-first 的 RPC 框架,配合 Zod 做输入验证),数据库 ORM 使用 Drizzle ORM(轻量、类型安全的 ORM),持久化层是 PostgreSQL 16。
认证方面采用 Better Auth,支持邮箱密码、Google OAuth、GitHub OAuth 和 Passkey(WebAuthn) 登录。这套组合(Hono + oRPC + Drizzle + PostgreSQL)在中小型 Web 项目中非常实用,兼顾了类型安全和开发效率。
除了主后端,DXRating 还部署了 Cloudflare Workers 边缘函数,在 CDN 节点上响应部分高频 API 请求(如曲目目录 API),降低主服务器的负载。Cloudflare Workers 也由 Hono 驱动,与主后端共用部分业务逻辑。
整个项目使用 TypeScript 5.9 严格模式开发,全量采用 ESM 模块系统("type": "module"),代码规范由 oxlint(高性能 ESLint 替代品)和 oxfmt(快速格式化工具)把控。后端有 Vitest 集成测试(需要 PostgreSQL 环境),前端有 Vitest 单元测试。不过项目整体测试覆盖率不算高,文档质量较为扎实——README 包含了完整的架构说明、本地开发指南和部署流程。
项目采用 MIT 许可证,代码完全开源,可自由使用和二次开发。
DXRating 的前端部署相对简单(Cloudflare Pages),但后端需要较多手动配置:
DATABASE_URL(数据库连接地址)和 BETTER_AUTH_SECRET(认证密钥),生产环境还需要配置 Google/GitHub OAuth 应用凭证和 Cloudflare Turnstile(验证码)综合来看,部署难度为 中等。对于普通用户,直接使用 dxrating.net 在线版本体验最佳;对于开发者,想要本地部署需要具备 Node.js 25、PostgreSQL 和基本的运维能力。
适合你,如果:
不太适合,如果:
DXRating 是一个针对性强、功能完整的垂直领域工具项目。它没有使用任何 AI/ML 技术,但对于目标用户群体(maimai DX 玩家)来说,它的价值远超过大多数通用 AI 项目。从工程角度看,这个项目展示了现代 TypeScript 全栈开发的最佳实践:monorepo 管理、Turborepo 构建缓存、类型安全的 RPC、边缘计算和传统后端的分层部署,是值得参考的技术范例。