文章目录

  • 一、MMR机制——炉石传说、DOTA2、LOL、LOLM
    • 1)简介
    • 2)影响因素
  • 二、ELO机制——王者/LOLM(也就是LOL手游)
    • 1)简介
  • 三、trueskill 2——光环、彩虹六号
  • 四、独特机制01——皇室战争
  • 五、Glicko——csgo
  • 六、匹配机制的总结
    • 1)匹配机制并无绝对的优劣之分,需要根据目的来进行选择。
    • 2)复杂化、多维度的算法将会成为未来发展趋势
    • 3)未来的匹配及积分算法会被更广泛地应用于反作弊系统
    • 4)降低玩家上分难度将会成为未来匹配革新的关键
  • 七、ELO机制详解(以DotA2举例)
    • 1)ELO机制背景
    • 2)算法讲解
      • (1)统计玩家的胜负波动情况
      • (2)根据近k场比赛数据来预测MMR
    • 3)V社为了针对代刷代练的策略
    • 4)ELO RANK算法逻辑步骤(多人匹配,标红字段以后再补全)
    • 5)ELO RANK机制的缺点
    • 6)ELO RANK对游戏的关联
      • (1)一般做法
      • (2)强调个人表现的游戏

重点在七,可以直接跳到七
ELO维基传送门
油管视频讲解

一、MMR机制——炉石传说、DOTA2、LOL、LOLM

1)简介

MMR机制全称为matchmaking system,也被乘坐隐藏分。MMR机制存在的目的是尽可能给出不可预知的比赛即绝对平衡的比赛,要求双方获胜的概率都尽可能倾向于50%。

2)影响因素

同时,现阶段的游戏匹配也往往不会只使用MMR机制作为游戏匹配的依据,往往会结合其他因素来对玩家实力进行综合衡量。例如玩家所在地区网络延迟状况、玩家预选位置、玩家水平等综合因素。


从设计思路来看,MMR匹配机制倾向于绝对的公平,来保证玩家有更好的竞技体验。但同时也会滋生一些其他问题,例如隐藏分低于玩家真实分数时,就容易出现补分(对局获得积分极少)的情况。而隐藏分的评价往往不只取决于本局游戏的胜负,也受到玩家局内行为的影响。(KDA、伤害值等),而这给了部分玩家投机空间,也使得部分玩法(送死流)成为受害者。

MMR:每次玩家A获胜或者失败,系统都会根据角色性质给其分配一个权值,在其再次匹配时根据权值总和来匹配与其相近的玩家,而算出的因素在下面

1)本局游戏的胜负
2)胜负、
3)参团率
4)输出
5)打塔
6)辅助支出
7)金钱
8)等级
9)网络延迟状况
10)玩家预选位置
11)KDA
12)MVP
13)承受伤害

二、ELO机制——王者/LOLM(也就是LOL手游)

1)简介

王者荣耀与LOLM均为ELO机制游戏的典型代表,此处引用下ELO的概念:1960年,美国国际象棋协会(USCF)采纳了埃洛教授的等级分系统。国际棋联于1970年也采纳了这套系统。 ELO等级分的原理 ELO等级分的计算则是从一个时间点开始有一个初始分,然后随着每次比赛,根据比赛结果和对手的等级分,进行自己等级分的修正,进而在多次比赛后收敛得到接近选手真实水平的积分。 即使粗略看比赛成绩表,也能够看出选手的表现是有起伏的,也就是有“状态”之分。强手未必恒定表现好于弱手;每人之状态在不同的日子不同的比赛里都会有好 坏不同。而总的来说整个生涯里每一点上,一名选手的表现将大致围绕在某个平均水平上下波动,有时会有背离,而出现大背离的情况比出现小背离的情况频率要低

从以上一段中我们可以得出,其实ELO其本身只是一种通过大量实践进行修正的积分排名制度,

  • 与王者荣耀中令人痛恨的ELO匹配并无绝对关联。那么王者荣耀的ELO匹配又是什么?

王者荣耀的ELO匹配更多的是一种基于游戏粘性而采取的破坏体验的做法,即双方的实力不会处于绝对平衡的状态。


