# 需求文档：坦克大战 — 极简商业化

## 引言

本文档基于《坦克大战经典游戏 - 极简商业化方案》，提炼可落地的商业化功能需求。核心原则是 **"轻数值、重体验、做减法"**，坚持不破坏经典坦克大战"一发子弹消灭一个敌人"的爽快感。

商业化策略采用 **IAA（激励广告）+ 极简IAP（内购）** 双轨模式：
- **唯一货币**：金币（Gold），砍掉钻石、赛季币等复杂体系
- **核心变现**：复活续关（广告/金币）、局前Buff（金币消耗）、去广告特权（唯一内购）
- **经济闭环**：玩游戏 → 死亡/想变强 → 看广告赚金币 → 购买复活/Buff → 继续游戏

与之前的复杂商业化方案相比，本方案**砍掉**了：钻石/赛季币货币、体力系统、皮肤商店、战斗通行证、月卡、社交裂变、付费引导等重型系统。

---

## 需求

### 需求 1：金币货币系统

**用户故事：** 作为一名玩家，我希望游戏只有一种简单的货币（金币），以便我能清晰地理解如何获取和使用资源，不被复杂的货币体系困扰。

#### 验收标准

##### 1.1 金币获取
1. WHEN 玩家完成一局对战（通关或失败结算） THEN 系统 SHALL 根据对局表现发放基础金币奖励（基础值50金币）。
2. WHEN 玩家在结算界面选择观看广告 THEN 系统 SHALL 将本局金币奖励翻倍（即额外获得与基础奖励等额的金币）。
3. WHEN 玩家在主界面点击"领金币"按钮并观看广告 THEN 系统 SHALL 发放100金币，每日上限3次。

##### 1.2 金币消耗
4. WHEN 玩家在死亡时选择金币复活 THEN 系统 SHALL 扣除200金币。
5. WHEN 玩家在局前购买Buff THEN 系统 SHALL 扣除对应金币（护盾100金币、双倍火力150金币）。
6. IF 玩家金币余额不足以支付消耗 THEN 系统 SHALL 提示余额不足，并引导至广告赚金币或金币包购买。

##### 1.3 金币持久化
7. WHEN 金币余额发生变动 THEN 系统 SHALL 通过 StorageManager 持久化金币数据，并同步至云端。
8. WHEN 玩家换设备登录 THEN 系统 SHALL 从云端恢复金币余额。
9. 系统 SHALL 设置金币上限为999,999，防止数值溢出。

---

### 需求 2：复活续关系统（核心变现点）

**用户故事：** 作为一名玩家，我希望在坦克被击毁时有机会复活继续游戏，以便不浪费已有的关卡进度。

#### 验收标准

##### 2.1 复活选项
1. WHEN 玩家坦克被击毁且生命数降为0 THEN 系统 SHALL 弹出复活选择弹窗，提供两个选项：观看广告复活（免费）、花费200金币复活。
2. WHEN 玩家选择观看广告并完整观看激励视频 THEN 系统 SHALL 立即复活玩家，保留当前关卡进度。
3. WHEN 玩家选择花费金币复活且余额≥200 THEN 系统 SHALL 扣除200金币并立即复活玩家。
4. IF 玩家选择放弃复活 THEN 系统 SHALL 正常进入游戏失败结算流程。

##### 2.2 复活限制
5. WHEN 同一局游戏中玩家已使用过1次复活（无论广告或金币） THEN 系统 SHALL 不再提供复活选项，直接进入失败结算。
6. IF 广告加载失败 THEN 系统 SHALL 仅展示金币复活选项，隐藏广告复活按钮。

---

### 需求 3：局前Buff系统

**用户故事：** 作为一名玩家，我希望在开局前能购买一次性增益道具，以便在困难关卡中获得额外优势。

#### 验收标准

##### 3.1 Buff商店
1. WHEN 玩家在关卡加载前（选关/匹配后、正式开局前） THEN 系统 SHALL 展示局前Buff购买界面。
2. 系统 SHALL 提供以下Buff道具供购买：
   - **护盾**（100金币）：开局自带一层护盾，可抵挡一次伤害。
   - **双倍火力**（150金币）：开局10秒内子弹威力翻倍。
3. WHEN 玩家选择购买Buff且金币余额充足 THEN 系统 SHALL 扣除金币并标记该Buff在本局生效。
4. WHEN 玩家选择跳过 THEN 系统 SHALL 正常开始游戏，不施加任何Buff。

##### 3.2 Buff生效
5. WHEN 本局开始且玩家已购买护盾Buff THEN 系统 SHALL 为玩家坦克添加一层护盾效果（视觉+逻辑），受到第一次伤害时消耗护盾而非扣除生命。
6. WHEN 本局开始且玩家已购买双倍火力Buff THEN 系统 SHALL 在开局10秒内将玩家子弹威力设为2倍，10秒后恢复正常。
7. WHEN 本局结束（无论胜负） THEN 系统 SHALL 清除所有Buff效果，Buff不跨局保留。

---

### 需求 4：广告系统

**用户故事：** 作为游戏运营方，我希望在合适的场景嵌入广告，以便在不破坏玩家体验的前提下获得广告收入。

#### 验收标准

##### 4.1 激励视频广告
1. WHEN 关卡加载时 THEN 系统 SHALL 预加载激励视频广告资源，减少玩家等待时间。
2. WHEN 广告播放完毕 THEN 系统 SHALL 在广告结束瞬间立即发放对应奖励。
3. WHEN 同一广告场景在15分钟内已展示过 THEN 系统 SHALL 不重复展示相同场景的广告。
4. IF 广告加载失败 THEN 系统 SHALL 提示"广告暂时不可用"，不阻塞玩家正常流程。

##### 4.2 插屏广告
5. WHEN 玩家完成一局游戏退出关卡时 THEN 系统 SHALL 检查是否满足插屏广告展示条件。
6. IF 距离上次插屏广告展示已超过3局 THEN 系统 SHALL 展示一次插屏广告。
7. IF 玩家已购买"去广告特权" THEN 系统 SHALL 永久跳过所有插屏广告。
8. WHEN 插屏广告加载失败 THEN 系统 SHALL 静默跳过，不影响玩家正常流程。

##### 4.3 每日领金币广告
9. WHEN 玩家在主界面点击"领金币"按钮 THEN 系统 SHALL 播放激励视频广告。
10. WHEN 广告播放完毕 THEN 系统 SHALL 发放100金币。
11. WHEN 玩家当日已领取3次 THEN 系统 SHALL 将"领金币"按钮置灰，提示"明日再来"。

##### 4.4 双倍结算广告
12. WHEN 玩家通关进入结算界面 THEN 系统 SHALL 展示"观看广告获得双倍金币"按钮。
13. WHEN 玩家完整观看激励视频 THEN 系统 SHALL 将本局获得的金币翻倍发放。
14. IF 广告加载失败 THEN 系统 SHALL 提示"广告暂时不可用"，按正常倍率发放。

---

### 需求 5：去广告特权（唯一内购）

**用户故事：** 作为一名核心玩家，我希望能一次性付费永久去除广告打断，以便获得更流畅的游戏体验。

#### 验收标准

1. WHEN 玩家在设置或商店中购买"去广告特权"（¥18/永久） THEN 系统 SHALL 通过微信支付完成交易。
2. WHEN 购买成功 THEN 系统 SHALL 永久移除所有插屏广告。
3. IF 玩家已购买去广告特权 THEN 系统 SHALL 保留激励视频广告入口（复活广告、双倍结算广告、每日领金币广告），因为这些是玩家主动选择观看以获取奖励。
4. IF 玩家已购买去广告特权且在复活弹窗中 THEN 系统 SHALL 仍然展示"观看广告复活"选项（玩家自愿选择）。
5. WHEN 购买记录 THEN 系统 SHALL 同步至云端，确保换设备后特权不丢失。
6. IF 支付过程中网络中断 THEN 系统 SHALL 在网络恢复后自动查询订单状态，补发未到账的特权。

---

### 需求 6：金币包与新手礼包

**用户故事：** 作为一名不想看广告但愿意付费的玩家，我希望能直接购买金币，以便快速获得复活和Buff所需的资源。

#### 验收标准

##### 6.1 金币充值包
1. WHEN 玩家在商店中购买金币包 THEN 系统 SHALL 按以下规格发放金币：¥6 = 1000金币。
2. WHEN 购买成功 THEN 系统 SHALL 立即将金币添加到玩家账户。
3. WHEN 购买记录 THEN 系统 SHALL 同步至云端。

##### 6.2 新手礼包
4. WHEN 新用户首次进入游戏 THEN 系统 SHALL 在24小时内展示新手礼包购买入口（¥1 = 500金币，相当于送一次复活+一次Buff）。
5. WHEN 新手礼包倒计时结束（24小时） THEN 系统 SHALL 移除新手礼包购买入口，不再展示。
6. WHEN 新手礼包购买成功 THEN 系统 SHALL 立即发放500金币。

##### 6.3 支付安全
7. WHEN 玩家发起内购 THEN 系统 SHALL 通过微信支付（`wx.requestMidasPayment`）完成交易。
8. IF 支付过程中网络中断 THEN 系统 SHALL 在网络恢复后自动查询订单状态，补发未到账商品。
9. WHEN 购买虚拟商品 THEN 系统 SHALL 将购买记录同步至云端，确保换设备后不丢失。

---

### 需求 7：主界面商业化入口

**用户故事：** 作为一名玩家，我希望在主界面能方便地找到商店和领金币入口，以便快速获取资源。

#### 验收标准

1. WHEN 玩家进入主菜单 THEN 系统 SHALL 在界面上展示"领金币"按钮，显示今日剩余领取次数（如"3/3"）。
2. WHEN 玩家进入主菜单 THEN 系统 SHALL 展示"商店"按钮，点击后进入商店界面。
3. WHEN 玩家进入商店界面 THEN 系统 SHALL 展示以下内容：
   - 当前金币余额
   - 去广告特权购买入口（已购买则显示"已拥有"）
   - 金币充值包购买入口
   - 新手礼包入口（仅限新用户24小时内可见）
4. WHEN 玩家金币余额显示 THEN 系统 SHALL 在主界面顶部常驻显示当前金币数量。

---

### 需求 8：合规与安全

**用户故事：** 作为游戏运营方，我希望游戏符合平台合规要求，以便合法运营且风险最低。

#### 验收标准

##### 8.1 基础合规
1. WHEN 系统识别到未成年用户 THEN 系统 SHALL 限制每日广告展示不超过5次。
2. WHEN 未成年用户进行消费 THEN 系统 SHALL 限制月消费上限为¥400，单次消费超过¥50时弹出确认提示。

##### 8.2 反作弊
3. WHEN 系统检测到同一广告源IP短时间内大量请求 THEN 系统 SHALL 触发广告反刷机制。
4. WHEN 系统检测到异常大额充值行为 THEN 系统 SHALL 触发人工审核标记。

---

## 边界情况与技术约束

### 边界情况
1. **广告加载失败**：激励视频加载失败时，复活弹窗仅展示金币选项；结算双倍按钮提示稍后重试。
2. **支付异常**：支付中断后自动查询订单状态并补发商品。
3. **跨设备同步**：金币余额、去广告特权、购买记录均需云端同步。
4. **金币溢出**：金币上限999,999，达到上限后不再发放（提示已满）。
5. **Buff叠加**：护盾和双倍火力可同时购买，互不冲突。

### 技术约束
1. 微信小游戏内购需通过 `wx.requestMidasPayment` 接口完成。
2. 广告SDK使用微信小游戏广告组件（`wx.createRewardedVideoAd`、`wx.createInterstitialAd`）。
3. 金币数据需服务端校验，防止客户端篡改。
4. 未成年人识别依赖微信平台提供的用户年龄信息接口。

### 成功标准
1. 激励视频广告转化率 ≥ 8%（复活场景）。
2. 去广告特权购买率 ≥ 2%。
3. 广告展示不影响核心游戏体验（玩家满意度 ≥ 4/5）。
4. 所有内购流程零丢单率。

---

## 与旧方案的差异说明

本极简方案相比之前的复杂商业化方案，**砍掉**了以下系统：
- ❌ 钻石货币、赛季币货币（仅保留金币）
- ❌ 体力系统（StaminaManager）
- ❌ 皮肤商店系统（SkinManager、SkinData、ShopScene中的皮肤部分）
- ❌ 战斗通行证系统（BattlePassManager、BattlePassData、BattlePassScene）
- ❌ 月卡系统
- ❌ 社交裂变系统（ShareManager扩展部分）
- ❌ 付费引导系统（PromotionManager）
- ❌ 复杂的合规系统（ComplianceManager大部分功能）

**新增**了以下功能：
- ✅ 局前Buff系统（护盾、双倍火力）
- ✅ 每日领金币广告（主界面入口）
- ✅ 金币复活选项（除广告外的第二复活途径）
- ✅ 金币充值包（¥6=1000金币）
