有没有懂游戏匹配实现的(以炉石传说为例),求指个路

165 天前
 xymeng16

先说下我的思路,通过 elo 、段位等,判断一个用户所在的匹配池,随匹配时长逐步放宽匹配条件(加入更多匹配池)。但是在匹配确认的时候会有很多重复情况需要唯一性判断。

网上搜索了一下,没有关于这方便的资料,想问问各位大佬,有什么书籍或网站推荐嘛~

3200 次点击
所在节点    游戏开发
11 条回复
flynaj
165 天前
星际争霸 2 可以看到 mmr,就是就是你的分数,打完一局就会根据输赢变动 mmr,确实是匹配分数相近的,然后扩大,但是不会超过分数差 300
araraloren
165 天前
垃圾匹配机制,“旗鼓相当的对手”
LuckyPocketWatch
165 天前
1 。游戏的分数,匹配类似水平的人
2 。道德分,通过记录游戏内发言等,匹配近似的人
3 。偏好分,游戏有种族,地图等各种元素,比如我不喜欢打千甲德,遇到就秒退,那就别给我匹配这个卡组
4 。网络等其他因素,比如地区过大,甚至歪果仁账号会导致卡顿加剧

对每个用户做个标记,当匹配失常过长时,放宽某个条件,比如游戏分数区间扩大,然后观察该用户的反馈,如果条件放宽后导致用户秒退,骂人等情况增多,则标记该用户为“不适合扩大游戏分数”,并尝试扩大道德分区间,以此类推

最终每个用户都有自己的标记
zhangk23
164 天前
感觉炉石也是 mmr

之前我用脚本打,我两个号的胜率出奇的低,只要同时开始排每隔五六把总能撞上

而且哪怕换我月中本尊亲自打上传说后,两千多名排到的依然是白金钻石段的,遇到的传说也基本都是脚本
Donaldo
164 天前
prosgtsr
164 天前
没有游戏匹配实现,我这只有 pk 实现
总的原则是,只要保证最后把这一组匹配到的人从匹配池子中拿出来的时候是原子性的就行了
比如可以都加入匹配池,然后起定时任务根据分值捞一批相近的,然后判断是否可以匹配,如果不可以就放弃等待下一轮,如果可以,就尝试从匹配池中原子性的将这几个人取出,如果取出成功就进行游戏开始的逻辑
rqYzyAced2NbD8fw
164 天前
@Donaldo #5 😰
zackzergzeng
163 天前
@LuckyPocketWatch 炉石有偏好分这个东西吗,我感觉我打一个职业或者卡组胜率越低,他就越给我匹配,要么连输好几次把胜率拉到均线,要么克服心魔上段
sentinelK
163 天前
不光如此,还要考虑用户近 X 局游戏的胜率以及游戏的运营策略。作为反向权重,从而提升游戏日活。

比如默认情况下,匹配的是隐藏分-300~+300 范围的对手。
如果本次游戏 session (本次登录)游玩时的胜率高于 50%,那就要匹配同样胜率高于 50%的对手。

如果对方本次 session 的胜率过高,比如高于 80%(一般来讲,实践中会计算一个权重,不会是一个死的阈值,这个权重算法还会有游戏运营、策划的参与),除了匹配同样高胜率的选手外,还要增加隐藏分的匹配范围,比如变成 0~+500 。

核心目的就一个:提升用户日活。用户有日活,才有可能消费。
sentinelK
163 天前
然后像是炉石,这种有“预组”的游戏。用户本身的“预组”也是匹配权重算法的一部分。
htxy1985
112 天前
不确定你是在总体思路,还是具体算法。
"先说下我的思路,通过 elo 、段位等,判断一个用户所在的匹配池,随匹配时长逐步放宽匹配条件(加入更多匹配池)。"

之前做过匹配机制,跟你这个描述是一致的,但是这只是答题思路,实际实现的算法的复杂程度还是跟你的业务有关,比如单人还是组队,有没有运营策略参数加入等。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1122408

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX