Files
tcg-server/ladder-api.md
yaoyanwei 43803f024b 优化
2025-08-26 15:01:46 +08:00

211 lines
4.9 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.
# 天梯系统API接口文档
## 概述
天梯系统API提供与玩家天梯等级、排行榜相关的接口。系统支持基于星星数的等级升降机制和王者分数机制。
## 接口列表
### 1. 获取排行榜
#### 接口地址
```
GET /ladder/leaderboard
```
#### 请求参数
#### 响应数据
```json
[
{
"playerId": "string", // 玩家ID
"username": "string", // 玩家用户名
"avatar": "string", // 玩家头像
"rankId": "number", // 天梯等级ID
"rankScore": "number", // 王者分数(如果适用)
"stars": "number", // 星星数(如果适用)
"totalWins": "number", // 总胜利场次
"position": "number" // 排名位置
}
]
```
#### 响应示例
```json
[
{
"playerId": "5f1a2b3c4d5e6f7g8h9i0j1k",
"username": "Player1",
"avatar": "avatar_01",
"rankId": 5,
"rankScore": 1250,
"stars": 0,
"totalWins": 128,
"position": 1
}
]
```
### 2. 获取玩家排名位置
#### 接口地址
```
GET /ladder/position/:playerId
```
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ------ |
| playerId | string | 是 | 玩家ID |
#### 响应数据
```json
{
"position": "number" // 玩家在排行榜中的位置未上榜为null
}
```
#### 响应示例
```json
{
"position": 5
}
```
### 3. 获取玩家天梯信息
#### 接口地址
```
GET /ladder/rank/:playerId
```
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ------ |
| playerId | string | 是 | 玩家ID |
#### 响应数据
对于开启王者分数机制的玩家:
```json
{
"rankName": "string", // 天梯阶级名称
"level": "number", // 天梯等级
"score": "number", // 王者分数
"isRankScore": "boolean" // 是否为王者分数机制
}
```
对于普通星星机制的玩家:
```json
{
"rankName": "string", // 天梯阶级名称
"level": "number", // 天梯等级
"stars": "number", // 当前星星数
"maxStars": "number", // 最大星星数
"isRankScore": "boolean" // 是否为王者分数机制
}
```
#### 响应示例
```json
{
"rankName": "Gold",
"level": 5,
"score": 1250,
"isRankScore": true
}
```
### 4. 获取所有天梯配置
#### 接口地址
```
GET /ladder/config
```
#### 请求参数
#### 响应数据
```json
[
{
"Id": "number", // 天梯ID
"Rank": "number", // 天梯阶级
"RankName": "string", // 天梯阶级名称
"Level": "number", // 天梯等级
"BeginStar": "number", // 升级后初始星星数
"RankDownStar": "number", // 降级后初始星星数
"MaxStar": "number", // 当前等级的星星上限
"WinGetStar": "number", // 胜利时增加的星星数
"ExtraGetStar": "number", // 连胜时额外增加的星星数
"LoseLostStar": "number", // 是否失败时减少星星1为是0为否
"LoseRankDown": "number", // 是否失败导致等级下降1为是0为否
"RankScore": "number", // 是否开启天梯分数机制1为开启
"AITimes": "number", // 等待多久后改为对战机器人
"AIDeck": "string", // 机器人卡组的RANK配置
"WaitTime": "number", // 扩大匹配范围的时间间隔
"MaxWaitTime": "number" // 王者等级匹配时,扩大分数范围的间隔
}
]
```
#### 响应示例
```json
[
{
"Id": 1,
"Rank": 1,
"RankName": "Bronze",
"Level": 1,
"BeginStar": 0,
"RankDownStar": 0,
"MaxStar": 5,
"WinGetStar": 1,
"ExtraGetStar": 0,
"LoseLostStar": 1,
"LoseRankDown": 0,
"RankScore": 0,
"AITimes": 30,
"AIDeck": "bronze_ai",
"WaitTime": 10,
"MaxWaitTime": 20
}
]
```
## 错误响应格式
所有接口在出错时都会返回以下格式的错误信息:
```json
{
"error": "string" // 错误描述
}
```
## 天梯系统机制说明
### 星星机制
- 玩家通过胜利获得星星,失败可能失去星星
- 当星星数达到当前等级上限时,玩家升级
- 当星星数为0且再次失败时可能降级
### 王者分数机制
- 当玩家达到特定等级后开启王者分数机制
- 不再使用星星和等级升降,天梯等级固定
- 玩家首次进入该等级时获得1000分的初始天梯分数
- 胜利加分规则:
- 若对手分数 > 玩家分数:加分 = MIN(对手分数 / 玩家分数, 3) * 20
- 若玩家分数 >= 对手分数加20分
- 若对手未开启天梯分数加20分
- 失败减分规则:
- 若失败方已有天梯分数减20分最低为0分
- 若失败方未开启天梯分数根据配置决定是否扣除1颗星星
### 排行榜规则
- 展示天梯等级最高的前100名玩家
- 排名优先级:天梯等级 > 天梯分数 > 当前天梯星星数 > 玩家胜场数
- 每天的00:00、12:00、18:00、22:00四个时间点刷新排行榜