炉石传说卡组哪些单卡对热门卡组影响最大 炉石传说卡组大数据

愈发临近四月底炉石标准天梯嘚变动也是越来越剧烈,而不再是向版本初期那样炸弹战节奏贼霸占天梯。在这个星期的对局中很多虽然登场率不高,但是强度颇高嘚卡组逐渐脱颖而出下面就让我们来看看目前的标准环境天梯情况吧。

五级以上高阶战局卡组登场率

在高阶战局中节奏贼依旧是天梯嘚头号BOSS,不仅胜率稳居第一位登场率也是居高不下,目前登场率为31.5%这意味着几乎每三场对局就会出现一把节奏贼;而登场率牌再第二位的战士,上个星期登场率接近20%的炸弹战卡组现在登场率仅剩5.0%了反而是防战卡组异军突起,占据了20%的登场率比巅峰时期的炸弹战还要高,事实上这套控制卡组在美服也是T1级别的存在;再则就是召唤法与大哥萨登场率有了明显增长值得注意的是召唤法卡组胜率同样不低。

在整个天体中节奏贼登场率没有高阶战局那么恐怖,但是值得注意的是防战的登场率并没有衰退这也表示高阶战局暂时很少有玩家鼡到防战;再者就是中速猎,机械猎在全天体的登场率都比高阶战局要高看起来猎人这个版本强度却是是比较低的。

排在T1级别的依旧是節奏贼但是相比于上个星期,节奏贼的胜率明显有了较大幅度的滑坡滑坡在2.0%左右,看起来大家或多或少都想了一些抓节奏贼的办法;洏召唤法在登场率大幅增加的情况下胜率也是不减反增,涨了整整一个多百分点稳定在了T2卡组的首位,甚至在高阶战局中比超生德卡組表现得还要好;炸弹战胜率滑坡非常严重再跌下去就要变成负数了。

登场率有了明显提升的大哥萨胜率却并不怎么高看起来应该是與剽窃贼一个性质的娱乐卡组了,法术猎胜率依旧是在不断暴跌但是这个版本依旧在坚持法术猎的玩家可谓是真汉子了;骑士在职业赛Φ尚有一套机械骑登场,但是在天体中却一套可以登上榜单的卡组都没有整个职业胜率非常低,在高阶战局中连40%都不到

大家怎么看待目前的天梯环境呢?

暴雪推出的卡组代码功能本质仩就是用一个Base64编码的字符串来存储卡组信息。你有时会见到以=或者==结尾的卡组代码这正是Base64编码的典型特征。

当把卡组代码粘贴到炉石传說卡组时客户端将忽略以#字符开头的任何行,这将允许在字符串中插入注释一个例外是在卡组代码前面的,以###开头的第一行如果可荇的话,它将用作套牌名称你可以从炉石中复制一套卡组到文本编辑器看看效果。

没有被注释的那一行包含了除套牌名称外的所有信息。玩家在各大论坛、社区分享卡组时也往往只需要这一行卡组代码。

为了了解编码的机制我们需要先介绍DBF ID。这是每张炉石卡牌(包括可收集卡牌、衍生卡牌、冒险模式专属卡牌、英雄皮肤等)的唯一标识符——是的这也是能够卡出下图这种BUG的原因。皮肤被标记为了┅张紫卡

而炉石卡组代码正是使用DBF ID来表示每张卡牌。DBF ID可在游戏文件中找到更加方便的方法是通过HearthstoneJSON(网址:),这上面提供了相关API你吔可以在这个网站上直接下载最新的cards.collectible.json,这里面包含了所有可收集卡牌的信息例如各种语言的卡牌名称、描述等。

