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

422 lines
11 KiB
Markdown
Raw Permalink 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
---
## 🚀 快速开始5分钟运行
### 前置要求
- ✅ 微信开发者工具已安装([下载地址](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)
- ✅ 拥有微信小程序 AppID或使用测试号
### 步骤 1导入项目
1. 打开 **微信开发者工具**
2. 点击 **"导入项目"** 或 **"+"** 按钮
3. 选择目录:`E:\xxcool\project\gratitude.durian.xpcool.com\wechat-miniprogram`
4. 填写 AppID如果没有可先使用测试号
5. 点击 **"导入"**
### 步骤 2配置 AppID如果需要
如果使用的是自己的 AppID需要修改以下文件
**app.json****project.config.json** 中的 `appid` 字段:
```json
{
"appid": "你的AppID"
}
```
### 步骤 3编译并预览
1. 等待项目编译完成(通常几秒)
2. 左侧模拟器会自动显示游戏界面
3. 点击顶部区域掉落水果,观察物理效果和合成逻辑
**✅ 如果看到水果掉落并能合成,核心玩法已跑通!**
---
## 📱 真机测试
### 方法 1扫码预览
1. 在微信开发者工具中点击 **"预览"** 按钮
2. 用微信扫描生成的二维码
3. 在手机上体验游戏
### 方法 2真机调试
1. 点击 **"真机调试"** 按钮
2. 扫码连接真机
3. 可以实时查看控制台日志和性能数据
---
## 🎯 功能测试清单
### ✅ 核心玩法
- [ ] 点击屏幕顶部能掉落水果
- [ ] 水果受重力影响下落
- [ ] 水果与地面、墙壁碰撞正常
- [ ] 相同等级的两个水果接触时自动合成
- [ ] 合成后生成更高等级的水果
- [ ] 分数随合成增加
- [ ] 连击系统正常工作2秒内连续合成
### ✅ Boss 系统
- [ ] Boss 进度条显示正确
- [ ] 投喂达到目标等级的水果时进度增加
- [ ] 进度满时触发通关
### ✅ UI 交互
- [ ] 分数、连击数实时更新
- [ ] 下一个水果预览显示正确
- [ ] 暂停/继续按钮工作正常
- [ ] 道具按钮(炸弹、冰冻)可用
- [ ] 结算面板在通关/失败时显示
### ✅ 音频系统
- [ ] 游戏开始时播放背景音乐
- [ ] 暂停时停止BGM继续时恢复
- [ ] 掉落水果时播放音效
- [ ] 合成时播放音效
- [ ] 通关/失败时播放对应音效
- [ ] 金色传说特效播放特殊音效
> **注意**:音频文件需要手动添加到 `audio/` 目录,详见下方"音频资源配置"章节
### ✅ 广告系统需配置真实广告位ID
- [ ] 复活按钮点击后弹出激励视频
- [ ] 观看完整广告后成功复活
- [ ] 插屏广告在关卡切换时显示
> **注意**广告功能需要开通流量主并配置真实广告位ID
### ✅ 存档系统
- [ ] 游戏进度自动保存
- [ ] 重新进入小游戏时加载上次进度
- [ ] 最高分数、连击记录正确
---
## 🎨 美术资源替换
当前版本使用彩色圆形代表水果,如需替换为精美贴图:
### 水果精灵图规格
| 等级 | 名称 | 推荐尺寸 | 文件名建议 |
|------|------|----------|-----------|
| 1 | 果切丁 | 36x36 | fruit_1.png |
| 2 | 西瓜片 | 50x50 | fruit_2.png |
| 3 | 紫葡萄 | 64x64 | fruit_3.png |
| 4 | 黄柠檬 | 80x80 | fruit_4.png |
| 5 | 红苹果 | 96x96 | fruit_5.png |
| 6 | 甜橙 | 112x112 | fruit_6.png |
| 7 | 粉桃子 | 128x128 | fruit_7.png |
| 8 | 金菠萝 | 152x152 | fruit_8.png |
| 9 | 报恩榴莲 | 180x180 | fruit_9.png |
### 替换步骤
1. 准备9张PNG图片透明背景
2. 放入 `assets/images/` 目录
3. 修改 `pages/game/index.js` 的渲染逻辑,将圆形绘制改为图片绘制:
```javascript
// 原代码(绘制圆形)
ctx.beginPath();
ctx.arc(fruit.x, fruit.y, fruit.radius, 0, 2 * Math.PI);
ctx.fillStyle = fruit.color;
ctx.fill();
// 替换为(绘制图片)
const imgPath = `/assets/images/fruit_${fruit.level}.png`;
ctx.drawImage(imgPath, fruit.x - fruit.radius, fruit.y - fruit.radius,
fruit.radius * 2, fruit.radius * 2);
```
---
## 🔊 音频资源配置
### 必需音频文件
#### BGM背景音乐
- `bgm_main.mp3` - 主游戏BGM循环播放
- `bgm_golden.mp3` - 金色传说BGM可选
- `bgm_result.mp3` - 结算界面BGM可选
#### SFX音效
- `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` - 复活
### 存放路径
将所有音频文件放入 `audio/` 目录:
```
wechat-miniprogram/
└── audio/
├── bgm_main.mp3
├── sfx_drop.mp3
├── sfx_merge.mp3
└── ...(其他音效)
```
### AI 音频生成提示词
可使用以下工具生成音频:
- **Suno AI** / **Udio** - 生成BGM
- **ElevenLabs** - 生成语音
- **Freesound.org** - 免费音效素材
详细提示词请参考项目根目录的 `03_报恩榴莲_音效与台词语料设计.md`
---
## ⚙️ 关键参数调优
所有游戏参数都在 `pages/game/index.js` 中:
### 物理参数
```javascript
updateFruits(dt) {
const gravity = 0.5; // 重力加速度(增大则下落更快)
const damping = 0.98; // 阻尼系数(减小则摩擦更大)
const bounce = 0.3; // 弹性系数(增大则弹跳更高)
const groundY = 600; // 地面Y坐标
// ...
}
```
**调优建议**
- 如果觉得水果下落太慢,增加 `gravity`(如 0.8
- 如果觉得水果弹跳太多,减小 `bounce`(如 0.2
- 如果想让水果更快静止,减小 `damping`(如 0.95
### 关卡配置
```javascript
const LEVEL_CONFIGS = [
{ level: 1, bossName: '贪吃喵星人', targetLevel: 3, feedCount: 3, dropMin: 1, dropMax: 2 },
{ level: 2, bossName: '吃货柴犬', targetLevel: 4, feedCount: 4, dropMin: 1, dropMax: 3 },
{ level: 3, bossName: '美食家熊猫', targetLevel: 5, feedCount: 5, dropMin: 2, dropMax: 4 },
// 可继续添加更多关卡...
];
```
**参数说明**
- `targetLevel`: Boss需要的水果等级玩家需合成到此等级才能投喂
- `feedCount`: 需要投喂的次数
- `dropMin/dropMax`: 掉落水果的等级范围
**难度调整**
- 想降低难度:减小 `targetLevel``feedCount`
- 想提高难度:增大 `targetLevel``feedCount`
### 失败判定
```javascript
checkFailCondition(dt) {
const warningY = 150; // 警戒线Y坐标越小越难
// 超过3秒则失败
if (this.gameState.failTimer >= 3000) {
this.handleGameOver();
}
}
```
**调优建议**
- 想降低难度:增大 `warningY`(如 200或增加超时时间如 5000
- 想提高难度:减小 `warningY`(如 100或减少超时时间如 2000
---
## 📱 微信小游戏上架
### 步骤 1开通流量主可选用于广告变现
1. 登录 [微信公众平台](https://mp.weixin.qq.com/)
2. 进入小程序后台 → 推广 → 流量主
3. 满足条件(累计独立访客 ≥ 1000后申请开通
4. 创建广告位获取广告位ID
### 步骤 2配置广告位ID
修改 `app.js` 中的广告位ID
```javascript
// 激励视频广告(复活用)
this.rewardedVideoAd = wx.createRewardedVideoAd({
adUnitId: '你的激励视频广告位ID' // 替换这里
});
// 插屏广告
this.interstitialAd = wx.createInterstitialAd({
adUnitId: '你的插屏广告位ID' // 替换这里
});
```
### 步骤 3上传代码
1. 在微信开发者工具中点击 **"上传"**
2. 填写版本号和备注
3. 等待上传完成
### 步骤 4提交审核
1. 登录微信公众平台
2. 进入小程序后台 → 版本管理
3. 找到刚上传的版本,点击 **"提交审核"**
4. 填写审核信息(游戏分类、服务类目等)
5. 等待审核通过通常1-3个工作日
### 步骤 5发布上线
审核通过后,在后台点击 **"发布"** 即可上线。
---
## 🐛 常见问题排查
### Q1: 水果不掉下来?
**检查清单**
- [ ] Canvas 上下文是否正确初始化(`wx.createCanvasContext`
- [ ] `onTouchStart` 事件是否绑定到 canvas
- [ ] `updateFruits` 函数是否在每帧调用
### Q2: 合成判定不触发?
**检查清单**
- [ ] `checkMerges()` 是否在每帧调用
- [ ] 距离判断阈值是否合理(当前为 `radius1 + radius2 - 5`
- [ ] 水果的 `level` 属性是否正确设置
### Q3: 音频不播放?
**可能原因**
- 音频文件不存在于 `audio/` 目录
- 文件路径错误(注意大小写)
- 微信开发者工具中禁用了音频(检查设置)
- 真机上需要用户交互后才能播放音频(这是微信的限制)
**解决方法**
- 确认音频文件存在且格式正确MP3
- 检查 `AudioManager.js` 中的路径映射
- 在真机上测试(模拟器音频支持有限)
### Q4: 广告不显示?
**可能原因**
- 未开通流量主
- 广告位ID错误或未配置
- 使用的是模拟器而非真机(部分广告类型不支持模拟器)
- 广告加载失败(网络问题或广告库存不足)
**解决方法**
- 确认已开通流量主并配置正确的广告位ID
- 在真机上测试
- 查看控制台是否有广告加载失败的错误信息
### Q5: 存档不生效?
**检查清单**
- [ ] `app.saveGameData()` 是否在适当时机调用
- [ ] `wx.setStorageSync` 是否执行成功
- [ ] 重新进入时是否调用 `app.loadGameData()`
---
## 📊 性能优化建议
### 1. 限制同屏水果数量
```javascript
// 在 dropFruit 前检查
if (this.gameState.fruits.length >= 50) {
wx.showToast({ title: '水果太多了', icon: 'none' });
return;
}
```
### 2. 对象池优化(高级)
对于频繁创建/销毁的水果可以使用对象池复用节点减少GC压力。
### 3. 降低渲染频率
如果不需要60fps可以降低渲染频率
```javascript
startGameLoop() {
const loop = () => {
if (!this.data.isPaused) {
this.update();
this.render();
}
// 降低到30fps
setTimeout(() => requestAnimationFrame(loop), 33);
};
loop();
}
```
### 4. 使用 Canvas 离屏渲染
对于复杂的特效可以先渲染到离屏Canvas再绘制到主Canvas。
---
## 📞 技术支持
### 官方文档
- [微信小程序开发文档](https://developers.weixin.qq.com/miniprogram/dev/framework/)
- [Canvas API 参考](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.createCanvasContext.html)
- [音频API参考](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createInnerAudioContext.html)
### 社区支持
- [微信开放社区](https://developers.weixin.qq.com/community/)
- [QoderWork 论坛](https://forum.qoder.com/)
---
## 🎉 下一步行动
1. **立即测试**:按照"快速开始"导入项目并运行
2. **替换美术资源**准备9个水果精灵图和Boss图片
3. **配置音频**:生成或下载音频文件放入 `audio/` 目录
4. **真机测试**:扫码在手机上体验
5. **配置广告**可选开通流量主并配置广告位ID
6. **提交审核**:上传代码并提交微信审核
**祝你上架顺利!🚀**
---
**项目版本**v1.0
**最后更新**2026-08-14
**适用平台**:微信小程序
**许可证**MIT