背包乱斗�代码解析
匹配与加分
目录
段位分数详解
段位 (League) | 索引 (Index) | Rating 区间 (Range) | 区间长度 (Span) |
Bronze (青铜) | 0 | 0 - 49.9 | 50 |
Silver (白银) | 1 | 50 - 119.9 | 70 |
Gold (黄金) | 2 | 120 - 199.9 | 80 |
Platinum (白金) | 3 | 200 - 299.9 | 100 |
Diamond (钻石) | 4 | 300 - 399.9 | 100 |
Master (大师) | 5 | 400 - 479.9 | 80 |
Grandmaster (宗师) | 6 | 480 - 549.9 | 70 |
Grandma (大爷) | 7 | 550 - 849.5 | 299.5 |
匹配机制概括
对手池选取逻辑详解
对局数据上传机制
匹配惩罚分计算
因素分类 (Category) | 触发条件 (Condition) | 惩罚分 (Malus/Score) | 逻辑解释 |
自身规避 | run.playerId == self.id | +10,000.0 | 绝对排除。防止匹配到自己的 Run。 |
名字碰撞 | run.encodedName == self.name | +5,000.0 | 绝对排除。防止匹配到重名 |
模式隔离 | 玩家与对手 Ranked 状态不一致 | +1,000.0 | 强力排除。Ranked 玩家不应排到 Unranked 数据 |
10胜隔离 | theirWins == Game.MAX_WINS(10) | +1,000.0 | 强力排除。很神秘的逻辑。可能是bug。这会导致进入生存模式更困难。10胜的排不到10胜,只能找11胜的。 |
重复遭遇 (极刑区) | 距离上次遇到 < 5 轮 | +1,100.0 + (12 - 距离) | 强力排除。极短时间内绝对不许遇到同一个人。 |
重复遭遇 (强效区) | 5 ≤ 距离 ≤ 12 轮 | +131.0 + (12 - 距离) | 严重惩罚。 |
重复遭遇 (轻微区 I) | 13 ≤ 距离 ≤ 22 轮 | +0.2 | 微弱惩罚。 |
重复遭遇 (轻微区 II) | 23 ≤ 距离 ≤ 32 轮 | +0.1 | 微弱惩罚。 |
胜场差 (强敌) | 对手胜场 > 目标胜场 | +10.0 × 胜场差 | 匹配逻辑。向上匹配惩罚更重,尽量不让玩家打胜场比自己高太多的对手。 |
胜场差 (弱敌) | 对手胜场 < 目标胜场 | +5.0 × 胜场差 | 匹配逻辑。向下匹配惩罚较轻。 |
巨大分差 | Rating 差 > 150 | +12.0 | 中度惩罚。防止分段差距过大的匹配(如青铜打钻石 |
Rating 微调 | 任意分段差 | + (Rating差 / 1000.0) | 微调。 |
职业连撞 (单连) | 上一把(-1)是该职业 | +0.2 | 微调。 |
职业连撞 (双连) | 上两把(-2)全是该职业 | +22.0 | 中度惩罚。防止连续三把打同一个职业 |
职业抑制 (泛滥) | 该职业近期出现最多 | +0.1 | 微调。 |
职业奖励 (稀缺) | 该职业近期出现最少 | -0.1 (奖励分) | 奖励。 |
随机噪声 | 无条件 | +0.0 ~ 0.05 | 防死锁。打破同分僵局。 |
举例
加分算法概括
加分公式
ご清聴ありがとうございました
引き続きよろしくお願いいたします。