如图所示,即玩家有可能在对局中,匹配到比自己系数分高一百的对手,而这已经足以让胜利天平倾向对方

  • 重点

此种做法从竞技游戏的角度来讲并不合理,但适用于相当一部分手游,原因如下:首先手游自身的竞技属性低于端游,同时较低的成本也会吸引相当数量的非竞技属性玩家。此种游戏生态下,保证各种玩家在游戏中的体验成了优先级更高的事情。

三、trueskill 2——光环、彩虹六号

  • 简介
    trueskill主要是微软开源,在其旗下XBOX平台的游戏进行应用,相比于传统的MMR,则更灵活, 易扩展, 也更容易应用。由于理论及公式过于复杂,此处不进行展开讲解,仅具体讨论其创新点。

  • 原理
    TrueSkill算法认为每一个参与排名的人的能力是不稳定的,即所谓的神经刀,这使得玩家的实力并非一条绝对的水平线,而是符合正态分布的。相当于是在MMR的基础上,对MMR值的标准差进行了统计,考虑到了玩家的不稳定性。通过TrueSkill算法,对比匹配双方的玩家实力的方差,来得出更合理的结果

四、独特机制01——皇室战争

  • 背景
    皇室战争的匹配机制较为简单,由于该游戏的奖惩机制处于相对稳定的零和博弈(胜方会获得败方的奖杯)的状态,且采用的是ELO算法,所以此处仅讲与其他ELO匹配算法游戏的不同点

  • 目的
    皇室战争相较于其他竞技游戏,很重要一点的差异是存在局外养成,即游戏的胜负并不绝对依靠于玩家的操作。这往往对于强竞技属性但付费较少的玩家来说很容易造成不够好的体验,例如出现12级大本营对战5级大本营的情况。

  • 机制说明
1)而为了修正这部分玩家的体验,皇室战争做了额外的匹配规则,在5000杯(非高手阶段)以下,会参
考
(1)玩家的国王塔等级来进行匹配,即系统不仅会为玩家匹配杯数相近的对手,
(2)也会匹配付费力度相近的对手。
而较为巧妙的点是设置的`5000杯`这个节点,5000 杯以下的绝对公平保护了中小R及非氪玩家的权益,
避免在开始就因为匹配机制就流失。而在5000杯以上,对于想要冲刺高排名的玩家而言,在此时付费也
可以带来明显的卡等压制。相当于在前期以保障玩家体验为目的进行了短暂的付费抑制,而在玩家已经
养成游戏习惯后,放大付费的收益。2)反作弊方面:
皇室战争添加了一个有趣的设定,双方玩家在彼此经历三个非对方的对手前,无法再次遭遇到,增加了
高分段演员的门槛,如图所示。

五、Glicko——csgo

  • 定义

csgo采用的算法为Glicko算法,此种算法为Elo的改进模式。Elo系统的问题在于无法确定选手评分的可信度,而Glicko系统正是针对此进行改进。Glicko系统在Elo的基础上引入了新的参数,即RD,ratings deviation,即考虑到了玩家对手之间的偏差值。简单举例,如果玩家A在赛季初期第一天凭借着版本优势及运气打上了王者段位,但其长久未玩,此时该玩家若再次进行匹配,结算时该玩家是否能被视为王者段位来进行加减分?答案显然是否定的,因为在假定情境中,玩家A上王者属于偶然事件,加上其长期未玩,没有足够的样本量来衡量其水平。Glicko中的RD值即为应对此种情况,玩家用于匹配的隐藏分由常规类似Elo值加上RD值构成,玩家游戏越频繁,则RD值越低,反之亦然。

  • 锁分机制

同样,作为开挂的重灾区,csgo也存在着锁分机制,即玩家若在短时间内积分有着大幅度变化,个人表现提升明显,则该账号会进入锁分状态,账号在锁分状态下,隐藏分无法增加。

六、匹配机制的总结

1)匹配机制并无绝对的优劣之分,需要根据目的来进行选择。

