众所周知,网络游戏大厅匹配系统,一直是游戏很最重要的一环!在很多游戏中都是必不可少的的一环。比如,MOBA类 Dota,LOL,吃鸡 大地图这类,都少不了匹配,在服务器设计中也就成了很重要的一项功能。 这个细节的成败,直接决定了你游戏的寿命!在玩家心中是怎样的一个定位,玩家是否会买你的帐,是否愿意留下长久持续的玩下去。
这个细节的失败!那,后果不堪设想!比如,我很开心的匹配了一把游戏,结果系统给我匹配了4个坑比,于是,我玩完直接卸载了游戏。也许,你是花钱买量直接把这个游戏推到了高潮,在各个平台连续霸榜,不停宣传,画质多么精美,玩法多么惊艳!下载,即送史诗装备!结果,玩家下下来玩了一把,发现好像并不是那么回事!!然后,就再也没回来过... 你的宣传很成功,玩家好像留下了的也并不多!
如果,是在早期,那基本就是直接重开。如果,是在后期,浑身乏力,无力回天,没有足够技术能力,来解决此事情,那基本就是眼看这产品一步步慢慢的死去,最终消亡,然后,淹死在玩家谩骂的粪坑里!你想知道这是那款产品吗?
匹配是一个大话题,有很多挑战,但其核心是一个非常简单的问题:谁应该和谁一起玩?
今天我想讨论一下 如何选择与你一起玩的人,结合自己上一篇的文章中大厅中提到的匹配算法。因为匹配这个问题,始终都是一个大问题,不是随便说两句。如果,你玩的游戏足够多的话, 就会发现这些竞技游戏里的每一个匹配算法都是不一样的。虽属同一类游戏,但,各有各的天枰竞技系统。我玩过的这所有的竞技系统里,只觉得Dota2天枰竞技系统,算是比较合理的一种。至于,后来的游戏,暂时就不用提了。LOL与Dota2 算是同一时代的作品,但,两家的匹配系统就有这很明显的差异化。当然,最终赢得市场的,肯定不用说了。LoL凭借这自己的免费模式和与Dota类似游戏模式,一举吸走了Dota大量玩家,占据了主导地位。这两家也是算是竞品公司,有着打不完的官司。
这个问题很简单,但答案却相当复杂。 如今国内有很多大厂在做,但是,这些细节,他们是从来不透露的!不过,现在我也用不着向他们看齐,现在我也有足够的能力来实现自己的匹配算法了。
现在我就想安安稳稳的打一场游戏,需要考虑那些问题?
我们可能会考虑如下诸多的问题:
技能相似的玩家应该一起玩吗?
来自同一地区或语言的玩家应该一起玩吗?
我们应该考虑预组队吗?Ping 值?
我们应该避免匹配刚刚一起玩过的玩家吗?
我们应该使用匹配让恶意玩家互相对抗,并让他们远离普通人吗?
这些都需要解决!那么你最好有很多玩家!简短的回答是:数以万计的玩家同时在线,一直如此。除了最热门的游戏外,这并不现实,所以你通常需要用更少的玩家来玩,并充分利用你的匹配系统。
我还是那王者荣耀来说吧!把上期的文章图拿过来。
比如,现在的我就是要玩一玩ta 的游戏,我可能会选择ta的 三个模式中的其中一个。
在服务器层面应该会怎么考虑这个问题呢?不如,大胆的设想,简单化解决一下。我们可以把这三个模式分出来,那么,就有了, 对战匹配系统——排位匹配系统——娱乐模式的匹配系统。三个模式各不相同。假如,我的服务器有10000人同时在线,玩一把游戏需要10分钟左右,有3种模式。就可以得到一个简单的,每分钟玩的匹配玩家数量
10000/3/10 =333 每分钟人数
如果对局是20分钟呢
10000/3/20 =166 每分钟匹配人数
这只是,我们最简单的开始的一步,只考虑到了两个条件。
在考虑国内同等网速下,各个玩家之间的网速情况 Ping值,是否具有同等的网络情况,Ping小于多少可以进行匹配,简单取一个250ms 下可以进行匹配吧!假设,有一半的玩家网速是良好的,可以流畅体验游戏的。我们再来算一下
333/2=166 每分钟匹配人数
再考虑是否在同等段位下,玩家等级是否都达到了可以匹配的等级。我们暂切估个一半吧!有一半的玩家是可以进行匹配的,当然随着后期,玩的等级都达到了,我们就只需要考虑同段位匹配的人数了,人数也就变多了。
166/2 = 83 每分钟匹配人数
再考虑玩家组队的情况!社交竞技类游戏,那个没有个拉人组队。这里要考虑的是,单对单,多对多的问题,组队可能具有很大的优势,因为他们的团队合作能力可能会更好。因此,在理想情况下,组队只会与其他组队进行比赛。而单人排队者则由匹配系统将完全陌生的人安排成一个队伍。假设平均四分之一的玩家参加预组队:
83/4 =20 每分钟匹配人数
我们想把匹配算法趋近于完美,还可以叠加很多条件,促使能够到达相同水平玩家的人一起游戏。实际上,顶级玩家比其他玩家要好得多,因此无法实现理想匹配。排名前 5% 的玩家比排名前 33% 的玩家要好得多。我们根据技能匹配得越精确,效果就越好。我认为,为了实现理想的匹配,我们需要做得至少比上面好三倍:
20/3=6 每分钟匹配人数
于是,我们就剩下了6个人可以匹配。有十个坑,填满才可以进行游戏。
10/6 =1.6
大于需要1.6倍的玩家(16000)数量同时在线,才能进行完美的匹配。玩家数量每天都有很大的波动,晚上深夜人数可能最多,清晨早上的时候可能人数最少。因此,如果要在淡季也能实现良好的匹配,我们仍然需要三倍以上的玩家。因此,我们需要在高峰期有48,000 名同时在线玩家才能实现良好的匹配。这可能相当于每月超过 500 万独立玩家。当然,现在的王者农药每日在线活跃数量就已经达到了百万。举例的这些数字并不是为了夸张,而是为了能足够的说明问题。
我们把所有的问题都考虑到了,剩下的是不是就是一个并发量的问题,10000并发虽然很多,但是能匹配的人数确很少。
在构建多人游戏时,考虑这一点很重要。理想的匹配需要大量的玩家,如果你的匹配是假设会有这么多玩家,那么你可能会做出一些对更现实的数字来说效果很差的东西。因此,理想的匹配系统是灵活的:当有大量玩家时,它可以实现完美的匹配,但也能充分利用少量玩家。