如果我们的攻略库对你有所帮助,不如ctrl+D收藏一发吧!
好的大家好,我是来自祈福-小猫咪能有什么坏心思呢 公会的萨满玩家Momothewolf 在遥远的2020年11月22日,合老师提出了通过wcl的expression过滤器来实现筛选出救急治疗数据的方法 在当时受限于技术和精力,过滤方式出现了bug,然后没有都继续跟进下去,非常遗憾 不
大家好,我是来自祈福-小猫咪能有什么坏心思呢
公会的萨满玩家Momothewolf
在遥远的2020年11月22日,合老师提出了通过wcl的expression过滤器来实现筛选出救急治疗数据的方法
在当时受限于技术和精力,过滤方式出现了bug,然后没有都继续跟进下去,非常遗憾
不过,我在不久前非常有幸参与了wcl的Expression文档翻译工作,对相关功能有了更深入了理解。于是在合老师成果基础上继续进行了演进,并成功筛选出了我想要的数据。
本文将分为两部分:前半部分重点讲述分析思路与使用方法,后半部分讲述一些样板数据下我个人的分析结论。
请文明讨论,无论你怎么看待数据,数据就在那里。
本文采用CC BY 4.0协议
思路与用法
为方便讲解,我并不随意地找了一份WCL日志,并进入匿名模式进行分析:
https://classic.warcraftlogs.com/reports/a:Xrv4dWjLRQh69kfP#boss=-3&difficulty=0&type=healing
无论是合老师的“从日志中找出真正的预读型(救急型)治疗“、”如何区分纯混子和治疗量虽不高,但预读到位,救急有术的治疗”,还是为了明确治疗分工筛选“抬血”和“稳血”数据,或者是为了对一些特定条件触发的治疗特效(如卡拉波)进行预测,都是期望对治疗数据进行以下处理:
1. 设定一个合适的、可配置的阈值
2. 找出治疗生效前,目标血量在阈值内的治疗数据
3. 可以对技能进行筛选
这个需求看似简单,但因为魔兽自开放怀旧以来,战斗日志中对于开始施法的事件没有记录目标,所以无法针对治疗生效前的血量设置条件来筛选
比如在回放中经常看到治疗在发呆,就是这个缘故。没有成功加上去的治疗,在日志中是没有目标的。
因此,首先要解决的问题就是如何抓到治疗生效前的血量问题
参阅wcl expression中文指南,可以发现,要实现这个目的,可以用到的字段包括
resources.hitPoints —— 当前血量
resources.maxHitPoints —— 最大血量
resources.hpPercent —— 当前血量百分比
effectiveHealing —— 有效治疗
因为Expression的本质是面向事件的过滤,因此我们要在造成治疗事件上,计算出治疗生效前的血量,并基于它进行过滤
这很简单,直接用当前血量减去有效治疗就可以了,因此有了以下表达式
Code c:
effectiveHealing != 0 AND (resources.hitPoints - effectiveHealing)/resources.maxHitPoints < 50 AND (resources.hitPoints - effectiveHealing)/resources.maxHitPoints > 0
因为过量治疗的存在,首先要设置effectiveHealing != 0来过滤掉所有过量的事件
然后再计算治疗生效前血量,取0%~50%这个区间 (resources.hitPoints - effectiveHealing)/resources.maxHitPoints < 50 AND (resources.hitPoints - effectiveHealing)/resources.maxHitPoints > 0
大功告成,输入Filter Expression,回车然后点击治疗,就应该可以了。。。。吧?
结果如下,并不可以
过滤出了很多无效的数据,这也是当年我卡壳的原因
经过试验以及和wcl的沟通,终于确认了,因为怀旧日志中没有当前血量,因此在治疗事件中,resources.hitPoints 和 resources.maxHitPoints 都为0。上面的表达式只能在正式服工作。
好吧,难怪数据那么异常
但是resources.hpPercent是可以用的,我们可以通过它来推算治疗前的治疗
比如,假设非坦克玩家普遍为10000血,那么如果治疗者造成了5000有效治疗把目标顶满(resources.hpPercent = 100),则可以计算出治疗生效前的血量百分比为50%,没有超过期望阈值
同理,当治疗者造成4000点有效治疗时,极限目标血量百分比为90%
只需要列的条件足够多,就可以筛选出足够的符合条件的数据
因此有了以下公式
effectiveHealing != 0 AND resources.hpPercent > 0 AND target.role != "tank" AND (effectiveHealing > 5000 OR (effectiveHealing > 4000 AND resources.hpPercent < 90) OR (effectiveHealing > 3000 AND resources.hpPercent < 80) OR (effectiveHealing > 2000 AND resources.hpPercent < 70) OR (effectiveHealing > 1000 AND resources.hpPercent < 60) )
一样过滤过量治疗,过滤血量百分比为0即死亡事件。
因为假定目标是非坦克10000血作为模板,因此设置了target.role != "tank"来过滤目标是非坦克的事件
之后如 (effectiveHealing > 4000 AND resources.hpPercent < 90) 这样并列的条件,是为了根据治疗量筛选阈值范围内的事件
只列到了effectiveHealing > 1000 是为了避免被小额治疗数据干扰
输入Filter Expression,回车
大功告成,我们成功筛选出了1000有效治疗以上的,治疗生效以前目标血量约低于50%的数据
同理,如果过滤坦克的受到治疗,可以假定坦克15000血进行计算
effectiveHealing != 0 AND resources.hpPercent > 0 AND target.role = "tank" AND (effectiveHealing > 7500 OR (effectiveHealing > 6000 AND resources.hpPercent < 90) OR (effectiveHealing > 4500 AND resources.hpPercent < 80) OR (effectiveHealing > 3000 AND resources.hpPercent < 70) OR (effectiveHealing > 1500 AND resources.hpPercent < 60) )
建议根据你的需要,改变团员的平均血量、阈值、以及检测的边界
分析结论
过滤后的数据还是非常有意思的
以样板数据为例,我们可以分析一下个人发挥
团队救急治疗数据如下
可以看到主要是9号萨满在对团队进行救急,救急目标主要是术士
选择Done To Friendly可以查看治疗目标维度的急救分布
术士27需要急救的缺口特别特别多,规避伤害能力明显有问题或者明显缺爱
狂暴战36主要被链子急救,但最爱他的是15号牧师
坦克救急治疗数据如下
4号奶骑是真正意义上的坦克抬血治疗
点开4号奶骑构成可以查看主要急救技能为9级光和11级光,其中9级光施放582次,急救次数为35
一口13K的对坦克圣疗清晰可见
全程救了坦克40+次
同样可以分析团队治疗协作情况
在已经取得授权的前提下,这里使用Noobs的一次竞速log作为对比参照
https://classic.warcraftlogs.com/reports/7ajRTZLqXkyBt639
团队救急治疗数据如下
可以看到主要是千雪之訫在对团队进行救急,救急目标前七全是术士
同时千雪之訫全程施放了450个5级链子,有100跳都是救急治疗按照本次43分钟的战斗时间,全程1000hps计算,如果该萨满获得了卡拉波再来治疗,期望可以触发100次特效,特效占比约4%,约等于150治疗强度,远超过鸡蛋的奶锤
同时,需要应急治疗的成员仍然是术士,但最多也只需要80K应急治疗,规避伤害能力较好,血量够稳坦克救急治疗数据如下
仍然是奶骑对坦克救急治疗一骑绝尘,而且区分更明显了
次要抬坦克血的是奶德
同时,原本治疗第一的千雪之訫数据就很低了,难道他就是一个大毛子?
可以看到,他们坦克全程一共需要急救的治疗只有213.2k,所以是治疗配合合理,坦克长时间维持在较高的血线,不需要太多急救治疗
过滤前的对坦克治疗证明了这一点,其他治疗特别是祈晴娃娃和千雪之訫对坦克的非急救治疗很高,很好地稳了坦克血线
综上,通过分析两篇log,个人分析的结论如下:
1. 过滤后总治疗数据越少代表团队水平越高,成熟团队承伤稳定、规避伤害合理、稳血治疗够多,成员血量稳定,以至于不需要太多急救治疗
2. 奶骑是坦克的抬血主力,这和萨满、牧师稳坦克血的特性是互补的。而德鲁伊都可以。同理,因为奶骑这版本的法力甩不了那么多大光,因此需要其他治疗提供足够的支持,减少奶骑大光的使用。
3. 过滤后的数据可以作为评估卡拉波特效数据的参考,比如千雪期望特效就是4%
相关链接
原帖地址 :
https://bbs.nga.cn/read.php?tid=24295675
Wcl expression中文指南
https://bbs.nga.cn/read.php?tid=24295675