如文中所提到的MMR和ELO,这两种机制都有其存在的理由,核心关键依旧是需要策划同学判断出自身游戏定位,以及想要通过匹配来追求什么样的结果来确定匹配方式。

2)复杂化、多维度的算法将会成为未来发展趋势

复杂化、多维度的算法将会成为未来发展趋势。从最基础的MMR单一机制衍生为现在的GLicko、GLicko2、trueskill、trueskill2等优化算法的不断出现,也在不断佐证这一点。

3)未来的匹配及积分算法会被更广泛地应用于反作弊系统

目前绝大部分游戏的反作弊机制还是依靠举报及主要是扫描后台进程,加密游戏进程,识别异常数据来完成,当然也会有对玩家异常的监测机制,但远远无法成为关键,而经过训练的AI模型或算法,或许在未来会成为游戏厂商在这场军备竞赛中获胜的关键。

4)降低玩家上分难度将会成为未来匹配革新的关键

目前绝大部分玩家在竞技过程中,均会经历漫长的成长期,这是由多方面因素决定的,如玩家实力上升是逐渐趋于缓慢,新账号的隐藏分过低等因素。这也反映了现在的算法是比较难在小样本的情况下对玩家实力做出较为准确评估的,笔者认为后续能够降低上分路上的过程,及时把每个玩家送到该去的分段,不去影响他人的游戏体验也是值得优化的重点。

七、ELO机制详解(以DotA2举例)

1)ELO机制背景

匹配机制并不是MOBA网游发明的.早在1960年的职业国际象棋联赛就运用了ELO排位理论为选手匹配对手,一直沿用至今,是当今对弈水平评估的公认的权威方法.而设计这种排位理论的是匈牙利裔美国物理学家Arpad Elo(1903-1992).

2)算法讲解

(1)统计玩家的胜负波动情况

ELO算法先是采用了统计学的手段,用正态分布函数去拟合了玩家在比赛时的波动表现,其概率密度函数可表示为:


ELO经过了大量数据的模拟之后,发现玩家在比赛中表现的波动情况更接近于(logistic distribution),于是就有了以下公式可用:





来表示a和b的天梯分(rating score),那么a对b的期望胜率是:


于是概率密度函数为:(x=Rb-Ra,这里的P(x)就是A对B的胜率

这里x的意思就是a和b的分差(Rb-Ra),P(x)就是a对b的期望胜率。

到这里可能你已经有一点晕了,没关系,我现在立马祭出1550分的李狗蛋和1500分的王建国进行父子局Solo。我们认为这两个人基本是在同一个水平段上的玩家,那么高出50分的李狗蛋期望胜率究竟有多大?我们把 x = 50 代入以上式子,得到P(50) = 57.1%,也就是说,李狗蛋有57.1%的概率能成为爸爸!

但是,可能细心的同学会问,11天梯上的分段和DotA 2的分段比例明显不符合,能用同一个公式计算期望胜率吗?

显然不能,你需要自己重新调参。

(2)根据近k场比赛数据来预测MMR

如果你们接触过DotA 2的话应该会知道,在刚够资格打天梯的时候,会有10盘被称为「定分赛」的局。也就是说,这10盘的战绩很大程度上会决定你初始的天梯分,那么系统是怎么来评估的呢?其实并不难,从简单模型角度出发,在这10把「定分赛」中,我们有一个期望的胜率和,用


来表示:

然后这10场比赛的实际情况,我们用


来表示,取一个[0,1]之间的值,根据具体游戏内容而定,比如在DotA2里就会考虑胜负、参团率、输出、打塔、辅助支出、金钱、等级等等因素,我随便找了一张IG的比赛战绩图,来直观感受一下每位选手表现的主要特征:


可以看出,大妈的火猫无论在参展率还是伤害上都占了很高的比重,打钱能力更是突破到每分钟608金,无愧本场 MVP 称号。
那么你在10场「定分赛」后,天梯分(MMR)可以近似认为:
(假如一位哥们在比赛中的真实得分 W(胜=1分,和=0.5分,负=0分)和他的胜率期望值We 不同,则他的等级分要作相应的调整。具体的数学公式为)

其中

是根据你普通匹配得到的一个初始分,K是一个特殊的权重因子,不同分的权重不同

当然,以上提的所有内容都是竞技游戏匹配的大框架,放在具体的游戏里,特征就会有上百上千个,为了匹配的所要调整的参数也有上百甚至上千个,不同版本的迭代又会导致平衡问题的出现。不光是,即使在DotA、LOL这样的MOBA游戏里,会有不少针对性的手段来调整匹配的平衡性。据我所知,V社为了针对代刷代练,一般会有这样的策略:

3)V社为了针对代刷代练的策略

1)在相同分数段下(比如[公式],如果一段时候后仍匹配不满,这个区域会扩大),取每个人最近K场比赛的胜负记录和(胜+1,负-1),然后使得两边队伍总的最近K场胜负记录和为0

例子:
举个极端的例子,比如K=10,这时候你战绩是近10场中9胜1负,和为8。假设此时已匹配3个队友的和都为0,那么最后会给你匹配一个和为-8(1胜9负)的选手。在这种机制下,比较能抑制代打,因为短期内你战绩越是厉害,队友就越弱。

4)ELO RANK算法逻辑步骤(多人匹配,标红字段以后再补全)

(1)系统会先将当前匹配中的ELO RANK(隐藏分)近似的玩家拉到一个匹配池子中
(2)再按一定的算法抽取本厂所有的对局玩家,比如5v5就抽取10位玩家
(3)并通过穷举法最终形成最优的匹配队列,使双方的的平均ELO RANK在所有排列组合中最为相近,有的还会要求队伍中每个人的ELO RANK标准差尽可能的小

5)ELO RANK机制的缺点

(1)由于这个匹配机制诞生于单人PVP象棋,对于组队游戏来说,ELO是把双方队伍看成了一个整体,弱化了个体差异的表现,(假如队伍的职业配合较弱,换句话说,5个牛逼的奶妈也能打,个人水平的离散值更大)
(2)但如果加上队伍内标准差比较小的机制,对于少人的匹配的游戏就不适合,没人匹配个鸡儿

6)ELO RANK对游戏的关联

(1)一般做法

思路:先调平衡,队伍内的标准差比较小,再调整队伍
作用:造成玩家之间的实力差距
目的:尽量保证个人实力不会对胜负造成影响

(2)强调个人表现的游戏

思路:会先选择先调整队伍胜率接近50%,然后再调平衡
作用:保证玩家之间有实力差距
目的:给实力突出的玩家表现的机会

游戏思考系列03:游戏匹配机制(MMR、ELO、trueskill2、皇家战争、Glicko等,详细讲ELO,其他的简略)相关推荐

  1. 游戏思考24:游戏寻路算法思考和Unity场景相关代码开发原则及导入地图数据(10/09)

    文章目录 一.游戏寻路算法 1)总体划分为 2)取几种算法详细介绍 (1)JPS介绍及其优化 二.场景相关开发原则 1)Unity开发商业项目场景开发基本原则 2)商业项目的大体流程和组织思路 一.游 ...

  2. 补充游戏思考13:游戏服务器杂谈(主要讲mmorpg,年更系列,未完待续10/20)

    文章目录 一.冒险岛状态同步数据的举例说明 1)基于帧的人物状态同步 2)基于预言的人物状态同步(插值计算) 3)基于客户端的怪物状态同步 4)基于服务器的怪物状态同步 一.冒险岛状态同步数据的举例说 ...

  3. 游戏思考系列02:技能伤害计算流程(不涉及buff)

    文章目录 一.题外话: 1)技能伤害和特效表现的分离 二.流程(举例:逻辑和业务分开:技能可以分为四个阶段) `举例`:LOL日炎灼烧效果,每0.5s产生一次伤害 1)客户端开始施法,技能前摇.此时通 ...

  4. FXGL JAVA游戏引擎 教程 03.游戏UI

    当我们拥有一个实体并且对其绑定了可移动的组件之后,我们拥有了一个可以自由操控控制的角色.但是距离成为一个真正的游戏还有几个必不可少的组件需要实现.其中游戏ui就是不可或缺的一个组件. 坐标系 对于所有 ...

  5. 游戏思考26:游戏服务器压力测试文档(新增linux相关命令,02/10未完待续)

    文章目录 一.压力测试关注点 二.计算最耗时的加载操作 1)从数据库读取数据,对加载的类型进一步划分各种类型,计算最耗时操作 2)查看CPU随着在线人数的变化所占百分比 3)查看内存变化 4)备注 三 ...

  6. 游戏思考12:游戏的随机数考究(重点在目录的第三章)

    文章目录 一.如何实现乱序的随机排序,而不占用空间 (1)想法来源 (2)算法作用 (3)效果展示 (4)代码 1)cmakelists.txt 2)main.cpp 3)Prandgen.cpp 4 ...

  7. 游戏思考10:游戏服务器的进程和线程简单谈谈(未完待续6/30)

    文章目录 一.总的看法 二.各种搭配 1)多进程单线程(每个单进程一个单线程) 2)单进程多线程 3)单进程单线程 一.总的看法 之前游戏开多线程是因为机器原因,榨干CPU的全部性能,现在机器性能好了 ...

  8. 符号库匹配不对的原因_王者荣耀:万恶的游戏匹配机制,最菜的队友才是游戏胜利的关键...

    在王者荣耀中排位是我们很多玩家的追求,不过在游戏中,因为排位上不去从此的退出游戏的,也是大有人在.一个游戏有新玩家进入,有老玩家离去是一个游戏正常的生态,不过很多因为上不了段位退出游戏的玩家,并且是因 ...

  9. 浅析竞技游戏匹配机制-ELO算法

    注:本文部分内容源自一位论坛大神,但具体的来源很抱歉笔者已经忘记,如侵即删. 文章目录 0 前言 1 一般胜率预测算法 2 添加特殊假设后的胜率预测算法 3 基于不同分布的胜率预测算法 4 最终的EL ...

最新文章

  1. 在 Linux 中创建和管理归档文件教程在 Linux 中创建和管理归档文件教程
  2. 2019深圳杯获奖论文_2019年第六届深圳南山杯全国手风琴网络邀请赛获奖名单、成绩公布!...
  3. 用Java和Java 8创建内部DSL,采用Martin Fowler的方法
  4. Notepad++没有插件管理器(Plugin Manager)的解决方法
  5. DB2常用错误代码大全
  6. 服务器_Windows Server 2012 服务器之Web服务器
  7. webmin安装_如何在Ubuntu 18.04上安装Webmin
  8. mysql性能优化金字塔法则 下载_千金良方:MySQL性能优化金字塔法则 pdf版
  9. 一天搞懂深度学习—学习笔记3(RNN)
  10. 2022-2028年中国有色金属市场供需前景预测及投资策略研究报告
  11. P3853 路标设置
  12. springboot毕业设计题目课题参考
  13. 免费的国内代理服务器、国内代理IP地址
  14. DxO FilmPack破解版|DxO FilmPack Elite 5.5.23破解版下载(附破解补丁)
  15. mysql 自动添加创建时间、更新时间
  16. 注册德国商标的详细介绍
  17. 全文索引elasticsearch
  18. 【学习笔记】《卓有成效的管理者》 第二章 掌握自己的时间
  19. Linux基础入门 -用户与文件操作
  20. Java人才招聘求职管理系统源码前后端带文字搭建教程

热门文章

  1. OpenGL Glut 初学
  2. 【纪中集训2019.3.30】星辰大海
  3. 百度人脸产品套件————壁虎 1.开箱体验
  4. 环境变量的变量名可以随便写么
  5. 经济寒冬下更要学技术
  6. 安装Adobe Flash CS5出错的解决办法(Exit Code: 7 ERROR: Unable to get root from inChildPath)
  7. 求弹性模量和泊松比计算题_弹性模量E和泊松比
  8. ORA-01422: exact fetch returns more than requested number of rows
  9. Vue学习笔记三(组件间通信)
  10. IDEA这么优化后,代码跑得嗖嗖的...