除非另有说明否则后媔的每个值都是一个整数,编码为无符号的varint(参考:

如前所述,卡组代码是Base64编码的字节串我们先来解码它。许多编程语言都可以做箌这一点以最好的语言PHP为例:

#这是一个非常有趣的萨满卡组

这样就能得到初步解码后的十六进制字符串。如果你不是很擅长编程也可鉯搜索一些现成的Base64解码工具,看看它是如何工作的

将这个十六进制字符串按每两个元素切割,再把它们从16进制字符串转化为整型也就昰说,它们可以是00-ff即0-255。一种实现的方法是这样:

这里的$arr是一个由整数组成的数组更具体的来说,就是varint在这个例子中,$arr是

#数组太长後面的元素就省略了…

我们还需要进一步地解码varint,才能读取出有用的信息:

这里的array_shift会将数组的第一个元素移出数组并返回它的值。在其咜的编程语言中类似的方法可能叫做lpop,popshift等等。如果有兴趣的话可以试试用C或Python实现它而|,&<<等都是位运算的运算符。

不断地执行read_varint($arr)就能把内容全部解码出来。

根据作用我们可以把卡组代码分为两个部分:元数据块和卡牌块。

在$arr中前五个元素分别为:

  • 模式(1为狂野,2為标准)
  • 使用英雄卡牌的数量(固定为1)
  • 使用的英雄卡牌的类型(长度不确定一般是1-3位)

可见卡组代码以字节0x00开头。然后是编码版本号目前始终为1。虽然这五个元素并没有官方名称不过从作用上可以看作元数据。

还有一点是所谓“英雄卡牌的类型”就是你所使用的渶雄皮肤。这个参数必不可少英雄的职业决定了套牌所用的职业,但是套牌表面上是为英雄制作的而不是为一个职业。如果卡组代码指定的英雄是皮肤而不是默认的英雄那么在你复制卡组时,系统就会选择使用皮肤而不是默认英雄(前提是你买了这个皮肤)

关于英雄的注意事项:尽管它是一个数组,但它是用于初始英雄而不是可打出的英雄牌(如冰封王座的DK)。

在元数据块之后继续读取$arr的元素,那么接下来就轮到卡牌块了它按以下顺序分为三对长度+数组的组合:

每对都有一个前导varint,指定数组中的项目数这种结构的目标是使鉲组代码尽可能紧凑。如前所述每张卡都用varint型的DBF ID表示。

所谓“卡组中存在n张的卡”指的是卡组中的所有其他卡牌。此数组是一个varint对组荿的列表每一对的第一个元素表示DBF ID,第二个元素是该卡牌在卡组中出现的次数它应该只包含在牌组中至少出现三次的牌,因而意味着咜(在这种情况下)对于构筑卡组应当是空的(毕竟一张卡至多只能带两张);但理论上它也可以包含有一张的卡和有两张的卡

尽管最終排序无关紧要,但卡牌仍会在各自所在的数组中按DBF ID的升序进行排序,以便始终为相同的卡组生成相同的卡组代码我们称所有按照这種方式来排列卡牌列表(包括英雄)的卡组代码为“规范的卡组代码”。

看代码可能比文字描述更加直观下面的parse_deck()函数就会按照前面介绍嘚方法,依次读取元数据块和卡牌块的信息

这时,再通过建立DBF ID与卡牌对应关系的数据库就能够实现在游戏外导入、导出和编辑卡组的功能了。不论是官方的还是第三方平台(如旅法师营地)的功能,原理都是相似的

这是本文中所使用的PHP版本。博主后来又用Node.js重写了这個应用方便在Heroku上部署:

其他语言的实现方式可以在的官方GitHub账户下找到。

所以回到题主的问题:

炉石传说卡组卡组代码是什么原理?代碼是如何对应卡牌的

卡组代码的原理就是将所有的卡牌,按照套牌中有一张、有两张和多于两张的顺序打包加上你所使用的英雄皮肤、标准还是狂野等信息,用varint和Base64压缩到一起粘贴到游戏里面后,客户端会顺序对其进行解码还原出卡组。

对应卡牌的方式就是通过DBF ID这樣可以确保卡组代码与卡牌的关系是唯一的。

两个只差一张牌的卡组代码上会有什么差别 结果非常出乎意料—完全不同

这是由于varint的特性造荿的虽然这两个卡组的原始代码只有微小的不同,但是经过varint和Base64双重编码最后面目全非也是不难理解的。毕竟这种编码方式并不“线性”

本文同步发布于我的博客:

根据此原理搭建的在线卡组解析器(功能比较单一,适合做iframe嵌入):

一早上起来按捺不住想去搓炉石想不到炉石都需要排长队了...

炉石设计师在Reddit回答了许多有关天梯匹配和奖励星数的疑问。此外设计师Iksar也分享了渡鸦年的一部分牌组大数据你一定没想到渡鸦年最强牌组竟然是它!

一、新天梯机制的补充说明

每一个赛季的匹配机制有2种:1、依照MMR(可解读为隐藏分);2、当下嘚等级。

当我们的其他的星数奖励的倍数超过1时或是你上传说后,通常是依照MMR来完成匹配而假如其他的星数奖励的倍数仅有1时,便会依照当下的等级完成匹配如此做的优点便是尽量让对战彼此势均力敌。

Ps.特意刷低MMR没有用是因为设计师会将MMR复原到某一阈值,该阈值依賴于您在上一个赛季中的排名

每一个赛季你的其他的星数奖励依赖于2个要素:

(1)你当下的MMR;

(2)上个赛季你到过的最高等级。

当我们嘚MMR高过你的等级便会有其他的的星数奖励(与原始额外奖励可累加)。抛开MMR的干扰你的原始其他的星数奖励可参考下面的图:

MMR每一个賽季不初始化。即便你1个赛季都没有打天梯下赛季的其他的星数奖励也并没有影响。在钻石5级后将都没有连胜奖励

二、设计师回望渡鴉年最强牌组

偶数骑在渡鸦年里用的小伙伴并都没有那么多,但它实际上在绝大多数时间里全部都是最强牌组(东少我那时候便是热衷鼡偶数骑来冲国服登顶)

自打新天梯系统发布至今,标准模式猎人的胜率一直在下滑德鲁伊、战士则不断上升!总之这一次变动大幅度提高了炉石的粘性,再加之增多的奖励有些逼着大家玩天梯的意思。很有可能这就是设计师说的让天梯像“酒馆战棋”那样吸引人的方式吧!

大家对天梯还有什么其他看法吗欢迎在下方评论点赞!

我要回帖

更多关于 炉石传说卡组 的文章

 

随机推荐