Files
tankwar_proj/.codebuddy/plan/monetization/task-item.md
T
2026-04-10 22:59:39 +08:00

13 KiB
Raw Blame History

实施计划:坦克大作战商业化

基于 requirements.md 商业化需求文档,按版本阶段拆解为可执行的编码任务。


V1.0 基础版 — 激励广告 + 插屏广告

  • 1. 扩展 AdManager,实现场景化广告触发与频控机制

    • 1.1 在 js/managers/AdManager.js 中新增广告场景枚举(REVIVE、DOUBLE_REWARD、CHEST_SPEED、STAMINA、FREE_GIFT),为每个场景维护独立的冷却计时器(15分钟内不重复展示同一场景广告)

      • 新增 _sceneCooldowns Map 和 canShowScene(sceneType) 方法
      • 新增 showRewardedVideoForScene(sceneType, callback) 方法,内部调用 canShowScene 检查后再调用 showRewardedVideo
      • 新增每日广告次数计数(体力恢复场景每日上限5次),使用 StorageManager 持久化当日计数
      • 需求:1.6 广告体验优化(验收标准15、16、17)、1.4 体力恢复广告(验收标准12)
    • 1.2 在 js/managers/AdManager.js 中实现广告预加载机制

      • 新增 preloadRewardedVideo() 方法,在关卡加载时提前调用
      • 在 GameScene 和 TeamGameScene 的初始化阶段调用预加载
      • 需求:1.6 广告体验优化(验收标准15)
    • 1.3 优化插屏广告频控逻辑

      • 将现有的 _gamesPlayed 计数改为基于"距上次展示的局数"判断(每3局展示一次)
      • 确保 _adFreeEnabled 标志正确跳过所有插屏广告
      • 插屏广告加载失败时静默跳过,不阻塞流程
      • 需求:2 插屏广告(验收标准1、2、3、4)
  • 2. 实现复活续关广告功能

    • 2.1 在 js/scenes/GameScene.js 的玩家死亡流程中集成复活广告

      • 在玩家生命数降为0时,弹出"观看广告复活"弹窗(而非直接进入失败结算)
      • 新增 _showReviveAdDialog() 方法,展示选择界面(观看广告 / 放弃)
      • 新增 _reviveAdUsed 标志,确保每关最多使用1次复活
      • 观看完成后调用 _revivePlayer() 方法:保留火力等级,在出生点重生,恢复1条生命
      • 选择放弃或广告不可用时,正常进入失败结算
      • 需求:1.1 复活续关广告(验收标准1、2、3、4)
    • 2.2 在 js/scenes/TeamGameScene.js 中同步实现 PvP 模式的复活广告(如适用)

      • 根据 PvP 模式规则决定是否支持复活广告(可配置开关)
      • 需求:1.1 复活续关广告(验收标准1)
  • 3. 实现双倍结算广告功能

    • 3.1 在 js/scenes/ResultScene.js 的结算界面中添加"双倍奖励"按钮

      • 在结算界面新增"观看广告获得双倍奖励"按钮
      • 调用 AdManager.showRewardedVideoForScene('DOUBLE_REWARD', callback)
      • 观看完成后将金币和经验值翻倍显示并发放
      • 广告加载失败时提示"广告暂时不可用",按正常倍率发放
      • 需求:1.2 双倍结算广告(验收标准5、6、7)
    • 3.2 在 js/scenes/TeamResultScene.js 中同步实现 PvP 结算的双倍奖励广告

      • 需求:1.2 双倍结算广告(验收标准5、6、7)
  • 4. 在结算流程中集成插屏广告触发

    • 在 ResultScene 和 TeamResultScene 退出关卡时调用 AdManager.showInterstitial()
    • 确保去广告特权用户不展示
    • 需求:2 插屏广告(验收标准1、2、3)

