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

12 KiB
Raw Blame History

微信小游戏测试与部署指南

📋 测试前准备

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: 构建微信小游戏包

# 方法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 编译失败
  • 微信环境兼容性问题

排查步骤:

// 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 未替换
  • 模拟器测试(广告只在真机显示)
  • 网络问题
  • 广告未预加载

排查步骤:

// 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:
// AdManager.ts
private static readonly AD_UNIT_ID_REVIVE = 'adunit-xxxxxxxxxxxx'; // 替换为真实ID
  1. 真机测试(不要依赖模拟器)

  2. 检查网络连接WiFi/4G

  3. 提前预加载广告:

// 在游戏启动3秒后预加载
setTimeout(() => {
    AdManager.preloadAds();
}, 3000);

问题3: 内存泄漏

症状:

  • 长时间游戏后卡顿
  • 切换场景后内存不下降
  • 最终导致崩溃

排查工具:

// 添加内存监控
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);
    }
}

解决方案:

// 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 中实现,确保以下代码存在:

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个关卡
- 广告系统接入
- 存档系统
  1. 点击「上传」
  2. 等待上传完成约1-5分钟

方法2: 命令行上传(自动化)

# 需要安装 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. 登录 微信公众平台
  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 上报)

// 示例:上报性能数据
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 合作

📊 数据分析模板

关键事件埋点

// 游戏启动
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. 持续运营:数据驱动迭代,快速试错

祝《报恩榴莲》上线顺利,大获成功! 🎉🍈