# 微信小游戏测试与部署指南 ## 📋 测试前准备 ### 1. 环境检查清单 #### 开发环境 - [ ] Cocos Creator 3.8 已安装 - [ ] 微信开发者工具已安装(最新版本) - [ ] Node.js 14+ 已安装 - [ ] 项目 AppID: `wxb2b7651c561f9d53` #### 代码准备 - [ ] 所有 TypeScript 编译通过,无错误 - [ ] 广告位 ID 已替换为真实值 - [ ] 移除或注释掉所有 `console.log`(生产环境) - [ ] 版本号已更新(package.json / version.json) #### 资源准备 - [ ] 所有图片已压缩(推荐使用 TinyPNG) - [ ] 音频文件已优化(MP3 格式,适当比特率) - [ ] 图标已准备(200x200 PNG,用于微信后台) - [ ] 截图已准备(5张 1280x720 PNG) --- ## 🧪 本地测试流程 ### 步骤1: 构建微信小游戏包 ```bash # 方法1: 使用提供的构建脚本(推荐) .\build-wechat.ps1 -Version "1.0.0" # 方法2: 使用 Cocos Creator GUI # 1. 打开项目 # 2. 菜单栏: 项目 → 构建发布 # 3. 选择平台: WeChat Game # 4. 点击「构建」 ``` ### 步骤2: 用微信开发者工具打开 1. 启动微信开发者工具 2. 点击「+」→「导入项目」 3. 选择目录: `build/wechatgame` 4. AppID: `wxb2b7651c561f9d53` 5. 点击「导入」 ### 步骤3: 模拟器测试 在微信开发者工具中测试以下内容: #### 基础功能 - [ ] 游戏能正常启动(3秒内) - [ ] 主界面显示正常 - [ ] 点击「开始游戏」进入关卡 - [ ] 水果掉落和合成逻辑正常 - [ ] Boss 饱食度系统工作 - [ ] 通关/失败判定正确 #### UI 交互 - [ ] 按钮点击有反馈 - [ ] 面板打开/关闭动画流畅 - [ ] 分数实时更新 - [ ] 道具使用正常 #### 音频系统 - [ ] BGM 正常播放 - [ ] 音效触发正常 - [ ] 音量控制有效 - [ ] 静音功能正常 #### 存档系统 - [ ] 游戏进度自动保存 - [ ] 重新进入游戏能加载存档 - [ ] 最高分记录正确 - [ ] 图鉴解锁状态保持 ### 步骤4: 真机测试(必须) **重要**: 广告在模拟器中无法显示,必须真机测试! #### 生成预览二维码 1. 微信开发者工具顶部点击「预览」 2. 等待构建完成 3. 扫描二维码 #### 真机测试清单 ##### iOS 设备(iPhone 8 或以上) - [ ] 游戏启动时间 < 3秒 - [ ] 帧率稳定 60 FPS - [ ] 内存占用 < 200 MB - [ ] 触摸响应灵敏 - [ ] 音频播放正常 - [ ] 广告能正常展示(激励视频 + 插屏) ##### Android 设备(中高端机型) - [ ] 游戏启动时间 < 3秒 - [ ] 帧率稳定 60 FPS - [ ] 内存占用 < 300 MB - [ ] 触摸响应灵敏 - [ ] 音频播放正常 - [ ] 广告能正常展示 ##### 低端机测试(可选但推荐) - [ ] 降级到 30 FPS 后流畅运行 - [ ] 减少水果数量后不卡顿 - [ ] 内存占用可控(不崩溃) --- ## 🐛 常见问题排查 ### 问题1: 游戏启动黑屏 **可能原因**: - 资源路径错误 - TypeScript 编译失败 - 微信环境兼容性问题 **排查步骤**: ```javascript // 1. 在 game.js 添加日志 console.log('[Game] 开始加载...'); // 2. 在 main.js 添加日志 class Main { constructor() { console.log('[Main] 构造函数调用'); this.initWXEnvironment(); console.log('[Main] 微信环境初始化完成'); } } ``` **解决方案**: - 检查 `project.config.json` 中的 `appid` 是否正确 - 确认所有资源文件在 `res` 目录下 - 查看控制台错误信息 ### 问题2: 广告不显示 **可能原因**: - 广告位 ID 未替换 - 模拟器测试(广告只在真机显示) - 网络问题 - 广告未预加载 **排查步骤**: ```typescript // AdManager.ts 中添加详细日志 static showReviveAd(onReward?: () => void, onClose?: () => void): void { console.log('[AdManager] 尝试展示复活广告'); console.log('[AdManager] 广告实例:', this._reviveAd); if (!this._reviveAd) { console.error('[AdManager] 广告实例为空,可能未初始化'); return; } // ... 其余代码 } ``` **解决方案**: 1. 确认已替换广告位 ID: ```typescript // AdManager.ts private static readonly AD_UNIT_ID_REVIVE = 'adunit-xxxxxxxxxxxx'; // 替换为真实ID ``` 2. 真机测试(不要依赖模拟器) 3. 检查网络连接(WiFi/4G) 4. 提前预加载广告: ```typescript // 在游戏启动3秒后预加载 setTimeout(() => { AdManager.preloadAds(); }, 3000); ``` ### 问题3: 内存泄漏 **症状**: - 长时间游戏后卡顿 - 切换场景后内存不下降 - 最终导致崩溃 **排查工具**: ```typescript // 添加内存监控 class MemoryMonitor { static start() { setInterval(() => { if (wx.getSystemInfoSync) { const info = wx.getSystemInfoSync(); const memoryMB = info.memoryUsage / 1024 / 1024; console.log(`[Memory] 当前内存: ${memoryMB.toFixed(1)} MB`); if (memoryMB > 180) { console.warn('[Memory] ⚠️ 内存警告!'); } } }, 10000); } } ``` **解决方案**: ```typescript // 1. 场景切换时清理资源 onDestroy() { // 停止所有定时器 this.unscheduleAllCallbacks(); // 移除所有子节点 this.node.removeAllChildren(); // 释放资源 resources.releaseAll(); // 触发 GC if (wx.triggerGC) { setTimeout(() => wx.triggerGC(), 500); } } // 2. 对象池管理 class ObjectPool { clear() { this.pool.forEach(obj => { if (obj.destroy) { obj.destroy(); } }); this.pool = []; } } ``` ### 问题4: 音频中断后不恢复 **症状**: - 来电后 BGM 不继续播放 - 切换到其他应用再返回,无声 **解决方案**: 已在 `AudioManager.ts` 中实现,确保以下代码存在: ```typescript private _initWeChatAudio(): void { // 监听音频中断开始 if (wx.onAudioInterruptionBegin) { wx.onAudioInterruptionBegin(() => { this._onAudioInterruptBegin(); }); } // 监听音频中断结束 if (wx.onAudioInterruptionEnd) { wx.onAudioInterruptionEnd(() => { this._onAudioInterruptEnd(); }); } } private _onAudioInterruptEnd(): void { // 恢复 BGM if (this._bgmWasPlaying && !this._muted) { this._bgmSource?.resume(); } } ``` --- ## 📤 上传到微信后台 ### 步骤1: 准备提审材料 #### 游戏截图(5张) 要求: - 尺寸:1280x720 或更高 - 格式:PNG 或 JPG - 内容:真实 gameplay 截图,包含: 1. 主界面 2. 游戏进行中 3. 金色传说特效 4. Boss 投喂界面 5. 结算面板 #### 游戏简介 ``` 《报恩榴莲》是一款创新的三三合成益智小游戏。 玩法特色: 🎮 三个相同水果碰在一起自动合成更高级水果 🍉 9级水果链,终极形态是拟人化报恩榴莲 👾 20个可爱 Boss,投喂它们通关 ✨ 合成终极水果触发「金色传说」史诗特效 💎 收集图鉴,解锁所有水果形态 轻松休闲,适合碎片时间游玩~ ``` #### 分类选择 - 一级分类:游戏 - 二级分类:休闲 → 益智 ### 步骤2: 上传版本 #### 方法1: 微信开发者工具上传 1. 点击顶部「上传」按钮 2. 填写版本号:`1.0.0` 3. 填写版本备注: ``` v1.0.0 首次提交 - 核心三三合成玩法 - 20个关卡 - 广告系统接入 - 存档系统 ``` 4. 点击「上传」 5. 等待上传完成(约1-5分钟) #### 方法2: 命令行上传(自动化) ```bash # 需要安装 miniprogram-ci npm install -g miniprogram-ci # 上传 miniprogram-ci upload \ --pp ./build/wechatgame \ --pkp private.key \ --appid wxb2b7651c561f9d53 \ --version 1.0.0 \ --desc "v1.0.0 首次提交" ``` ### 步骤3: 提交审核 1. 登录 [微信公众平台](https://mp.weixin.qq.com/) 2. 左侧菜单:管理 → 版本管理 3. 找到刚上传的版本,点击「提交审核」 4. 填写审核信息: - **功能页面**:列出所有可访问的页面路径 - **测试账号**:无需提供(单机游戏) - **补充说明**: ``` 纯单机益智游戏,无需特殊权限。 广告位已配置,可在真机测试中查看。 ``` 5. 上传截图(5张) 6. 确认分类正确 7. 点击「提交」 ### 审核时间 - **通常**:1-3个工作日 - **加急**:联系客服(需理由) --- ## ✅ 审核通过后的操作 ### 步骤1: 发布版本 1. 收到审核通过通知 2. 登录微信公众平台 3. 版本管理 → 找到通过的版本 4. 点击「全量发布」 ### 步骤2: 灰度发布(推荐) 首次发布建议先灰度测试: 1. 点击「灰度发布」 2. 设置比例:10% 3. 观察数据 24-48 小时 4. 无问题后全量发布 ### 步骤3: 数据监控 发布后关注以下指标: #### 关键指标(微信公众平台查看) - **新增用户**:日新增、周新增 - **活跃用户**:DAU、WAU - **留存率**:次日留存、7日留存 - **使用时长**:平均单次时长 - **广告收入**:eCPM、总收入 #### 性能指标(通过 wx.reportAnalytics 上报) ```typescript // 示例:上报性能数据 wx.reportAnalytics('perf_data', { fps: 60, memory_mb: 150, level: 5, play_time_sec: 300 }); ``` --- ## 🔧 运营与维护 ### 日常维护 #### 每周任务 - [ ] 查看用户反馈(公众号留言、客服消息) - [ ] 分析留存率数据 - [ ] 监控广告 eCPM - [ ] 检查崩溃率(目标 < 1%) #### 每月任务 - [ ] 规划新版本内容 - [ ] A/B 测试广告频控 - [ ] 优化低留存关卡 - [ ] 更新排行榜数据 ### 版本迭代策略 #### v1.1.0 建议内容 - 新增 10 个关卡(21-30) - 新增 3 种道具 - 优化新手引导 - 修复已知 bug #### v1.2.0 建议内容 - 每日挑战模式 - 好友排行榜 - 成就系统 - 季节性活动 ### 用户获取 #### 免费渠道 1. **微信搜索优化** - 游戏名称包含关键词:「合成」「榴莲」「休闲」 - 简介优化 SEO 2. **社交分享** - 设计分享诱因:「我合成了报恩榴莲,你也来试试!」 - 分享奖励:金币或道具 3. **微信群传播** - 制作有趣的游戏片段 GIF - 在相关群分享 #### 付费渠道(后期) 1. 微信朋友圈广告 2. 小程序互推 3. KOL 合作 --- ## 📊 数据分析模板 ### 关键事件埋点 ```typescript // 游戏启动 wx.reportAnalytics('game_start', { level: currentLevel, timestamp: Date.now() }); // 关卡完成 wx.reportAnalytics('level_complete', { level: levelNumber, score: finalScore, time_used: gameTime, continues_used: continueCount }); // 广告展示 wx.reportAnalytics('ad_shown', { ad_type: 'rewarded_video', placement: 'game_over' }); // 广告完成 wx.reportAnalytics('ad_completed', { ad_type: 'rewarded_video', reward_given: true }); // 道具使用 wx.reportAnalytics('item_used', { item_id: itemId, level: currentLevel }); ``` ### 数据看板建议 | 指标 | 目标值 | 监控频率 | |------|--------|----------| | 次日留存 | > 30% | 每日 | | 7日留存 | > 10% | 每周 | | 平均时长 | > 5分钟 | 每日 | | 广告完成率 | > 60% | 每日 | | eCPM | > ¥50 | 每周 | | 崩溃率 | < 1% | 每日 | --- ## 🎯 总结 ### 上线前最后检查 - [ ] 所有功能在真机测试通过 - [ ] 广告能正常展示和完成 - [ ] 存档系统稳定 - [ ] 包体大小符合规范(主包 ≤ 20MB) - [ ] 启动时间 < 3秒 - [ ] 帧率稳定 60 FPS - [ ] 内存占用合理 - [ ] 提审材料准备齐全 ### 成功要素 1. **核心玩法**:三三合成差异化,有记忆点 2. **情感连接**:报恩榴莲 IP,建立共鸣 3. **传播性**:金色传说名场面,适合短视频 4. **商业化**:广告频控合理,不影响体验 5. **持续运营**:数据驱动迭代,快速试错 --- **祝《报恩榴莲》上线顺利,大获成功!** 🎉🍈✨