产品策划 · 游戏玩法 · 关卡系统 · 技术架构 · 后台管理 · 部署方案



8
建议将产品定位为一款 徐州地方美食文化 + 休闲三消 + 城市探索 + 关卡运营 的移动游戏。采用服务端配置关卡、客户端本地执行消除逻辑、服务端校验结算的架构,既能保证流畅操作,又方便后台持续更新内容。
一、产品定位
| 项目 | 设计 |
|---|---|
| 游戏名称 | 徐州味道消消乐 |
| 游戏类型 | 休闲三消、闯关、收集 |
| 目标平台 | Android、iOS |
| 主要用户 | 休闲游戏玩家、徐州本地用户、游客 |
| 画面风格 | 国潮 Q 版、明亮活泼、美食拟人化 |
| 核心玩法 | 三消闯关 + 道具 + 美食图鉴 |
| 核心运营 | 每日任务、签到、排行榜、活动关卡 |
| 首发关卡 | 100 关,支持持续扩展 |
| 商业模式 | 游戏内虚拟金币、道具礼包、可选激励广告 |
二、游戏玩法
三消棋盘交互原型
点击相邻两块美食进行交换,三个及以上相同美食连成横排或竖排即可消除。
第 1 关 · 彭城初味目标:获得 3000 分
试玩原型
得分
0
剩余步数
18
目标
3000
🍲🥟🍗🥞🍜🍖🍗🥞🍜🍲🥟🍗🥟🥟🥞🥟🍖🍜🥞🍜🍗🍖🍲🥟🍖🍲🥟🍜🥞🍗🍜🍗🍖🥟🍗🍲
交换相邻美食,尝试消除!重新开始
这是可操作的简化玩法演示,正式版本将增加动画、重力掉落特效、道具、特殊棋子和完整关卡规则。
消除规则
| 消除形式 | 效果 |
|---|---|
| 3 连消 | 基础消除,获得积分 |
| 4 连消 | 生成横向或纵向爆竹 |
| 5 连消 | 生成美食大厨,可消除一种美食 |
| T / L 形消除 | 生成范围爆炸道具 |
| 连锁消除 | 连击积分加成 |
| 特殊组合 | 两个特殊棋子交换产生更强效果 |
基础规则建议采用 6×6 入门棋盘、8×8 标准棋盘、9×9 高难棋盘。每关设置步数、目标、障碍物、奖励及三星评价。
三、徐州美食元素
🍲
地锅鸡基础棋子
🥞
烙馍基础棋子
🥣
羊肉汤基础棋子
🍖
把子肉基础棋子
🍜
饣它汤基础棋子
🥟
煎包基础棋子
正式版应使用原创美食图标替换 Emoji,保持每种棋子的色彩、轮廓和识别度明显不同。
四、闯关与地图设计

