Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gem Cascade

Gem Cascade 是一个可在浏览器中直接运行的单机三消游戏。当前代码对应 Phase 1 MVP:本地、离线、可静态部署,不依赖服务器、数据库、账号系统或联网同步。

当前玩法

  • 8 x 8 棋盘。
  • 30 步计分模式;每次有效交换消耗 1 步,无效交换会回退且不消耗步数。
  • 普通宝石共有 6 种颜色,并已按颜色绑定不同形状,便于区分:
    • red:圆形
    • blue:方形
    • green:菱形
    • yellow:三角形
    • purple:六边形
    • orange:五角星
  • 横向或纵向 3 个及以上同色宝石会消除。
  • 4 连生成火箭宝石:横向 4 连生成横向火箭,纵向 4 连生成纵向火箭。
  • 5 连生成彩虹宝石。
  • T 型或 L 型匹配生成炸弹宝石。
  • 消除后会下落、补充新宝石,并继续处理自动连锁。
  • 得分规则为:本轮唯一消除格数 x 10 x 当前连锁倍率。
  • React HUD 显示状态、分数、最高分、剩余步数、图标化声音开关和图标化 Help 入口。
  • 浏览器/设备首选语言以 zh 开头时显示简体中文,其他语言显示英文;Help 说明也会同步切换。
  • LocalStorage 保存最高分和声音开关。

特殊宝石表现

普通宝石使用颜色 + 形状双重编码,特殊宝石在普通形状上叠加标记:

  • 横向火箭:白色横条。
  • 纵向火箭:白色竖条。
  • 炸弹:深色核心与橙色外圈。
  • 彩虹宝石:蓝色外圈与红色核心。

当前 Phase 1 已实现以下相邻特殊组合:

组合 效果
火箭 + 火箭 以触发格为中心清除一整行和一整列
炸弹 + 炸弹 以触发格为中心清除半径 2 的方形区域
彩虹 + 普通宝石 清除棋盘上所有同色宝石,并清除参与交换的两个格子
彩虹 + 彩虹 清除整个棋盘上的宝石

彩虹 + 火箭、彩虹 + 炸弹、火箭 + 炸弹等更多组合不属于当前 Phase 1 已实现范围。

后期可选:授权图标资源宝石

当前宝石和特殊标记均由 Phaser 代码绘制,便于保持颜色、形状、动效和触控行为一致。后续如需进一步提升材质细节,可将其替换为透明背景的原创、购买授权或明确允许商用的 PNG/WebP 图标;不得从其他游戏截图中裁剪、提取或复刻其图标资源。

  • 建议普通宝石提供 6 张、特殊宝石提供 4 张;每张至少 128×128,并保留透明背景。
  • 资源建议放在 frontend/public/assets/gems/,也可提供一张精灵图供 Phaser 切分。
  • 替换时必须保持现有六色六形映射、四种特殊类型、30 步规则、触控命中区和 prefers-reduced-motion 降级逻辑;图标仅替换表现层,不改变规则层。

Phase 1 不包含

当前版本不包含登录、注册、账号、云存档、排行榜、数据库、在线同步、多人、AI 对战、广告、内购、分享、成就、每日挑战、固定关卡、障碍物、关卡编辑器或剧情。

技术栈

  • Next.js + React + TypeScript:页面与应用框架。
  • Phaser 3:棋盘渲染、输入与动画编排。
  • Zustand:轻量 UI 状态。
  • Tailwind CSS:样式。
  • Vitest:核心规则、渲染辅助和服务测试。

目录结构

.
├── frontend/                 # Next.js 应用、游戏逻辑、测试与前端配置
│   ├── app/                  # 页面与全局样式
│   ├── components/           # React HUD 与弹窗
│   ├── i18n/                 # 浏览器语言解析与中英文翻译字典
│   ├── game/                 # 棋盘、规则、Phaser 场景、动画与输入
│   ├── pwa/                  # Service Worker 注册、更新与缓存契约
│   ├── services/             # LocalStorage 与声音服务
│   └── out/                  # next build 生成的静态导出产物,不提交
├── docs/                     # 面向玩家的中英文指南与视觉参考图
├── proj-info/                # PRD、架构、任务、计划、验证和交接记录
├── AGENTS.md                 # 开发协作规则
└── README.md                 # 项目与使用说明

