写在前面
来网易做游戏匹配相关的工作也一年多了,从最开始不知道什么是匹配,到现在也成功做了几个游戏战场的匹配系统,后续准备多写写游戏匹配系统相关的介绍。
设计一个匹配系统服务时,需要考虑玩家的习惯、行为和期望。匹配系统本身是一个没有完美答案的难题,其中大部分重要的决定都是只能进行权衡取舍,不存在面面俱到的解决方案,越多人加入匹配,匹配可选择的空间就越大,结果就越准确。
下面是一些做匹配系统时需要考虑的因素,有的可能是矛盾的,需要开发者自己权衡。
一、时间因素
匹配系统的第一个要素:尽可能快的匹配到对局,从而使得你不需要等待太久。这是匹配系统优先级最高的规则之一。
这个对于不同的游戏,还不尽相同。比如对于像逆水寒这种MMO游戏,除了战场还有其他玩法,对匹配时间的要求会低很多。对于MOBA这种,匹配不上就不能玩其他的,对匹配时间的忍耐度会低很多。
玩家对匹配的等待时间有一个容忍度,当等待时间超过某个阈值时,玩家们便开始抱怨匹配花费的时间太久了,匹配等太久会让玩家的体验变得非常差。在LOL中,数据分析表明:90s是玩家比较接受的匹配等待时间的阈值。
玩家排名等级越高,匹配时间越长。这是由于在一个游戏里面,头部玩家是少数。
比赛等待时间还与每局游戏的长短有关,每局游戏时间长的对匹配等待时间的容忍要高一些。比如欢乐斗地主(几分钟一局)和Dota2(几十分钟一句)的玩家对匹配时间的容忍度是不一样的。
对于不定时长的战场来说,可以通过对历史对局数据分析来得到对局时长。
匹配等待时间和质量需要进行权衡,当玩家数量少时,我们可以适当降低匹配质量,从而保证匹配时间,当玩家数量足够多的情况下,系统就有足够的选择,可以在时间阈值内找到最优的匹配。
二、网络延迟(ping)和地理位置
匹配第二个要素:尽量相同的玩家延迟,也就是我们常说的ping值。对于射击游戏来说,网络延迟太高也带来严重的负面体验。
守望先锋曾经在第二次压测的时候做了一个尝试,提高了技术水平和等待时间的匹配要素优先级,结果官网论坛玩家们爆发了,玩家们纷纷要求给出一个选项可以自己选择服务器。
玩家打游戏时候的网络延迟,对玩家游戏体验影响很大。如果将延迟低的玩家和延迟高的玩家匹配在一起,可能会有不好的体验。比如”在墙后被射到”
可以考虑对玩家延迟时间进行分桶,基于桶对玩家进行匹配,根据等待时间再对桶进行扩大。
如果两个人ping值差异太大的人组队,会给匹配系统带来不稳定性,这是游戏无法解决的问题,但是游戏允许ping值差异大的玩家组队。这块我们可以考虑下队伍玩家的平均ping值
尽可能将地理位置相近的玩家匹配在一起,地理位置相近的玩家ping值一般也差不多。
玩家FPS(刷新率)类似于网络延迟,可以一同考虑
三、玩家组队
匹配系统的第三个要素:组队
现在的游戏大多都支持组队,组队有利于社交以及游戏的推广。
匹配系统会首先尝试匹配同样组队人数的双方队伍。而当等待时间增加时,系统会扩大搜索范围尝试寻找其他人与他们进行游戏。比如会出现单排玩家和组队玩家匹配到同一局。
不同的组队人数:组队的人越多,队伍的实力会有额外加成,比起单排玩家有优势。尤其是玩家风格、位置偏好、擅长英雄互补的玩家在一起组队。
四、匹配等级
匹配系统的第四个要素:玩家的匹配等级(Matchmaking Rating)。匹配等级是在匹配时最重要的一件事,MMR等级的意思可以理解为”你的水平如何”。
两边最强玩家的技术水平大致相同,绝地一场比赛胜负往往是最强的那20%玩家。
最小化一场比赛中拥有最强技术及最差技术的玩家的差异,尽量让同一场比赛中玩家实力相差不大。
在FPS游戏中需要考虑几点影响MMR的因素:
- 游戏的地图,FPS游戏中一般会有多张地图
- 进攻方或防守方,FPS游戏中一般会有进攻方和防守方,需要考虑
- 一场对局中使用英雄的表现
- 胜率和MMR是没有关系的。但是大多数人处于50%的胜率,是一个匹配机制成功的关键指标。
五、服务响应时间和稳定性
服务响应时间其实会影响玩家的匹配等待时间,减少服务响应时间可以提高服务TPS,从而增加匹配系统稳定性和减少玩家等待时间。
稳定性的话,主要指的是匹配系统服务不能挂掉,玩家在论坛吐槽匹配系统的,第一是吐槽匹配机制有问题,其次就是吐槽匹配系统挂了,匹配不上了。这块相信Dota2的玩家很有体验,是不是就红字。
这个很影响玩家的体验,尤其对于moba类游戏。
六、玩家匹配时的状态
一个非常在乎排名的玩家(谨慎)和一个不太在乎排名但是喜欢困难比赛的玩家对匹配的期望是不一样的。
同一个玩家在他连输3场时和连赢3场时,对接下来匹配的期望是不一样的,这个进一步会造成玩家的流失,下面是EA公司开发的一款moba游戏的统计数据:
最后3局比赛 | 流失率(7天) | |||
---|---|---|---|---|
DLW | LLW | LDW | DDD | 2.6% - 2.7% |
WWW | 3.7% | |||
DLL | LWL | LDL | 4.6% - 4.7% | |
WWL | 4.9% | |||
LLL | 5.1% |
注:W: 赢,L: 输,D:平
连胜连败玩家处理:连败玩家怎么处理,考虑连胜玩家是否需要处理。这块可以可以用来保证单个玩家的胜率在50%左右
很久没有进行游戏的玩家:会有一定MMR降低,毕竟太久没玩,手生
完全的萌新:通过适当的措施来避免跟太强的玩家匹配到一起,最小化最有经验(以玩了多少场游戏来衡量)的玩家及经验不足的玩家之间的差异,或者可以先匹配机器人。
七、比赛收益
针对存在比赛收益的战场,收益的大小(FPS的排位、MMO的战场奖励等等)也是影响玩家体验的关键因素。
要适当的给与玩家奖励,不能匹配出来,玩家一直拿不到奖励或者奖励很少。
干预方式有很多,比如可以根据玩家表现评定,决定整场比赛的奖励/玩家个人的奖励
八、玩家偏好
阵容匹配系统:阵容匹配系统能让你选择想玩的英雄、想要的角色定位和分路进行匹配,并且会和队友同样选择了想玩的英雄和角色定位的玩家们组成一支队伍。
通过阵容匹配系统,队伍中的所有成员对各自的英雄和分路都无异议。你剩下要做的,就是和队友一起讨论出,该如何打败你的对手。
有的MOBA游戏,在匹配前,会让玩家进行英雄和位置的预选,然后再进行匹配,比如王者荣耀。
如果游戏模式不支持,我们也可以在算法上进行支持,根据玩家的历史画像信息,当玩家点击匹配时,来预测玩家的位置和英雄,然后再进行匹配。
对一些低能力的玩家一般只玩几个英雄,更需要将不同英雄偏好的玩家匹配到一起。
九、玩家社交
游戏通过匹配机制来匹配陌生人,成为陌生人社交交流的第一步,在对战期间为了获得胜利而和队友进行合作,面对来自完全不同背景的人,积极地参与游戏,甚至和玩家成为朋友
考虑男性玩家和女性玩家的搭配
喜欢沟通的玩家(社交型)、喜欢杀人(成就型)、其他类型,基于玩家标签进行匹配
十、消除恶意玩家(信用分以及行为分)
恶意玩家包括代练、故意下分的玩家,可以考虑将这一类玩家分配到一起,守望先锋有这样的做法,dota2小黑屋也类似这种
可以采用匹配等级和信用分并行的制度,CSGO有采用这种制度
dota2有采用行为分的机制。
这个简单的来做的话可以根据玩家是否被举报、点赞(游戏是否支持)以及匹配后没有进去、中途强退、挂机、消极比赛等来进行计算。
针对代刷、代练玩家策略(V社):
在相同分数段下,取每个人最近K场比赛的胜负记录和(胜+1,负-1),然后使得两边队伍总的最近K场胜负记录和为0
举个例子:比如K=10,这个时候你的战绩是近10场9胜1负,和为8。假设此时已匹配3个队友的和都为0,那么最后会给你匹配一个和为-8(1胜9负)的选手。在这种机制下,比较能抑制代打,因为短期内你战绩越是厉害,队友就越弱。
十一、心理学要素
心理学要素也很关键。心理学上,人们倾向于记住失败,并且对失败印象更加深刻,情绪更加激烈。
一般玩家在论坛发帖说,他们很生气,因为打了四连败。但是从来没有见到玩家发帖说,匹配机制有问题,因为他们打了四连胜……
这个可以和玩家匹配时状态相结合
十二、匹配系统中的不稳定因素
提前退出游戏的玩家导致游戏人数不齐
有时候你朋友、同学会玩你的账号
有时候你的无线鼠标没电了
有时候你的网络很卡
有时候你在喝醉或很累时进行游戏,或者两者都有
有时候你的队友失恋了,失业了,考研失败
生活
……
参考资料:
《Matchmaking in multi player online games studying user traces to improve the user experience》
《An Engagement Optimized Matchmaking Framework》
《Developing Game-Structure Sensitive Matchmaking System for Massive-Multiplayer Online Games》
守望科普#9:守望先锋的匹配系统是如何设计的?https://zhuanlan.zhihu.com/p/25887926
从白银到地球:详解CS:GO段位机制 https://zhuanlan.zhihu.com/p/38583349
Dota2 Wiki 匹配 https://dota2-zh.gamepedia.com/index.php?title=%E5%8C%B9%E9%85%8D&variant=zh-hans
阵容匹配系统 https://lol.qq.com/act/a20140609zrppxt/index.htm#link4
CSGO个人能力体系&如何提高个能力 https://zhuanlan.zhihu.com/p/27226273