gratitude.durian.xpcool.com/wechat-miniprogram/README.md
2026-08-14 18:01:45 +08:00

374 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 报恩榴莲 - 微信小程序原生版本
> 🎮 一款纯原生实现的三三合成休闲小游戏,无需游戏引擎,直接在微信开发者工具中运行
## ✨ 项目特点
-**零依赖** - 不需要 Cocos Creator、Unity 等任何游戏引擎
-**纯原生** - 使用微信小程序原生 Canvas API 绘制
-**轻量级** - 代码简洁,性能优秀
-**快速上手** - 直接在微信开发者工具中打开即可运行
-**完整功能** - 包含物理系统、合成逻辑、音频管理、广告集成、存档系统等
-**音频支持** - 完整的BGM和音效管理系统需配置音频文件
## 📁 项目结构
```
wechat-miniprogram/
├── app.json # 小程序全局配置
├── app.js # 小程序入口和全局逻辑
├── project.config.json # 项目配置文件
├── sitemap.json # 站点地图配置
├── pages/
│ ├── game/
│ │ ├── index.wxml # 游戏页面结构
│ │ ├── index.wxss # 游戏页面样式
│ │ ├── index.js # 游戏核心逻辑(含音频集成)
│ │ └── index.json # 页面配置
│ └── index/
│ ├── index.wxml # 主菜单页面结构
│ ├── index.wxss # 主菜单页面样式
│ ├── index.js # 主菜单逻辑
│ └── index.json # 页面配置
├── utils/
│ └── AudioManager.js # 音频管理器BGM/SFX/Voice
├── images/ # 图片资源目录(可选)
└── audio/ # 音频资源目录(可选)
├── bgm_main.mp3 # 主BGM
├── sfx_drop.mp3 # 掉落音效
├── sfx_merge.mp3 # 合成音效
└── ...
```
## 🚀 快速开始
### 步骤 1安装微信开发者工具
如果没有安装,请先下载并安装 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)
### 步骤 2导入项目
1. 打开微信开发者工具
2. 点击 **"导入项目"**
3. 选择项目目录:**`E:\xxcool\project\gratitude.durian.xpcool.com\wechat-miniprogram`**
4. 填写 AppID
- 测试阶段:可以使用 **测试号**(点击"注册测试号"
- 正式开发:使用你的真实小程序 AppID
5. 点击"导入"
### 步骤 3运行预览
导入成功后,点击工具栏的 **"编译"** 按钮,即可在模拟器中看到游戏运行。
### 步骤 4真机测试
1. 点击工具栏的 **"预览"** 按钮
2. 用手机微信扫码
3. 在手机上体验游戏
## 🎯 游戏功能
### 页面结构
- **主菜单** (`pages/index/`) - 游戏入口,显示最高分数、连击记录,提供开始游戏按钮
- **游戏页** (`pages/game/`) - 核心游戏界面包含掉落、合成、Boss投喂等玩法
### 核心玩法
1. **点击屏幕顶部** - 掉落水果
2. **三个相同等级水果相邻** - 自动合成更高等级
3. **投喂Boss** - 合成出指定等级水果可投喂Boss
4. **通关条件** - 投喂Boss达到指定次数
### 道具系统
- 💣 **炸弹** - 移除最低等级的水果
- ❄️ **冰冻** - 暂停所有水果运动3秒
- 🎬 **看视频复活** - 观看激励视频广告后复活
### 连击系统
- 2秒内连续合成触发连击
- 连击数越高,得分倍率越高
- 最高连击记录会保存
### 金色传说
- 合成出 Lv9 "报恩榴莲" 时触发
- 播放特殊特效和音效
- Boss 立即饱食度+1
## ⚙️ 配置说明
### 修改 AppID
编辑 `project.config.json`
```json
{
"appid": "wxb2b7651c561f9d53", // 替换为你的真实 AppID
"projectname": "grateful-durian-miniprogram"
}
```
### 配置广告位 ID
编辑 `app.js`,找到以下位置并替换:
```javascript
// 第 58 行 - 激励视频广告
this.globalData.rewardedVideoAd = wx.createRewardedVideoAd({
adUnitId: 'adunit-xxxxxxxxxxxxxxxx' // TODO: 替换为真实广告位ID
});
// 第 78 行 - 插屏广告
this.globalData.interstitialAd = wx.createInterstitialAd({
adUnitId: 'adunit-yyyyyyyyyyyyyyyy' // TODO: 替换为真实广告位ID
});
```
获取广告位 ID
1. 登录 [微信公众平台](https://mp.weixin.qq.com/)
2. 进入"推广" → "流量主"
3. 创建广告位并复制 ID
⚠️ **注意**:需要 ≥ 1000 UV 才能开通流量主
### 添加音频资源
将音频文件放入 `audio/` 目录:
```
audio/
├── bgm_main.mp3 # 主BGM循环播放
├── bgm_golden.mp3 # 金色传说BGM可选
├── bgm_result.mp3 # 结算BGM可选
├── sfx_drop.mp3 # 掉落音效
├── sfx_merge.mp3 # 合成音效
├── sfx_combo2.mp3 # 2连击音效可选
├── sfx_combo3.mp3 # 3连击音效可选
├── sfx_combo4.mp3 # 4连击音效可选
├── sfx_combo5.mp3 # 5连击音效可选
├── sfx_golden.mp3 # 金色传说音效
├── sfx_clear.mp3 # 通关音效
├── sfx_gameover.mp3 # 失败音效
└── sfx_revive.mp3 # 复活音效(可选)
```
**音频管理器已集成**
- 游戏启动时自动播放 BGM
- 暂停时停止 BGM继续时恢复
- 所有音效通过 `AudioManager.js` 统一管理
- 页面卸载时自动释放音频资源
**AI 生成提示词**:详细的声音设计指南请参考项目根目录的 `03_报恩榴莲_音效与台词语料设计.md`
### 调整游戏参数
编辑 `pages/game/index.js`
```javascript
// 第 5 行 - 水果配置
const FRUIT_CONFIGS = [
{ level: 1, name: '果切丁', radius: 18, color: '#FF6B6B', score: 1 },
// ... 可以修改半径、颜色、分数
];
// 第 15 行 - 关卡配置
const LEVEL_CONFIGS = [
{
level: 1,
bossName: '贪吃喵星人',
targetLevel: 3, // 需要合成的水果等级
feedCount: 3, // 需要投喂次数
dropMin: 1, // 掉落水果最小等级
dropMax: 2 // 掉落水果最大等级
},
// ... 可以添加更多关卡
];
// 第 150 行 - 物理参数
const gravity = 0.5; // 重力加速度
const damping = 0.98; // 阻尼系数
const bounce = 0.3; // 弹性系数
```
## 🎨 自定义美术资源
### 替换水果贴图(可选)
如果想使用图片而非纯色圆形:
1. 准备9张水果图片PNG格式命名为 `fruit_1.png` ~ `fruit_9.png`
2. 放入 `images/` 目录
3.`pages/game/index.js``render()` 方法中修改绘制逻辑:
```javascript
// 原来绘制圆形
ctx.beginPath();
ctx.arc(fruit.x, fruit.y, fruit.radius, 0, 2 * Math.PI);
ctx.fillStyle = fruit.color;
ctx.fill();
// 改为绘制图片
const imgPath = `/images/fruit_${fruit.level}.png`;
ctx.drawImage(imgPath, fruit.x - fruit.radius, fruit.y - fruit.radius,
fruit.radius * 2, fruit.radius * 2);
```
## 📊 性能优化建议
### 1. 限制同屏水果数量
`pages/game/index.js` 中添加:
```javascript
dropFruit(x, level) {
// 限制最多50个水果
if (this.gameState.fruits.length >= 50) {
console.warn('[Game] 水果数量已达上限');
return;
}
// ... 原有逻辑
}
```
### 2. 降低渲染频率
如果低端机卡顿,可以降低渲染帧率:
```javascript
startGameLoop() {
let lastTime = Date.now();
const loop = () => {
const now = Date.now();
// 每33ms渲染一次约30fps
if (now - lastTime >= 33) {
if (!this.data.isPaused) {
this.update();
this.render();
}
lastTime = now;
}
requestAnimationFrame(loop);
};
loop();
}
```
### 3. 减少粒子特效
金色传说特效可以简化或禁用。
## 🔧 常见问题
### Q1: 编译时报错 "Canvas not found"
**原因**WXML 中的 canvas-id 与 JS 中的不一致
**解决**:确保 `index.wxml``index.js` 中的 canvas-id 都是 `'gameCanvas'`
### Q2: 真机测试时广告不显示
**可能原因**
- 未开通流量主(需 ≥ 1000 UV
- 使用的是模拟器而非真机
- 广告位 ID 错误
**解决**
1. 确保已申请微信流量主资格
2. 使用真机扫码测试
3. 检查 `app.js` 中的广告位 ID 是否正确
### Q3: 音频不播放
**原因**
- 音频文件路径错误
- 文件格式不支持(建议使用 MP3
- 音量设置为 0
**解决**
1. 确保音频文件在 `audio/` 目录
2. 使用 MP3 格式
3. 检查手机音量是否开启
### Q4: 水果合成判定不准确
**解决**:调整 `checkMerges()` 方法中的距离阈值:
```javascript
// 原来
if (distance < f1.radius + f2.radius - 5) {
// 改为(更宽松)
if (distance < f1.radius + f2.radius - 10) {
```
### Q5: 低端机卡顿严重
**解决**
1. 降低同屏水果数量至 30
2. 降低渲染帧率至 30fps
3. 关闭调试日志(发布前)
## 📱 提交审核
### 准备材料
1. **5张 gameplay 截图** - 展示不同关卡的游戏画面
2. **应用描述** - 简要介绍游戏玩法
3. **分类选择** - 游戏 → 休闲
### 提交步骤
1. 在微信开发者工具中点击 **"上传"**
2. 填写版本号(如 1.0.0)和版本描述
3. 登录 [微信公众平台](https://mp.weixin.qq.com/)
4. 进入"管理" → "版本管理"
5. 找到刚上传的版本,点击"提交审核"
6. 填写审核信息并提交
审核通常需要 **1-3个工作日**
## 🆚 与 Cocos Creator 版本对比
| 特性 | 微信小程序原生版 | Cocos Creator 版 |
|------|------------------|------------------|
| 学习成本 | ⭐ 低只需JS基础 | ⭐⭐⭐ 高需学引擎API |
| 开发速度 | ⭐⭐⭐ 快 | ⭐⭐ 中等 |
| 代码量 | ~500行 | ~2000行 |
| 包体积 | ~50KB | ~2MB+ |
| 性能 | ⭐⭐⭐ 优秀 | ⭐⭐ 良好 |
| 跨平台 | ❌ 仅微信 | ✅ 多平台支持 |
| 物理引擎 | 简单自实现 | Box2D 完整支持 |
| 动画系统 | 手动实现 | Timeline 编辑器 |
| 适合场景 | 简单休闲游戏 | 复杂商业游戏 |
## 📞 技术支持
如遇问题,请查阅:
- 📖 [微信小程序官方文档](https://developers.weixin.qq.com/miniprogram/dev/framework/)
- 📖 [Canvas API 文档](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html)
- 💬 [微信开放社区](https://developers.weixin.qq.com/community/)
## 🎉 下一步计划
- [ ] 添加更多关卡目前只有3关示例
- [ ] 完善音频系统(加载真实音频文件)
- [ ] 添加成就系统
- [ ] 添加排行榜功能
- [ ] 优化物理引擎(更真实的碰撞检测)
- [ ] 添加粒子特效(合成时的光效)
---
**祝你开发顺利!** 🎮🚀
**项目版本**v1.0
**最后更新**2026-08-14
**适用平台**:微信小程序
**许可证**MIT