建议首发设计 100 关,划分为 5 个章节,每章 20 关。
| 章节 | 关卡 | 地图主题 | 核心机制 |
|---|---|---|---|
| 第一章 | 1–20 | 彭城美食街 | 基础三消、四连消 |
| 第二章 | 21–40 | 云龙湖畔 | 冰块、收集食材 |
| 第三章 | 41–60 | 戏马台 | 木箱、锁链 |
| 第四章 | 61–80 | 户部山夜市 | 传送带、复杂障碍 |
| 第五章 | 81–100 | 彭城盛宴 | 多目标、组合机关 |
每章最后一关设计为特色挑战关,通关后解锁徐州美食图鉴、城市故事或限定头像框。
关卡配置示例
服务端返回 JSON,后台通过可视化编辑器生成并发布。
{
"id": 21,
"version": 3,
"name": "云龙湖的早餐",
"chapter": 2,
"difficulty": "normal",
"board": {
"rows": 8,
"cols": 8,
"tileTypes": [1, 2, 3, 4, 5],
"cells": [],
"obstacles": [
{"row": 2, "col": 3, "type": "ice", "hp": 2}
]
},
"limits": {
"moves": 25
},
"objectives": [
{"type": "collect", "tileId": 3, "count": 20},
{"type": "clear_obstacle", "obstacle": "ice", "count": 8}
],
"stars": [2000, 4000, 6000],
"rewards": {
"coins": 100,
"firstClearCoins": 50
},
"rulesVersion": "1.0",
"seedPolicy": "server"
}
后台需支持草稿、版本管理、预览、测试、发布、回滚。已发布版本应保持不可变,避免玩家进行中的关卡因配置变化而无法结算。
五、道具系统
🔨
小锤子 · 200 金币
指定清除一个普通棋子,部分障碍需要多次使用。
🔄
乾坤翻转 · 300 金币
随机重排可移动棋子,确保至少存在一个有效操作。
💣
地锅爆弹 · 500 金币
清除指定位置周围 3×3 区域。
⏳
再来五步 · 800 金币
步数耗尽时增加 5 步。
道具分为开局前道具、局内道具、失败续关道具三种类型。所有使用和扣费均需有服务端流水,防止重复扣除。
六、商店与经济系统
| 模块 | 功能 |
|---|---|
| 金币商店 | 购买道具、体力 |
| 每日免费礼包 | 每天领取一次 |
| 新手礼包 | 前七天专属奖励 |
| 每日签到 | 连续签到奖励 |
| 任务系统 | 通关、三星、使用道具 |
| 美食图鉴 | 收集美食卡片解锁奖励 |
| 活动商店 | 限时活动积分兑换 |
初期建议只使用游戏内可获得的金币,等核心玩法和留存验证后,再考虑真实货币购买。若未来接入付费,需要分别对接 Apple App Store 和 Google Play 的应用内购买及服务端订单验证。
七、技术架构
客户端 · FlutterAndroid / iOS · Flame 游戏引擎 · Riverpod · Dio
HTTPS · REST API
NginxTLS 终止 · API 反向代理 · 负载均衡 · 静态资源
Rust API 01Axum · Tokio
Rust API 02Axum · Tokio
MySQL 8持久化数据
Redis 7缓存 · 排行 · 限流
运营后台 · Vite + Vue 3 + Element Plus通过 Nginx 提供静态页面,调用独立权限的管理 API
技术选型
| 层级 | 推荐技术 |
|---|---|
| 移动端 | Flutter + Flame |
| 状态管理 | Riverpod |
| 网络请求 | Dio |
| 本地缓存 | Hive 或 Isar |
| 后端语言 | Rust |
| Web 框架 | Axum |
| 异步运行时 | Tokio |
| ORM / SQL | SQLx |
| 认证 | JWT + Refresh Token |
| 后台前端 | Vite + Vue 3 + TypeScript |
| UI 组件 | Element Plus |
| 数据库 | MySQL 8 |
| 缓存 | Redis 7 |
| 反向代理 | Nginx |
| 部署 | Docker Compose |
| CI/CD | GitHub Actions 或 GitLab CI |
八、后端模块设计
建议采用 模块化单体 + 多实例部署,不必在首发阶段拆成大量微服务。
backend/
├── Cargo.toml
├── crates/
│ ├── api/ # HTTP 接口
│ ├── auth/ # 登录认证
│ ├── users/ # 用户系统
│ ├── levels/ # 关卡配置
│ ├── gameplay/ # 游戏会话和结算
│ ├── inventory/ # 道具背包
│ ├── economy/ # 金币、交易流水
│ ├── shop/ # 商店
│ ├── leaderboard/ # 排行榜
│ ├── tasks/ # 每日任务
│ ├── admin/ # 管理后台
│ └── common/ # 通用组件
├── migrations/
├── config/
└── tests/
核心 API
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/v1/auth/guest |
游客登录 |
| POST | /api/v1/auth/login |
账号登录 |
| POST | /api/v1/auth/refresh |
刷新令牌 |
| GET | /api/v1/users/me |
玩家资料 |
| GET | /api/v1/levels |
关卡列表 |
| GET | /api/v1/levels/{id} |
获取关卡配置 |
| POST | /api/v1/game/start |
开始游戏会话 |
| POST | /api/v1/game/finish |
提交结算 |
| GET | /api/v1/progress |
闯关进度 |
| GET | /api/v1/inventory |
道具背包 |
| GET | /api/v1/shop/products |
商店商品 |
| POST | /api/v1/shop/purchase |
购买道具 |
| GET | /api/v1/rankings |
排行榜 |
| GET | /api/v1/tasks/daily |
每日任务 |
所有改变金币、道具、进度的接口都应要求认证、进行参数校验并支持幂等处理。
九、关卡结算与防作弊
三消玩法适合本地即时交互,但不能直接信任客户端提交的得分。
推荐流程:
- Flutter 请求关卡配置,获得
levelId和版本号。 - 开始游戏时,Rust 创建
gameSessionId,下发随机种子及规则版本。 - Flutter 本地生成棋盘并运行消除动画。
- 客户端记录每次交换、道具使用和操作顺序。
- 结算时上传操作记录和会话 ID。
- Rust 使用同一套确定性规则重新执行操作,验证得分、步数和目标。
- 验证通过后,在数据库事务中更新进度、金币和奖励。
- 更新 Redis 排行榜,并返回结算结果。
关键是让随机数算法、棋盘生成、掉落规则和特殊棋子逻辑全部确定化。Rust 可以实现权威游戏规则引擎,并用跨语言测试用例确保 Flutter 行为一致。
十、后台管理系统
关卡编辑器 · 管理后台原型
可交互示意
运营控制台
演示数据
关卡编辑数据概览用户管理关卡名称步数限制画笔工具
冰块
选择画笔后点击棋盘格子进行编辑。
清空棋盘导出关卡 JSON
正式后台模块应包含:
- 关卡管理: 关卡 CRUD、Excel/JSON 导入、地图编辑、障碍物绘制、模拟试玩、批量发布、版本回滚。
- 用户管理: 用户搜索、进度、背包、金币流水、封禁和申诉记录。
- 商品管理: 道具价格、礼包、库存策略、限购、活动商品。
- 排行榜管理: 总榜、周榜、好友榜、异常成绩审核。
- 运营配置: 签到、每日任务、活动、公告、邮件奖励。
- 数据分析: DAU、留存、关卡失败率、道具使用率、金币产出与消耗。
- 权限管理: 超级管理员、运营、关卡设计师、客服、数据分析员。
关卡导入需进行 JSON Schema 校验、坐标边界检查、目标可完成性检查和关卡模拟测试。后台操作要保留审计日志。
十一、数据库设计
建议使用 MySQL 作为最终数据来源,Redis 存放排行榜、热点配置及临时数据。
| 表名 | 作用 |
|---|---|
users |
用户信息 |
user_auth |
登录凭据及绑定方式 |
user_sessions |
登录会话 |
chapters |
章节 |
levels |
关卡主表 |
level_versions |
关卡配置版本 |
level_progress |
玩家关卡进度 |
game_sessions |
游戏会话 |
game_replays |
操作记录 |
items |
道具定义 |
user_inventory |
用户道具背包 |
wallets |
玩家金币余额 |
wallet_transactions |
金币变动流水 |
shop_products |
商店商品 |
shop_orders |
商店订单 |
daily_tasks |
任务配置 |
user_task_progress |
用户任务进度 |
admin_users |
后台账号 |
admin_audit_logs |
后台操作日志 |
核心约束包括:金币余额不能为负、订单有唯一幂等键、玩家每关只有一条最佳进度记录、关卡版本不可变、会话只能结算一次。
Redis Key 设计
game:level:21:v3 关卡配置缓存
game:rank:weekly:2026w44 周排行榜 ZSET
game:rank:alltime 总排行榜 ZSET
game:session:{id} 临时会话状态
game:rate:{userId} 接口限流
game:daily:{userId} 每日任务缓存
Redis 排行榜建议使用 Sorted Set,MySQL 定期保存必要的排名快照。涉及金币和背包的数据不能只写入 Redis。
十二、Docker 部署方案
建议开发环境和生产环境分开配置。
deployment/
├── docker-compose.yml
├── docker-compose.prod.yml
├── .env.example
├── nginx/
│ ├── nginx.conf
│ └── conf.d/
│ ├── api.conf
│ └── admin.conf
├── mysql/
│ └── init/
├── redis/
│ └── redis.conf
└── scripts/
├── backup.sh
└── deploy.sh
生产部署拓扑
用户请求 · HTTPS
Nginx 负载均衡
Rust API 1
Rust API 2
Admin Web
MySQL
Redis
初期可使用单机 Docker Compose;业务增长后再拆分数据库、缓存与应用实例。
Nginx 使用 least_conn 或轮询策略分发请求,并配置健康检查、超时、连接限制和 HTTPS。Rust API 设计为无状态服务,用户会话通过令牌和共享存储处理,不依赖固定实例。
生产环境还需考虑 MySQL 自动备份、Redis 持久化、日志采集、指标监控、容器重启策略、密钥管理、镜像漏洞扫描和部署回滚。单台服务器上的两个 API 容器能分担流量,但不能解决服务器本身的单点故障。
十三、Flutter 客户端工程
flutter_app/
├── lib/
│ ├── app/
│ ├── core/
│ │ ├── network/
│ │ ├── storage/
│ │ ├── theme/
│ │ └── routing/
│ ├── features/
│ │ ├── auth/
│ │ ├── home/
│ │ ├── level_map/
│ │ ├── game/
│ │ │ ├── engine/
│ │ │ ├── components/
│ │ │ ├── animations/
│ │ │ └── screens/
│ │ ├── shop/
│ │ ├── ranking/
│ │ ├── inventory/
│ │ └── profile/
│ └── main.dart
├── assets/
│ ├── foods/
│ ├── backgrounds/
│ ├── effects/
│ ├── audio/
│ └── levels/
├── android/
└── ios/
游戏棋盘建议交给 Flame 渲染,登录、商店、排行榜、设置等界面使用 Flutter Widget。这样既能实现高性能消除动画,也便于开发常规业务页面。
十四、开发阶段与交付计划
01
基础架构与账号系统
第 1–2 周
Rust API、MySQL、Redis、Flutter 项目、后台基础框架、Docker 环境
02
核心三消与关卡编辑
第 3–5 周
棋盘、交换、消除、掉落、连击、关卡 JSON、可视化编辑器
03
游戏业务系统
第 6–8 周
关卡进度、道具、金币、商店、签到、任务、排行榜
04
内容制作与运营能力
第 9–10 周
100 关制作、徐州美食素材、音效、后台权限、数据统计
05
测试与上架
第 11–12 周
防作弊、性能测试、容器部署、Android/iOS 构建、商店审核准备
12 周是有经验的小团队、素材与需求相对稳定时的初步估算,实际周期会受游戏动画质量、规则复杂度、测试覆盖率和应用商店审核影响。
十五、建议的首个可交付版本(MVP)
首个版本建议优先完成 20 个可玩关卡、5 种美食棋子、3 种道具、游客登录、账号绑定、金币商店、排行榜、关卡后台编辑、完整游戏结算和 Docker 部署。待核心循环稳定后,再扩展至 100 关及更多运营系统。
最重要的架构决策是:
关卡数据由后台管理,游戏规则由版本化引擎执行,金币和通关奖励由 Rust 服务端权威结算。
这样后续增加关卡、美食、障碍物和活动时,大部分内容可以通过后台发布,不必每次都重新提交 Android 和 iOS 安装包。
如果下一步进入实际开发,我建议先建立一个包含 flutter_app、backend、admin、deployment 的 Monorepo,并优先实现一条完整链路:后台创建关卡 → Rust 发布接口 → Flutter 加载并游玩 → 服务端验证结算 → MySQL 保存进度 → Redis 更新排行。这条链路跑通后,整个项目的核心技术风险就基本得到验证。
我最推荐的名字是:《彭城消消乐》。
既有徐州地域特色,又能直接体现三消玩法,朗朗上口,适合 Android 和 iOS 游戏品牌。
另外推荐 10 个名字:
| 名称 | 风格 | 特色 |
|---|---|---|
| 彭城消消乐 | 经典休闲 | 徐州文化 + 消除玩法 |
| 徐州有好味 | 萌趣治愈 | 美食特色鲜明,容易传播 |
| 彭城食光 | 国潮文艺 | 美食、时光、城市探索 |
| 徐州味道 | 地域文化 | 简洁大气,品牌延展性强 |
| 彭城食神 | 趣味闯关 | 适合加入厨神挑战和排行榜 |
| 食在彭城 | 国风休闲 | 谐音“实在”,有记忆点 |
| 彭城大胃王 | 轻松搞怪 | 适合美食收集和挑战 |
| 徐州食游记 | 探索冒险 | 适合章节地图与城市解锁 |
| 馋游彭城 | 年轻可爱 | 美食与城市游历结合 |
| 彭城百味 | 精致国潮 | 适合长期运营和美食图鉴 |
最值得考虑的 3 个
彭城
消消乐
🍲
1. 彭城消消乐
首选
玩法清晰,容易搜索和理解,适合全年龄段。
彭城
食光
🥟
2. 彭城食光
更有品牌感,适合精致国潮画风、城市探索和美食图鉴。
徐州
有好味
🥞
3. 徐州有好味
亲切可爱,美食属性最突出,适合休闲小游戏。
我的建议:
- 游戏正式名称:《彭城食光》
- 游戏宣传副标题:徐州美食消消乐
- 宣传语:消出徐州味,闯遍彭城关!
这个组合既有品牌辨识度,也能让玩家快速理解玩法。正式上线前还需要查询游戏名称、商标及应用商店重名情况。
推荐英文名:Pengcheng Food Crush
与中文名《彭城食光》搭配,既体现徐州文化,又突出美食三消玩法。
| 英文名 | 中文含义 | 风格 |
|---|---|---|
| Pengcheng Food Crush | 彭城美食消消乐 | 休闲、直观 |
| Taste of Pengcheng | 彭城之味 | 精致、文化 |
| Pengcheng Yummy | 彭城美味 | 可爱、年轻 |
| Xuzhou Food Crush | 徐州美食消消乐 | 地域鲜明 |
| Yummy Quest | 美味大冒险 | 国际化、闯关 |
| Flavor Crush | 美味消消乐 | 简洁、易传播 |
| Foodie Journey | 美食之旅 | 探索、收集 |
| Yummy Match | 美味配对 | 轻松、休闲 |
| Flavor Quest | 寻味冒险 | 国潮、探索 |
| Pengcheng Bites | 彭城美食记 | 活泼、有辨识度 |
最推荐的品牌组合
彭城食光
Pengcheng Food Crush
A Delicious Match-3 Adventure
消出徐州味,闯遍彭城关!
如果希望未来面向海外市场,我更推荐 Flavor Quest,简短、容易记忆,也方便将游戏从徐州美食扩展到中国各地美食。
如果主要面向国内玩家,则优先选择 Pengcheng Food Crush。
已经生成 《彭城食光》v0.1.0 首版开发工程,包含游戏逻辑、Rust 接口、Vue 管理后台、Flutter 客户端源码,以及 Docker 部署配置。
当前交付状态:离线试玩版已经运行并测试;全栈源码已写入,但尚未完成 Rust、Flutter 编译和真实数据库联调。本次不包含 APK 或 IPA 安装包。
一、下载工程与试玩
pengcheng-foodtime-v0.1.0.zip
包含 71 个文件:源码、20 个示例关卡、数据库迁移、部署配置、测试和使用文档。
下载后用浏览器打开即可体验,无需安装依赖。这个试玩版使用本地金币和进度,不连接真实账号,也不会同步线上排行榜。
README.zh-CN.md · demo-desktop.png
游戏内已经使用你确定的品牌文案:
彭城食光
徐州美食消消乐
消出徐州味,闯遍彭城关!
二、本次已经写入的功能
| 模块 | 首版实现内容 |
|---|---|
| 三消玩法 | 相邻交换、横竖三连、连锁消除、重力补位、无可用操作时重排;无效交换不扣步数 |
| 关卡系统 | 20 个示例关卡,分数、食材收集、冰格清除目标;顺序解锁、最佳分数、星级记录 |
| 道具 | 小锤、棋盘重排、增加 5 步;开局预留道具,结算返还未使用部分 |
| 登录与账号 | 游客、注册、账号密码登录、游客绑定、令牌刷新和退出登录 |
| 金币商店 | 商品列表、道具购买、余额检查、交易流水、重复请求防重复扣款 |
| 排行榜 | 按各关最佳通关分数累计排名,提供前 100 名;Redis 缓存,MySQL 作为数据来源 |
| 管理后台 | 关卡编辑、冰格绘制、JSON 上传、草稿版本、发布和回滚;用户列表、商品价格与上下架、审计记录 |
| Flutter 客户端 | 登录、地图、游戏、商店、排行、账号绑定,以及本机对局恢复 |
| 部署 | 两个 Rust API 实例、Nginx 负载均衡、MySQL、Redis、Docker Compose、HTTPS 配置示例和备份脚本 |
美食棋子目前采用形状+名称+颜色占位,便于区分;还不是最终的原创美食插画。
服务端结算不是直接接收客户端分数
源码中的结算流程是:
请求开始游戏
↓
服务端锁定关卡版本、随机种子和携带道具
↓
客户端运行游戏,记录有效操作
↓
提交交换、道具使用等操作序列
↓
Rust 重放操作,计算实际得分和目标完成情况
↓
数据库事务更新奖励、背包、进度
↓
刷新排行榜缓存
同一局重复提交相同结算会返回原结果,不重复发奖;已结算后修改操作记录会被拒绝。这些后端逻辑已写入源码,仍需在实际运行环境执行联调测试。
三、工程结构
pengcheng-foodtime/
├── backend/ Rust API、权威规则引擎、数据库迁移
├── admin/ Vite + Vue 3 + Element Plus 后台
├── mobile/ Flutter + Flame 客户端
├── demo/ 可独立运行的浏览器试玩
├── levels/ 20 个示例关卡
├── contracts/ 关卡 Schema、跨语言回放测试数据
├── deploy/ Nginx、镜像和 HTTPS 配置
├── scripts/ 初始化、备份、接口联调脚本
├── tests/ JavaScript 规则与浏览器测试
├── docs/ 接口、架构、测试状态和发布清单
└── compose.yaml Docker Compose 编排
后台发布采用不可变版本:修改关卡会生成新版本,发布后用于新对局;玩家正在进行的对局仍使用开始时的版本。
四、在本机启动验证
后端与管理后台
解压后,在安装了 Docker Compose 和 Python 3 的机器上执行:
cd pengcheng-foodtime
# 生成数据库、Redis、JWT 和管理员随机凭据
python3 scripts/init_env.py
# 构建并启动服务
docker compose up -d --build
# 检查容器状态
docker compose ps
默认入口:
管理后台:http://127.0.0.1:8080/
离线试玩:http://127.0.0.1:8080/demo/
后端接口:http://127.0.0.1:8080/api/v1
管理员账号和随机密码在生成的 .env 文件中。首次启动会执行数据库迁移并导入示例关卡;不要把 .env 提交到代码仓库。
Flutter 客户端
安装 Flutter SDK 后,从工程根目录执行:
# 生成 Android / iOS 平台工程,替换为自己的组织标识
python3 scripts/init_mobile.py --org com.yourcompany
cd mobile
flutter pub get
flutter analyze
flutter test
# Android 模拟器连接本机服务
flutter run \
--dart-define=API_BASE_URL=http://10.0.2.2:8080/api/v1
Android/iOS 平台目录需要由上述脚本生成。正式构建还需要配置包名、HTTPS 服务地址和签名;iOS 构建与发布需要 macOS、Xcode,以及相应的 Apple 签名与开发者配置。Flutter Docs
五、实际验证结果与尚未完成的部分
| 验证项目 | 当前结果 |
|---|---|
| JavaScript 规则测试 | 15 / 15 通过 |
| 初始棋盘检查 | 覆盖 2,000 个棋盘,检查无初始消除且存在有效操作 |
| 自动闯关检查 | 覆盖 300 次自动游玩,检查规则状态保持一致 |
| 浏览器交互检查 | 8 / 8 通过,包括通关、购买道具、冰格关卡和重排 |
| 桌面与窄屏布局 | 已检查 1440px 和 390px 视口,无横向溢出 |
| Rust、Flutter 编译与跨语言测试 | 未执行,当前环境没有相应工具链 |
| Vue 依赖安装与生产构建 | 未执行,依赖下载不可用 |
| Docker、MySQL、Redis 端到端联调 | 未执行,已提供联调脚本 |
| Android / iOS 真机与安装包 | 未执行、未生成 |
浏览器检查使用了模拟的本地存储,因此不能据此宣称真实持久化测试已经通过。完整记录在包内的 docs/TEST_STATUS.md。
本版暂未实现四连/五连特殊棋子及组合效果、活动任务、广告、真实支付、周榜和好友榜。20 个关卡是用于验证机制的示例,尚需人工试玩和难度平衡;上线前还需要完成全栈编译、并发与断网测试、最终美术、签名打包及发布验收。