V1.5 内购版 — 货币体系 + 支付 + 皮肤商店

  • 5. 实现货币系统(CurrencyManager

    • 5.1 新建 js/managers/CurrencyManager.js,实现金币和钻石的管理

      • 实现 getGold() / addGold(amount) / spendGold(amount) 方法
      • 实现 getDiamonds() / addDiamonds(amount) / spendDiamonds(amount) 方法
      • 所有货币变动通过 EventBus 发送事件(currency:gold:changedcurrency:diamonds:changed),供 UI 监听更新
      • 使用 StorageManager 持久化货币数据,并纳入云同步数据
      • 设置货币上限防止溢出(金币上限999999,钻石上限99999
      • 需求:3.1 金币系统(验收标准1、2、3)、3.2 钻石系统(验收标准5、6、7)
    • 5.2 在 js/base/GameGlobal.js 中注册 CurrencyManager 实例

      • 在全局初始化流程中创建并挂载 GameGlobal.currencyManager
      • 需求:3.1、3.2
    • 5.3 在 ResultScene / TeamResultScene 的结算逻辑中集成金币发放

      • 根据击杀数、通关时间等计算金币奖励并调用 CurrencyManager.addGold()
      • 需求:3.1 金币系统(验收标准1
  • 6. 实现体力系统(StaminaManager

    • 6.1 新建 js/managers/StaminaManager.js,实现体力管理

      • 实现 getStamina() / consumeStamina() / recoverStamina(amount) 方法
      • 实现自然恢复逻辑:每6分钟恢复1点,上限20点,使用定时器 + 离线时间差计算
      • 实现钻石购买体力:每日上限3次,价格递增(5/10/20钻石)
      • 实现广告恢复体力:每次恢复5点,每日上限5次
      • 通过 EventBus 发送 stamina:changed 事件
      • 使用 StorageManager 持久化体力值和上次恢复时间戳
      • 需求:8 体力系统(验收标准1、2、3、4、5)、1.4 体力恢复广告(验收标准10、11、12)
    • 6.2 在 GameScene 开始关卡前检查体力

      • 进入经典模式/无尽模式前调用 StaminaManager.consumeStamina()
      • 体力不足时弹出恢复选项弹窗(等待/广告/钻石)
      • PvP 模式(TeamGameScene)不消耗体力
      • 需求:8 体力系统(验收标准1、2、5)
  • 7. 实现支付模块(PaymentManager

    • 7.1 新建 js/managers/PaymentManager.js,封装微信支付接口

      • 封装 wx.requestMidasPayment 调用,实现 purchase(productId, callback) 方法
      • 实现订单状态查询和补发逻辑(网络中断后自动重试)
      • 实现商品配置表:去广告特权(¥30)、月卡(¥12)、钻石包(¥6/¥30/¥68)、新手礼包(¥1)、皮肤礼包(¥18-68)、高级通行证(¥18)
      • 购买成功后通过 EventBus 发送 purchase:completed 事件
      • 将购买记录同步至 StorageManager 和云端
      • 需求:4.6 支付与安全(验收标准15、16、17)
    • 7.2 实现去广告特权购买逻辑

      • 购买成功后调用 AdManager.enableAdFree()
      • 保留激励视频入口,仅移除插屏广告
      • 需求:4.1 去广告特权(验收标准1、2、3)
    • 7.3 实现钻石充值包购买逻辑

      • 按规格发放钻石(60/360/880),首充双倍
      • 使用 StorageManager 记录首充状态
      • 需求:4.3 钻石充值包(验收标准8、9)
    • 7.4 实现新手礼包逻辑

      • 新用户首次进入游戏后24小时内展示购买入口
      • 倒计时结束后自动移除入口
      • 需求:4.5 新手礼包(验收标准13、14)
  • 8. 实现皮肤系统与商店场景

    • 8.1 新建 js/data/SkinData.js,定义皮肤配置数据

      • 定义皮肤分类(基础/高级/限定)、价格(金币/钻石)、获取途径、皮肤资源映射
      • 需求:7 皮肤商店系统(验收标准1、5)
    • 8.2 新建 js/managers/SkinManager.js,实现皮肤解锁与装备管理

      • 实现 getOwnedSkins() / unlockSkin(skinId) / equipSkin(skinId) / getCurrentSkin() 方法
      • 使用 StorageManager 持久化已解锁皮肤和当前装备
      • 纳入云同步数据
      • 需求:7 皮肤商店系统(验收标准2、3、4)
    • 8.3 新建 js/scenes/ShopScene.js,实现商店界面

      • 展示皮肤列表(分类标签页:基础/高级/限定)
      • 展示皮肤预览、价格、购买/装备按钮
      • 集成 CurrencyManager 扣款和 SkinManager 解锁
      • 展示去广告特权、钻石充值包等 IAP 商品入口
      • 需求:7 皮肤商店系统(验收标准1、2、5)、4.1、4.3
    • 8.4 在 js/scenes/MenuScene.js 中添加商店入口按钮

      • 点击后通过 SceneManager 跳转到 ShopScene
      • 需求:7 皮肤商店系统
    • 8.5 在 Tank 渲染逻辑中集成皮肤系统

      • 修改 js/entities/Tank.jsPlayerTank.js,根据 SkinManager.getCurrentSkin() 加载对应皮肤资源
      • 需求:7 皮肤商店系统(验收标准3

V2.0 赛季版 — 战斗通行证 + 任务体系

  • 9. 实现战斗通行证系统(BattlePassManager

    • 9.1 新建 js/data/BattlePassData.js,定义赛季配置

      • 定义赛季时长(28天)、等级数(免费20级/高级40级)、每级奖励内容
      • 定义每日任务池、每周任务池、赛季成就列表及对应经验值
      • 需求:5.1 赛季基础设计(验收标准1、2、3)、5.2 任务体系(验收标准5、6、7)
    • 9.2 新建 js/managers/BattlePassManager.js,实现通行证核心逻辑

      • 实现赛季状态管理:当前赛季ID、开始/结束时间、玩家等级、经验值
      • 实现 addExp(amount) / getLevel() / claimReward(level) 方法
      • 实现免费/高级通行证奖励轨道区分
      • 实现任务生成与完成追踪(每日3+2任务、每周5+3任务、赛季10成就)
      • 赛季结束时保留赛季币余额,提供3天奖励领取缓冲期
      • 使用 StorageManager 持久化赛季进度
      • 需求:5.1(验收标准1、2、3、4)、5.2(验收标准5、6、7、8)
    • 9.3 新建 js/scenes/BattlePassScene.js,实现通行证界面

      • 展示等级进度条、免费/高级奖励轨道
      • 展示每日任务、每周任务、赛季成就列表及完成状态
      • 高级通行证购买入口(集成 PaymentManager
      • 免费玩家达到10级时展示高级版奖励预览
      • 赛季剩余不足3天时展示8折优惠
      • 需求:5.1(验收标准2、3、4)、5.3 转化策略(验收标准9、10)
    • 9.4 在 MenuScene 中添加通行证入口,在 GameScene/TeamGameScene 结算时触发任务进度更新

      • 对局结束后检查并更新任务完成状态(如"击杀N个敌人"、"通关N次"等)
      • 需求:5.2 任务体系(验收标准8
  • 10. 实现月卡系统

    • 10.1 在 js/managers/PaymentManager.js 中新增月卡购买与状态管理

      • 实现月卡有效期检查、每日登录领取100钻石、专属头像框解锁/过期
      • 使用 StorageManager 记录月卡购买时间和每日领取状态
      • 需求:4.2 月卡(验收标准4、5、6)
    • 10.2 在游戏启动流程中检查月卡状态并弹出每日领取弹窗

      • 需求:4.2 月卡(验收标准5

V2.5 社交版 — 分享裂变 + 付费引导 + 合规

  • 11. 扩展 ShareManager,实现分享激励体系

    • 11.1 在 js/managers/ShareManager.js 中新增分享奖励逻辑

      • 每日首次分享发放50金币(通过 CurrencyManager
      • 分享战绩概率发放稀有道具,每日上限3次
      • 使用 StorageManager 记录每日分享次数和奖励领取状态
      • 需求:6.1 分享激励(验收标准1、4)
    • 11.2 实现邀请新用户奖励机制

      • 新用户完成新手引导后,向邀请者发放200金币(每日上限5人)
      • 新用户获得双倍经验卡(3天有效期)
      • 实现 IP + 设备指纹去重防作弊(服务端校验)
      • 需求:6.1 分享激励(验收标准2、3)、6.2 防作弊机制(验收标准6、7)
  • 12. 实现付费节奏引导系统

    • 12.1 新建 js/managers/PromotionManager.js,实现生命周期付费引导

      • 根据玩家累计登录天数判断所处阶段(新手期/成长期/成熟期)
      • 新手期(1-3天):展示新手礼包弹窗(最多3次)、去广告特权推荐
      • 成长期(4-14天):高亮月卡推荐、钻石充值促销(限时加赠20%)
      • 成熟期(15天+):推送通行证购买引导、限量皮肤预告
      • 使用 StorageManager 记录弹窗展示次数和登录天数
      • 需求:9.1(验收标准1、2)、9.2(验收标准3、4)、9.3(验收标准5、6)
    • 12.2 在 game.js 启动流程和 MenuScene 中集成 PromotionManager 的引导触发

      • 登录时检查阶段并展示对应引导弹窗
      • 需求:9 付费节奏与引导
  • 13. 实现未成年人保护与合规机制

    • 13.1 新建 js/managers/ComplianceManager.js,实现合规检查

      • 实现未成年人识别(调用微信平台用户年龄信息接口)
      • 实现游戏时间限制:22:00-8:00禁止未成年人登录
      • 实现消费限制:月消费上限¥400,单次>¥50弹出确认
      • 实现广告展示限制:未成年人每日广告不超过5次
      • 需求:10.1 未成年人保护(验收标准1、2、3)
    • 13.2 在宝箱/抽奖等随机奖励界面添加概率公示

      • 在对应 UI 中明确展示所有物品的掉落概率
      • 需求:10.2 概率公示(验收标准4
    • 13.3 在服务端 server/index.js 中新增反作弊检测逻辑

      • 广告反刷:同一IP短时间大量请求时限制广告展示
      • 异常充值检测:大额充值触发人工审核标记
      • 对局数据校验:异常击杀数/速度标记封禁
      • 需求:10.4 反作弊(验收标准7、8、9)
  • 14. 国际化支持:为所有商业化 UI 文案添加 i18n 翻译

    • js/i18n/zh.jsjs/i18n/en.js 中新增商店、通行证、体力、货币、弹窗等所有商业化相关的翻译键值
    • 确保所有新增场景和弹窗使用 I18n.t() 获取文案
    • 需求:全部商业化需求的 UI 文案