创建你的传奇。收集非凡之物。为荣耀而战。

如果你能上传一张图片,把它变成一只可收集的怪物,组建一支三人小队,并带它进入回合制战斗,会怎样?

这个想法变成了MAYHEM — Monster Fighting Arena,一款开源浏览器游戏,你可以在其中收集生物、用图片创建自己的战士,并在一个黑暗奇幻世界中与对手驯兽师对战。

我用AdaL,一个 AI 辅助开发工作流构建了 MAYHEM,并集成了Cloudinary来处理怪物美术上传、图像变换、优化交付和可分享的收藏卡。下面来看看这个项目、它背后的技术,以及你可以在游戏中探索什么。

🎮 MAYHEM 是什么?

MAYHEM 是一款基于浏览器的怪物收集与回合制战斗游戏。它可在桌面、平板和手机上运行,无需安装或账号。核心理念很简单:

  • 收集:在六种元素类型和四个稀有度等级中发现怪物。
  • 创建:上传一张图片,将其转化为自定义怪物。
  • 组建:组建一支由三只怪物组成的队伍。
  • 战斗:使用攻击、特殊能力、防御动作、道具和队伍切换来与对手战斗。
  • 进度:赚取金币和 XP,解锁新物种,完成任务,并提升你的怪物。

该游戏将集换式卡牌机制与 RPG 式进度和回合制战斗相结合。

✨ 探索游戏

1. 发现:进入竞技场

主屏幕通过电影般的奇幻场景、动画效果、精选发现、每日奖励和进度信息,介绍 MAYHEM 的世界。

界面采用深紫色氛围、发光点缀和炽热的橙色行动号召,营造出街机风格的奇幻体验。

2. 收藏:建立你的怪物图鉴

每只怪物都有自己的身份、元素类型、稀有度、属性和特殊能力。

收藏包含四个稀有度等级:

  • 普通
  • 稀有
  • 史诗
  • 传奇

你可以搜索怪物、按元素或稀有度筛选、对收藏排序,并标记收藏夹。更高稀有度的卡牌可以具有箔片和全息风格的饰面。

3. 创建你的怪物:将图片变成战士

这是这个项目里我最喜欢的部分之一。

玩家不再只能从预定义的生物中选择,而是可以上传图片、拖放文件、粘贴图片,或使用内置的示例图稿。随后他们可以自定义怪物的名称、元素和稀有度,选择战斗风格,并在创建前预览其收藏卡。创建工作室还包含生成的属性、特殊能力,以及新怪物诞生时的全屏揭晓动画。

4. 战斗竞技场:策略至关重要

玩家选择三只怪物组成小队,在回合制战斗中面对对手驯兽师。

可用操作包括:

  • 攻击:对对手造成伤害。
  • 特殊:使用强大的怪物能力。
  • 防御:减少受到的伤害并获得防御增益。
  • 切换:更换出战怪物。
  • 道具:使用可用的战斗道具。

战斗还包含元素克制、基于速度的回合顺序、暴击、状态效果、护盾和增益。竞技场有三个难度层级,每个层级都有自己的场景:Verdant Ruins、Stormspire Citadel 和 Infernal Throne。

5. 成长与商店:持续变强

战斗和任务会推动游戏的成长系统。玩家获得经验和金币,提升召唤师等级,解锁更多怪物种类,购买属性提升,学习技能,并获取战斗道具。成就、收集里程碑、每日任务和连续登录提供了除赢得战斗之外的更多目标。

🤖 使用 AdaL 构建

MAYHEM 是借助 AdaL 这一 AI 辅助开发工作流设计和开发的。AdaL 在项目的多个部分提供了帮助,包括游戏设计、UI 和 UX、战斗引擎、程序化音频以及 Cloudinary 集成。

这样的项目需要的不仅仅是生成几个界面。界面、游戏规则、怪物属性、战斗操作、成长系统、图片上传和保存状态都需要协同工作。这让 MAYHEM 成为一个将多个部分整合为统一可玩体验的机会,而不是构建一个静态原型。

☁️ Cloudinary 如何为 MAYHEM 提供支持

怪物创建依赖图片,因此图片处理是体验的核心部分——而不仅仅是一项附加功能。

我集成了Cloudinary来管理怪物图稿,并使其适用于游戏的不同部分。

以下是它的使用方式:

Cloudinary 能力 MAYHEM 如何使用它
无签名上传 使用上传预设直接从浏览器上传怪物艺术作品
图像变换 为收藏卡和缩略图裁剪和调整图像大小
自动格式和质量 使用f_auto,q_auto实现优化的图像交付
智能裁剪 使用c_fill,g_auto在聚焦主体的同时填充卡片框架
可选的背景移除 使用e_background_removal当所需附加组件可用时
可分享的卡片图像 将怪物详情、稀有度、属性、能力和边框渲染到可分享的卡片中
CDN 交付 以响应式尺寸加载艺术作品,并支持懒加载和回退

例如,变换设置可以请求自动选择的格式和质量:

f_auto,q_auto

对于需要填充竖版框架同时保持主体聚焦的卡片图像:

c_fill,g_auto

这些变换有助于以适合游戏收藏卡的形式提供艺术作品。

一个小但重要的安全细节

浏览器使用无签名上传预设和浏览器安全的 Cloudinary 配置。Cloudinary API 密钥绝不会通过VITE_环境变量暴露。

游戏数据——例如怪物属性、库存、进度和战斗规则——与图像托管保持分离。Cloudinary 处理图像,而游戏处理玩法。

MAYHEM 还有一个回退方案:如果未配置 Cloudinary,游戏可以在浏览器中处理上传的艺术作品并将其保存在设备上。它会报告该回退方案,而不是假装云上传成功。

🛠️ 技术栈

该项目使用:

  • React 18—— UI 和可复用组件
  • TypeScript 5—— 类型化游戏数据和应用逻辑
  • Vite 5—— 开发服务器和生产构建
  • Tailwind CSS 4—— 样式和界面设计
  • Cloudinary—— 图像上传、变换和交付
  • Web Audio API—— 程序化音乐和音效
  • localStorage—— 本地游戏存档和玩家进度
  • AdaL—— AI 辅助开发工作流

游戏逻辑按模块组织,包括元素、怪物数据、属性、战斗规则、回合顺序、进度和持久化。UI 分为屏幕和可复用组件。

🌱 下一步是什么?

MAYHEM 是开源项目,采用MIT 许可证。该项目可以被分叉、修改、重新换皮和扩展。

贡献者可以提供帮助的一些领域包括:

  • 添加新的怪物、元素和技能
  • 改进战斗平衡
  • 在线多人对战
  • 创建新的竞技场环境
  • 改进无障碍体验和翻译
  • 探索真实后端,以实现持久化的玩家账户和共享进度

当前游戏通过以下方式在本地保存进度localStorage,并配有存储适配器,可支持未来的后端实现。

🤝 试用它,fork 它,改进它

MAYHEM 将生物收集、图像驱动的自定义、回合制战斗、成长系统和云端图像处理汇聚于一款浏览器游戏中。

我尤其对让玩家创建自己的生物、而不是局限于预定义名册的可能性感兴趣。如果你对游戏开发、AI 辅助编程、React 或 Cloudinary 图像工作流感兴趣,我很希望你来探索这个项目。

项目仓库: https://github.com/ab2030909/MAYHEM-monsters-card-game
网站链接: https://mayhem-monsters.vercel.app/

技术栈:AdaL + React + TypeScript + Cloudinary

如果你体验了,请告诉我:你会先创建什么样的怪物?🔥


⚔️进入竞技场。释放 MAYHEM。