文档章节

匹配算法

Mr_Young
 Mr_Young
发布于 2017/06/01 18:26
字数 978
阅读 54
收藏 1

概述: 匹配系统的目的如下,优先级从高到低:

1、 保护新手不被有经验的玩家虐;让高手局中没有新手。 2、 创造竞技和公平的游戏对局,使玩家的游戏乐趣最大化。 3、 无需等待太久就能找到对手进入游戏。

匹配系统尽其所能的匹配水平接近的玩家,玩家的水平是来自他们在此之前赢了谁以及他们对手的水平。当你战胜对手,系统会认为你更强,当你输给对手,系统会认为你更弱。虽然这对于某一局游戏并不是那么的公平,但是长期来看,对于多局游戏是相当的公平:因为好的玩家总会对游戏结果造成正面的、积极的影响。我们使用了这样一个方法测试:给水平高的玩家一个新帐号,然后看他们游戏数局后的结果。我们通过大量的测试来证明了我们的想法。

并且,匹配系统知道预先组队的玩家有一些优势,如果你是预先组队,会给你一些更强的玩家。我们用一些非常巧妙的数学方法来解决预先组队的玩家VS solo玩家的匹配公平问题。我甚至让两个数学博士来验证,他们都说给力!

匹配是怎么完成的?

首先,系统将你放进适当的匹配池里——根据游戏模式(匹配模式、排位solo/双人、排位5人、其他模式等等)

然后,系统会尝试将匹配池里的人分到更细的匹配池里——5人组队 VS 5人组队,低等级新手 vs 其他一些低等级新手,如此这般。

当你在匹配池中,系统会开始尝试找到合适的配对,目标是撮合一个双方获胜机会都为50%的游戏。

第1步:确定你的实力:

*如果你是solo,就直接使用你的个人匹配分(也就是elo值,匹配模式和排位赛有不同的匹配分) *如果你是预先组队的,你的匹配分是你队伍的平均分,并且会根据你组队的规模稍微提高一些,这样才能保证你匹配到更强的对手来抵消你组队的优势。我和一个计算机生物学的博士(Computational Biology Ph.D)通过研究成百上千的游戏结果,计算出了预先组队到底有多大的优势。我们还在幕后做了一些其他调整,比如新手和高玩组队,比如某地图上蓝队和紫队的玩家哪个更有优势,诸如此类。

第2步:确定你合适的对手:

*首先,系统会基于你的elo值,给你匹配跟你非常相近的玩家。最终,系统会放宽匹配的条件,给你一些不是那么完美的匹配,因为你肯定也不想永远匹配不到人。 *新手会得到一些特殊的保护,通常新手只会匹配到其他新手(在成熟的服务器里,这个比例达到了99%+。除非这个新手和一个高级玩家朋友预先组队)

第3步:确定匹配:

*最终,系统会匹配10个大体上同水平、同等级的玩家,促成一个游戏。 *系统会尝试平衡这个队伍,尽量使双方的获胜机会都为50%。在绝大多数时间,误差会在3%之内——类似50/50,49/51,48/52。实际上的获胜机会会有一点点差别(会在Q&A里面回答这个问题),但是我们的研究标明,在绝大多数情况下,这实际上是一个非常精确的预测。

© 著作权归作者所有

共有 人打赏支持
Mr_Young
粉丝 3
博文 53
码字总数 8989
作品 0
朝阳
程序员
私信 提问
String indexOf 之BF、KMP算法

一. BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二...

陶邦仁
2012/11/26
0
0
kmp模式匹配算法

KMP字符串模式匹配算法: 是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化。KMP算法的核心跳转表next进行了多...

一个小妞
2016/12/20
19
2
数据结构与算法JavaScript (五) 串(经典KMP算法)

KMP算法和BM算法 KMP是前缀匹配和BM后缀匹配的经典算法,看得出来前缀匹配和后缀匹配的区别就仅仅在于比较的顺序不同 前缀匹配是指:模式串和母串的比较从左到右,模式串的移动也是从 左到右...

文艺小青年
2017/06/01
0
0
字符串匹配之 KMP 和 BM 算法

本文主要介绍KMP算法和BM算法,它们分别是前缀匹配和后缀匹配的经典算法。所谓前缀匹配是指:模式串和母串的比较从左到右,模式串的移动也是从 左到右;所谓后缀匹配是指:模式串和母串的的比...

红薯
2011/07/08
6.5K
6
【算法篇】二分图匹配之匈牙利算法

二分图匹配,自然要先从定义入手,那么二分图是什么呢? 二分图: 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图...

沧海无雨
2018/07/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何从复杂单体应用快速迁移到微服务?

想必你已知道了微服务及其工作原理,现在是时候探讨如向微服务转变这个关键话题了。 为什么要向微服务转变 整体式(monolithic)应用程序很庞大(代码行数方面)、很复杂(功能依赖和数据等方...

架构师springboot
23分钟前
1
0
Maven与打包方式总结

一. war包 一般都是直接打成war包即可, 相关依赖都会放到 WEB-INF/lib 下. <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <version>3.0</version>......

foreach
24分钟前
1
0
JDBC详解

一、相关概念 1.什么是JDBC   JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接...

木云凌
47分钟前
2
0
分布式之延时任务方案解析

方案分析 (1)数据库轮询 思路 该方案通常是在小型项目中使用,即通过一个线程定时的去扫描数据库,通过订单时间来判断是否有超时的订单,然后进行update或delete等操作 实现 博主当年早期是用...

微笑向暖wx
50分钟前
1
0
博客目录

1.剑指offer目录 剑指offer目录 2.开放的面试题 开放面试题目录

细节探索者
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部