1
This commit is contained in:
229
docs/peak-tianxuan-current-design-2026-04-25.md
Normal file
229
docs/peak-tianxuan-current-design-2026-04-25.md
Normal file
@@ -0,0 +1,229 @@
|
||||
# 巅峰之战天选池当前逻辑说明
|
||||
|
||||
更新时间:2026-04-25
|
||||
|
||||
## 1. 入口职责
|
||||
|
||||
当前巅峰相关入口拆成 3 个点:
|
||||
|
||||
- `point_1`:打开巅峰之战主页面
|
||||
- `point_2`:打开天选池投票页面
|
||||
- `point_3`:打开本周正式天选配置页面
|
||||
|
||||
三者职责如下:
|
||||
|
||||
- `point_1` 只负责展示当前赛季、段位、匹配入口,以及“本周正式天选”摘要
|
||||
- `point_2` 只负责玩家投票,不负责配置本周正式天选属性
|
||||
- `point_3` 只负责配置“本周正式天选”和其预设属性
|
||||
|
||||
## 2. 两套数据的区别
|
||||
|
||||
当前天选系统明确分成两套数据:
|
||||
|
||||
### 2.1 投票候选池
|
||||
|
||||
这是玩家在 `point_2` 页面看到并进行投票的候选列表。
|
||||
|
||||
来源规则:
|
||||
|
||||
1. 先读取乱斗精灵池 `config_boss_melee`
|
||||
2. 从乱斗池中提取精灵 ID,按 `mon_id` 去重
|
||||
3. 再减掉“上一周已经作为正式天选出现过的精灵”
|
||||
4. 剩余结果作为本周投票候选池
|
||||
|
||||
也就是说:
|
||||
|
||||
- `point_2` 不是手工配置候选池
|
||||
- `point_2` 候选池是“乱斗池 - 上周正式天选”
|
||||
|
||||
### 2.2 本周正式天选
|
||||
|
||||
这是本周真正会进入巅峰/BP 的正式天选列表。
|
||||
|
||||
来源规则:
|
||||
|
||||
1. 在 `point_3` 页面手工配置
|
||||
2. 写入 `config_peak_tianxuan`
|
||||
3. 每条记录保存精灵 ID、周序号、展示顺序、属性、技能、皮肤等信息
|
||||
|
||||
也就是说:
|
||||
|
||||
- 玩家投票结果不直接等于本周正式天选
|
||||
- 真正进入 BP 的是 `point_3` 配置出来的本周正式天选
|
||||
|
||||
## 3. 上周去重规则
|
||||
|
||||
当前已经实现的去重口径如下:
|
||||
|
||||
### 3.1 投票候选去重
|
||||
|
||||
`point_2` 候选池生成时,会自动排除上一周正式天选出现过的精灵。
|
||||
|
||||
表现为:
|
||||
|
||||
- 后端会返回 `tianxuan_prev_week_pool`
|
||||
- 前端投票页会显示“上周周免 / 本周排除项”
|
||||
- 这些精灵不会再进入当前投票候选列表
|
||||
|
||||
### 3.2 正式天选去重
|
||||
|
||||
`point_3` 配置本周正式天选时,后端会校验:
|
||||
|
||||
- 同一周内不能重复配置同一只精灵
|
||||
- 本周正式天选不能和上一周正式天选重复
|
||||
|
||||
## 4. 玩家投票规则
|
||||
|
||||
玩家在 `point_2` 投票页的规则如下:
|
||||
|
||||
- 每个玩家每周只能投 1 只
|
||||
|
||||
当前投票不会写入 `player_pvp`,而是单独写入“周投票记录表”。
|
||||
|
||||
当前投票记录字段最小化为:
|
||||
|
||||
- `week_index`
|
||||
- `player_id`
|
||||
- `pet_id`
|
||||
|
||||
表结构:
|
||||
|
||||
- `config_peak_tianxuan_vote`
|
||||
|
||||
约束规则:
|
||||
|
||||
- 同一玩家同一周只能有 1 条投票记录
|
||||
- 如果本周重复投票,不新增记录,直接更新该玩家本周那条记录的 `pet_id`
|
||||
- `updateTime` 就是该玩家本周最近一次修改投票的时间
|
||||
|
||||
这份数据当前用途:
|
||||
|
||||
- 作为“本周玩家投票明细”保留
|
||||
- 用于统计本周每只候选精灵的总票数
|
||||
|
||||
这份数据当前不直接参与:
|
||||
|
||||
- 巅峰匹配入队
|
||||
- BP 本周正式天选生成
|
||||
|
||||
## 5. point_1 当前展示逻辑
|
||||
|
||||
巅峰主页面当前展示的是“本周正式天选”,不是玩家投票候选池。
|
||||
|
||||
页面会从 `/admin/game/pvp/get` 读取:
|
||||
|
||||
- `current_tianxuan_pool`:本周正式天选
|
||||
- `tianxuan_vote_pool`:本周投票候选池
|
||||
- `tianxuan_prev_week_pool`:上周正式天选,用于排除展示
|
||||
|
||||
主页面当前重点展示:
|
||||
|
||||
- 段位和匹配模式
|
||||
- 本周正式天选数量
|
||||
- 本周正式天选列表
|
||||
|
||||
## 6. point_2 当前展示逻辑
|
||||
|
||||
天选池投票页当前会:
|
||||
|
||||
1. 请求 `/admin/game/pvp/get`
|
||||
2. 读取 `tianxuan_vote_pool`
|
||||
3. 读取 `tianxuan_prev_week_pool`
|
||||
4. 读取 `selected_tianxuan_pet_ids`
|
||||
5. 按当前段位限制可投数量
|
||||
|
||||
页面表现:
|
||||
|
||||
- 顶部显示当前周和投票数量限制
|
||||
- 单独显示“上周周免 / 本周排除项”
|
||||
- 候选列表支持搜索
|
||||
- 候选列表支持无限滚动懒加载
|
||||
|
||||
## 7. point_3 当前配置逻辑
|
||||
|
||||
`point_3` 对应的是本周正式天选配置面板。
|
||||
|
||||
当前可配置字段包括:
|
||||
|
||||
- `week_index`
|
||||
- `display_order`
|
||||
- `pet_id`
|
||||
- `preset_name`
|
||||
- `level`
|
||||
- `nature`
|
||||
- `hp`
|
||||
- `max_hp`
|
||||
- `attack`
|
||||
- `defence`
|
||||
- `sp_attack`
|
||||
- `sp_defence`
|
||||
- `speed`
|
||||
- `skin_id`
|
||||
- `effect_ids`
|
||||
- `skill_ids`
|
||||
- `remark`
|
||||
- `is_enable`
|
||||
|
||||
存储表:
|
||||
|
||||
- `config_peak_tianxuan`
|
||||
|
||||
## 8. BP 当前使用逻辑
|
||||
|
||||
BP 当前不再读取玩家投票结果。
|
||||
|
||||
当前口径:
|
||||
|
||||
- BP 使用的是“本周正式天选”
|
||||
- 后端在进入 BP 时读取 `config_peak_tianxuan` 当前周配置
|
||||
- 同一份正式天选会同时下发给双方展示
|
||||
|
||||
也就是说:
|
||||
|
||||
- 玩家投票结果不直接进 BP
|
||||
- `point_3` 配置才是真正进入 BP 的天选列表
|
||||
|
||||
## 9. 接口口径
|
||||
|
||||
### 9.1 `/admin/game/pvp/get`
|
||||
|
||||
当前主要返回:
|
||||
|
||||
- `rank_info`
|
||||
- `required_tianxuan_vote_count`
|
||||
- `tianxuan_week_index`
|
||||
- `tianxuan_prev_week_index`
|
||||
- `tianxuan_vote_pool`
|
||||
- `tianxuan_prev_week_pool`
|
||||
- `current_tianxuan_pool`
|
||||
|
||||
### 9.2 `/admin/game/pvp/save_tianxuan_vote`
|
||||
|
||||
当前用途:
|
||||
|
||||
- 保存玩家本周唯一一条投票记录
|
||||
|
||||
保存前会校验:
|
||||
|
||||
- 只能投候选池中的精灵
|
||||
- 每次只允许提交 1 只精灵
|
||||
- 同一玩家同一周重复提交时,覆盖原投票记录
|
||||
|
||||
## 10. 票数统计方式
|
||||
|
||||
候选列表中的票数不再存死值。
|
||||
|
||||
当前实现为:
|
||||
|
||||
1. 每周投票明细写入 `config_peak_tianxuan_vote`
|
||||
2. 候选列表展示时,按 `week_index + pet_id` 聚合统计票数
|
||||
3. 下一周如果要看“上周投票结果”,直接统计上周的投票记录表即可
|
||||
|
||||
## 11. 当前已知口径总结
|
||||
|
||||
一句话总结当前逻辑:
|
||||
|
||||
- `point_2`:玩家从“乱斗池 - 上周正式天选”里投票
|
||||
- `point_3`:运营/配置侧手工配置本周正式天选和属性
|
||||
- `point_1` / BP:都使用 `point_3` 配好的本周正式天选
|
||||
- 玩家投票明细单独存 `config_peak_tianxuan_vote`,不进 `player_pvp`
|
||||
42
docs/peak-tianxuan-vote-design-2026-04-25.md
Normal file
42
docs/peak-tianxuan-vote-design-2026-04-25.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# 巅峰之战天选池投票设计
|
||||
|
||||
## 规则补全
|
||||
|
||||
- 参与规则
|
||||
- 白银及以下:至少 1 只 100 级以上精灵,进行 `1v1`
|
||||
- 黄金、铂金、紫晶:至少 3 只 100 级以上精灵,进行 `3v3`
|
||||
- 钻石及以上:至少 6 只 100 级以上精灵,进行 `6v6`
|
||||
- 段位规则
|
||||
- 初始段位为青铜,初始分 `800`
|
||||
- `1000` 白银,`1200` 黄金,`1500` 铂金,`1800` 紫晶,`2100` 钻石,`3000` 大师,`4000` 王者
|
||||
- 王者榜前 100 自动晋升至尊王者
|
||||
- 天选池规则
|
||||
- 每周开放一组“天选池”候选精灵
|
||||
- 玩家在进入巅峰匹配前,先从本周天选池中投票选择自己的“天选备选”
|
||||
- 白银及以下可选 `1` 只,紫晶及以下可选 `2` 只,钻石及以上可选 `3` 只
|
||||
- 这些投票结果跟随匹配快照一起进入后续 BP 流程
|
||||
- BP 规则
|
||||
- 钻石以下默认无 Ban/Pick 强制要求,但前后端结构统一预留天选池字段
|
||||
- 钻石及以上进入正式 BP
|
||||
- BP 展示区应包含:
|
||||
- 出战备战精灵
|
||||
- 天选精灵
|
||||
- 双方互 Ban / Pick
|
||||
- BP 完成后再进入正式对战
|
||||
- 奖励规则
|
||||
- 本次仅补结构与文档位,结算奖励、赛季奖励、周奖励仍按后续配置表落地
|
||||
|
||||
## 本次后端结构预留
|
||||
|
||||
- `2458` 巅峰加入请求增加 `TianxuanPetIDs`
|
||||
- 匹配快照 `QueuePlayerSnapshot` 增加 `TianxuanPetIDs`
|
||||
- `CrossServerBanPickStartOutboundInfo` 增加:
|
||||
- `TianxuanSelectableCount`
|
||||
- `MyTianxuanPets`
|
||||
- `OpponentTianxuanPets`
|
||||
|
||||
## 当前实现边界
|
||||
|
||||
- 本次先完成“开始界面投票 + 匹配快照透传 + BP 启动数据预留”
|
||||
- 不直接改现有 `banpick.vue`
|
||||
- 天选精灵的正式上场生成、战斗侧实体化和完整 BP 消费,交给后续 BP 页面与战斗链路接入
|
||||
Reference in New Issue
Block a user