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

235 lines
13 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.
# 实施计划:坦克大作战商业化
> 基于 [requirements.md](./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:changed``currency: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.js``PlayerTank.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.js``js/i18n/en.js` 中新增商店、通行证、体力、货币、弹窗等所有商业化相关的翻译键值
- 确保所有新增场景和弹窗使用 `I18n.t()` 获取文案
- _需求:全部商业化需求的 UI 文案_