本地运行

前置条件:安装可用的 Node.js 和 npm。Windows PowerShell 如果受 npm.ps1 执行策略限制,请使用 npm.cmd

所有命令均从仓库根目录 D:\MyWorks\gem-cascade 执行。

# 安装前端依赖
npm.cmd --prefix frontend install

# 启动开发服务器
npm.cmd run dev

开发服务器启动后访问终端显示的本地地址,通常为 http://localhost:3000/

检查与构建

npm.cmd run lint
npm.cmd run typecheck
npm.cmd run test:run
npm.cmd run build

根目录脚本会转发到 frontend/。由于 frontend/next.config.ts 设置了 output: 'export',成功构建后的静态站点位于 frontend/out/

玩家文档

在线访问

当前 Vercel 免费托管的主生产地址为:

https://gem-cascade-wentop.vercel.app/

https://gem-cascade-two.vercel.app/ 也保留为同一项目的备用生产别名。Vercel 每次部署还会生成一个带随机后缀的唯一 deployment URL;该地址只用于定位某一次具体部署、查看构建或回滚,不需要在日常维护中长期保存。

游戏内 Help 与语言

  • 顶部的 ? 图标会打开游戏内 Help。Help 说明玩法、手机/电脑操作、iPhone/iPad 与 Android 的安装步骤,并可用关闭按钮、Escape 或“继续游戏”关闭。
  • Help 是挂载到页面顶层的可拖动浮窗:桌面端可拖动标题栏移动;短横屏会自动采用三栏紧凑排版。
  • 游戏不会提供手动语言选择器。中文浏览器/设备自动显示简体中文,其他语言自动显示英文;修改浏览器语言后刷新页面即可生效。

PWA 安装与缓存维护

  • Android Chrome:打开稳定生产地址,使用浏览器菜单的“安装应用”或“添加到主屏幕”。
  • iPhone Safari:打开稳定生产地址,点“分享”后选择“添加到主屏幕”。
  • 发现更新时,游戏会显示“发现新版本”提示;完成当前对局后点“立即刷新”才会切换版本。
  • 如需清除本地 PWA 缓存:Chrome/Edge 在 DevTools 的 Application 中注销 Service Worker 并清除站点数据;iPhone 可删除主屏幕图标,再在 Safari 设置中清除该网站数据后重新添加。
  • 图标源文件及替换尺寸说明见 proj-info/PWA_ICON_GUIDE.md
  • 也可点击游戏内 ? 图标查看同一份简化安装指引。

Vercel 部署

从 GitHub 导入本仓库时使用:

配置项
Root Directory frontend
Install Command npm install
Build Command npm run build
Output Directory out

项目不需要在 Vercel 配置环境变量,也不依赖后端服务。当前项目使用 frontend/next.config.ts 中的 output: 'export' 生成静态站点,因此 Vercel 项目应按静态站点部署,输出目录指向 frontend/out/ 对应的 out

日常重新部署或排查时优先检查主生产别名 https://gem-cascade-wentop.vercel.app/。只有需要对比某一次部署产物、回滚或查看 Vercel 部署详情时,才需要使用具体 deployment URL。

Vercel CLI 手动发布时必须从 frontend/ 目录运行,确保项目的 out 输出目录与 next build 的实际导出位置一致。

贡献说明

开发前请先阅读 AGENTS.md 以及 proj-info/README.md 中列出的控制文档。保持游戏规则与 Phaser 表现层分离;核心规则优先写纯函数和单元测试;不要扩大 Phase 1 范围。

About

A modern browser-based match-3 puzzle game built with AI-assisted development. Designed as a learning project to explore the complete workflow of Codex, GitHub, and Vercel, while providing a clean, modular, and extensible codebase for future game features.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages