# FFGS 开发规划 v2 · 系统联动 / 开发难度 / 活动安排 / 货币安排

> 2026-09-13 续 v1（`ffgs-dev-plan-2026-09-13.md`）
> 本版聚焦主人要的四件事：**联动性、难度、活动、货币**。玩家数据存储不在范围内。
> 技术底座结论（KJS vs Mod）沿用 v1：**玩法内核写 mod，外围用 KJS**。

---

## 一、系统联动性（这是整个开发的地基）

### 1. 三条铁律

**铁律 A：单一奖励入口 `RewardService.grant(player, bundle)`**
所有奖励——签到、赛季升级、任务、活动、比赛、商城退款、旧服福利——**全部**只能调这一个函数。
`bundle = { 安山, 黄铜, 玫瑰石英, 赛季XP, 称号ID, 物品, 皮肤 }`

好处：
- 倍率只在一个地方乘（活动双倍 = 入口乘 2，不用改玩法）
- 幂等/防重复只需在这里做（一次流水号）
- 日志统一 → 后台可查"这 100 安山是谁发的、什么时候、因为什么"
- 后台补发/回收只需要调这一个接口

**铁律 B：单一事件源（玩家行为 → 事件总线）**
所有"玩家做了什么"都归一到一个事件总线：`对局开始 / 对局结束 / 击杀 / 死亡 / 助攻 / 进队 / 退队 / 签到 / 消费 / 升级`。
赛季、任务、统计、播报、成就系统**只订阅、不自己抓数据**。

**铁律 C：单一配置真相（一份 JSON，游戏和后台共读）**
商城定价、任务定义、赛季等级曲线、活动倍率、称号清单、皮肤清单 → 全部放一份配置。
游戏侧读它，网页后台读它，**绝不两处各写一遍**。

### 2. 链路图

```
                    ┌── 玩法层 FPSMatch（TDM/爆破/1v1/空战/比赛）
                    │        │ 事件（mapStart/mapVictory/playerKill…）
                    │        ▼
   KJS 脚本  ──调用──▶  FFGS Core（结算 / 统计 / 事件总线 / RewardService 唯一入口）
   （规则编排）        │        │
                    │        ├──▶ 数 据 层（货币 / 赛季XP / 称号 / 任务进度）
                    │        ├──▶ 商城 / 通行证 / 功能菜单 GUI
                    │        └──▶ 播报（群服互联 / 游戏内公告）
                    │
   网页后台 ──定时快照同步(RTT/JSON)──▶ 排行榜 / 个人页 / 商城页 / 活动页 / 一键发奖
```

### 3. 系统间联动矩阵（谁触发谁）

| 触发 | 处理 | 结果 |
|---|---|---|
| 对局结束 `mapVictory` | Core 结算 → RewardService | 安山 + 赛季XP（吃活动倍率） |
| 击杀/助攻 `playerKill` | 统计 + 任务订阅 | 任务进度、连杀播报 |
| 赛季XP 到阈值 | 赛季系统 | 等级+1 → 奖励 = 黄铜 +（每5级）玫瑰石英 |
| 签到（18天周期） | 签到系统 → RewardService | 安山 + 满勤玫瑰石英 + 称号 |
| 周任务完成 | 任务系统 → RewardService | 黄铜 |
| 商城消费 | 商城 → 扣货币 + 发物品 | 皮肤/通行证/称号/道具 |
| 排行结算（赛季末） | 后台 → 生成名单 → Core 发奖 | 分段奖励 |
| 活动开启 | 后台改配置倍率 | 全系统收益翻倍（无需改代码） |

### 4. 联动性上必须提前堵的 4 个坑

1. **循环刷取**：赛季XP→黄铜→通行证→皮肤+XP。要明确"哪条边不许回环"。
2. **幂等**：赛季结算脚本重复执行不能重复发钱 → 赛季流水号 + 已发标记。
3. **入口碎片化**：现在签到/称号靠"重生点功能物品"发，每加一个系统多一个物品 → 建议做**统一功能菜单 GUI**（一个物品/一条命令进所有系统）。
4. **双倍活动硬编码**：一旦写死在玩法里，以后每次活动都要改代码 → 必须做成"入口倍率"。

---

## 二、开发难度评级（★ = 难度，工期为估）

| 模块 | 难度 | 工期 | 依赖 | 关键点 |
|---|---|---|---|---|
| **FFGS Core**：事件总线 + RewardService + 数据层 | ★★★ | 2 周 | FPSMatch 1.3.0 | **地基，必须第一个做** |
| 统一功能菜单 GUI（替代功能物品） | ★★ | 3–5 天 | Core | 一次投入，长期省事 |
| 赛季系统（XP 曲线 / 40 级 / 幂等结算） | ★★★ | 1–2 周 | Core | 结算幂等最要命 |
| 任务系统（日常/周常/赛季） | ★★★★ | 2–3 周 | Core | **最难的模块**（条件配置化） |
| 签到系统升级（18 天 + 补签 + 满勤判定） | ★ | 2–3 天 | Core | 已有丐版 |
| 称号系统（获取条件 + 展示 + 前缀） | ★★ | 1 周 | Core | 丐版升级 |
| 商城（三货币 + 预览 + 购买 + 通行证） | ★★★ | 1–2 周 | Core | 依赖物品/皮肤 ID 规范 |
| 活动倍率 / 开关（4 个旋钮） | ★ | 1–2 天 | Core + 后台 | **最便宜最见效** |
| 排行榜 / 统计 / 个人页数据 | ★★ | 1 周 | Core + 后台 | 定时快照，别实时查游戏 |
| 网页后台（商城/活动/发奖/查询） | ★★★ | 2 周 | 现成站点 | 复用考试/委托那套体系 |
| TDM 模式 | ★★ | 1–2 周 | Core | 建议第一个玩法 |
| 爆破（原生配置化 → 深度改造） | ★★ → ★★★★ | 3–5 天 → 1–2 周 | FPSMatch | 1.3.0 已内置拆弹 |
| 1v1 单挑（KJS 版 → Mod 版） | ★★ → ★★★ | 3–5 天 → 1–2 周 | Core | 先上 KJS 版打活动 |
| 比赛模式（KJS + 后台） | ★★★ | 2 周 | 后台 | 性价比高 |
| 鞘翅空战 | ★★★★★ | 3–5 周 | Spike 先行 | 不保证好玩，最后做 |
| 个人基地 | ★★★★ | 3 周+ | 先评估现成方案 | 别急自研 |

**总览**：联动地基（Core + RewardService + 数据层）**3–4 周**；之后每个外围系统 **3–10 天**；玩法另算。
**关键判断**：地基做好后，"上活动"只需要改配置（1 天），没地基的话每次活动都要改代码（每次 3–5 天）。

---

## 三、活动安排

### 1. 三个层次

- **常驻**：签到（18 天周期）、赛季（8 周）、周任务、**每周六日双倍**
- **月度**：限时模式周（第 2 周 1v1 / 第 4 周 爆破）、创意截图赛
- **赛季节点**：开幕双倍 → 赛季中活动 → 末段冲刺 → 结算与兑换周

### 2. S1 赛季日历（8 周，可直接照做）

| 周 | 主题 | 具体安排 | 动的旋钮 |
|---|---|---|---|
| W1 | 开幕 | 全模式双倍货币 3 天；TDM 上线 | 倍率 2x、开模式 |
| W2 | 常规 | 周任务；周末双倍 | 倍率 2x(周末) |
| W3 | 限时周 | **1v1 单挑赛**（报名 + 榜单 + 冠军称号） | 开模式 + 新任务 |
| W4 | 新玩法 | **爆破模式上线**（首周双倍） | 开模式 + 倍率 |
| W5 | 月中 | 双倍经验两个周末 | 倍率 |
| W6 | 战队赛 | **比赛模式首秀**（战队报名、BO3） | 后台 + 发奖 |
| W7 | 冲刺 | 全局 1.5x 常驻 + 排行榜前十预告 | 倍率 1.5x |
| W8 | 结算 | 发奖 + 旧服兑换周 + 版本维护 + S2 预告 | 结算脚本 |

### 3. 活动设计四旋钮（不改代码就能办活动）

1. **倍率**：当前 1x / 1.5x / 2x（全局，作用于 RewardService 入口）
2. **开放的模式**：TDM / 爆破 / 1v1 开关
3. **任务清单**：本周启用的任务 ID 列表
4. **商城折扣**：某类商品限时打折（也是配置）

一场活动 = 改这 4 个旋钮里的 1–2 个 + 后台点"名单发放"。**这就是联动的价值。**

---

## 四、货币安排

### 1. 定位与产出（建议数值，可调）

| 货币 | 定位 | 产出渠道 | 单人产出速率（建议） |
|---|---|---|---|
| 安山 | 基础通用 | 对局（胜 120 / 负 60）、每日首登 50、签到 100/天 | 约 300–600 / 天 |
| 黄铜 | 高级稀有 | 周任务（3×80）、赛季升级（40/级，满级约 1600）、活动 200–500 | 约 400–800 / 周 |
| 玫瑰石英 | 高端稀缺 | **签到满勤 1/周期**、限时活动 1–3、赛季末排名档 | **硬上限 ≈ 20 / 赛季 / 人** |

### 2. 消耗（商城定价建议）

- 普通皮肤 **1500 安山**；稀有皮肤 **600 黄铜**
- 赛季通行证 **400 黄铜**（或 2000 安山）
- 专属称号 **300 黄铜**；特级称号 **5 玫瑰石英**
- 道具/补给包 **200 安山**

### 3. 兑换比例 5:1:1 的正确落地方式 ⚠️

公告写 安山:黄铜:玫瑰石英 = 5:1:1，这只是**面值锚定**，不是自由兑换：
- **建议只开放单向、且有手续费**（例：10 安山 → 1 黄铜），或**干脆不开放玩家间互换**
- **绝对不能**让安山换出玫瑰石英（否则稀缺货币被刷崩，三货币体系直接失效）
- 玫瑰石英的"贵"要来自**限量**，不是来自汇率

### 4. 无封顶排名加成必须改 ⚠️（公告里的最大经济隐患）

公告：综合排名每提升 1 位 → 三类货币各 +200（无封顶）。
按 100 人算，第 1 名 = 额外 19800 三类货币 —— 一晚上通胀爆表。

建议改为三选一：
- **A（推荐）**：仅**前 10 名**按位递增（+200/位），10 名之后固定档（如 1000）
- **B**：把"位"改成"百分位"（前 1% / 5% / 10% 三档）
- **C**：保留无封顶，但**只有安山无封顶**，黄铜/玫瑰石英按固定档

### 5. 通胀监控（每周看 3 个数）

1. 人均安山持有量（环比涨太快 → 定价偏低或产出偏高）
2. 黄铜 产出/消耗 比（>1.5 就要加消耗口）
3. 玫瑰石英 全服总量（超过预计 → 马上收紧产出）

**消耗口设计**（防通胀的正经办法）：限时皮肤、称号升级/解锁展示特效、通行证、补给包、赛季重置券、外观槽位租用。

---

## 五、落地优先级（按"便宜又关键"排序）

1. **FFGS Core + RewardService**（地基，2 周）
2. **活动倍率/开关**（1–2 天，做完立刻能办活动）
3. **统一功能菜单 GUI**（3–5 天，终结"每系统一个物品"）
4. **结算幂等 + 流水日志**（随 Core 一起）
5. **赛季 + 签到升级 + 称号**（2–3 周）
6. **任务系统**（最难，2–3 周）
7. **商城 + 后台**（2–3 周）
8. 玩法线：TDM → 比赛模式 → 爆破 → 1v1 → 空战
