文章

玩家盈利能力evt标签v3.0

玩家盈利能力evt标签v3.0

2025玩家盈利能力EVT标签v3.0

本文只有本地文档,没有整理为线上文档。

1 背景

目前我们已经建立了一套盈利能力的标签,为每个玩家在每个场地中的近50副牌的盈利能力进行量化评价,后续我们会利用此标签进行匹配组桌。

但是后来经过讨论发现,一个积分不足以实现“水平相近”的玩家组到一起的需求。目前我们已经建立了一个更新频率快的“短期水平“标签,但是需要一个额外的参数,这个参数是 更为稳定的,更新周期更长,且具有一定“记录历史”的功能,类似于moba游戏中的隐藏分。

因此我们的思路是,使用两个参数,第一个参数是本次需求中待建立的新参数,我们将其命名为“斗地主隐藏段位”,分比赛记录,用这个参数保证隐藏段位差距过大的玩家不会组都一起;第二个参数是之前需求提到的盈利能力,在保证段位相差过大不组到同一桌的情况下,按照盈利能力相近再匹配

其它:

盈利标签这几个需求需要像家族任务一样,使用比赛提供的 “唯一id” 来区别每场比赛。

2 内容

(1)建立一个名为“斗地主隐藏段位”的标签,该标签区分比赛记录。

(2)该标签的取值为1~30之间的30个自然数;

(3)其计算规则分自由桌和锦标赛不同处理:

自由桌 的计算规则如下:

①初始值:所有玩家刚到一个场地的默认初始值为11,支持配置;

②更新:

记录玩家在每个场地每打50副牌的平均盈利能力(计算的规则和之前近50副牌盈利能力标签的规则基本相同,区别在于不需要每打一副牌就更新此标签,而是每当有50副牌打完,算出该值即可,并且不需要记录历史数值,只记录玩家上一个50副牌周期内的平均值即可);

在每个场地的每个段位:记录当前所有玩家的斗地主隐藏段位值,并从高到低排列,以下我们会称为系统历史记录值

每当一个玩家打完50副牌,将该玩家的50副牌的平均盈利值与上述历史记录值比较,如果玩家的盈利值位于历史记录值的 x 分位点 ~ y 分位点之间,则玩家+z 分;

注1:历史记录值无需随时更新,每天甚至每周更新一次即可,例如我们选择更新时间为1周,则到更新时间时,系统可将最近一周所有玩家的最新段位值记录(也可以只抽取其中一部分,原则是保证一定的样本数量),然后玩家每次打完50副牌,则与最后一次更新的历史记录值比较即可。

注2:x,y,z都需要支持按照不同段位,不同比赛配置不同的值;

注3:在该积分应用的最开始的一段时间,因为样本太少,应在历史分数线至少记录3000个值才开始应用于更新玩家的段位,即在产生3000个玩家的盈利值之前,所有玩家都不更新段位;在分数线的玩家数据达到3000个之后,应维持一个较频繁的分数线更新速度,直到达到“足够数量的样本数”;

锦标赛

与自由桌基本相同,区别仅是锦标赛只需要玩家每打10场比赛

3 配置详情

(1)积分

  • 滚动场次 N(60888000):记录当前滚动周期内的场次数,该辅助积分在达到 n 场后重置为 0。normal 类型,不开账单。

    n 场:自由桌为 50,锦标赛为 10,通过 mpid 区分。

  • 滚动隐藏分 E(60888001):记录上一个滚动周期结束后的 “近50场盈利能力值” 。normal 类型,开账单,积分下限 -21 亿。

  • 段位 R(60888002):记录上一个滚动周期结束后的 段位 结果。normal 类型,默认初始值为 11,开账单,积分下限 -21 亿。

    段位的初始值:产品定为 11,支持产品修改配置,修改积分配置即可。

    注意:若需修改初始值的话,涛哥那边也需要修改脚本里的默认值。

  • 系统历史记录值 S(60888003):记录 每个场地每个段位 中,当前所有玩家的斗地主隐藏段位值

    此值由涛哥根据所有玩家的数据进行计算统计和赋值。详细介绍见后面的介绍。

    积分默认值为 -21亿(此默认值用来判断每个段位是否有过赋值)

  • 比赛分类 M(60888004):用于触发原子事件 10000222,并传递 mpid 给本次新增的 esp 规则,开push。

    这个积分由盈利能力积分 2.0 中修改 60777000 的 esp 触发,并在 value 中传递 mpid。

    因为发现 10000222 原子事件中是不包含 mpid 的,而本次的 esp 规则中需要通过 mpid 来区分自由桌和锦标赛。且涉及到的积分也都是区分 mpid 的,需要使用 mpid 查改积分。

  • 【占位】

注:

以上所有积分均 “区分mpid”。

所有积分都 “打开账单” 以便进行测试和统计。后续正式上线后,N 和 S 的账单可以关上,E 和 R 的账单需要一直打开,涛哥统计的时候需要用到。

(2)esp 修改 60777000 处同步修改 60888004

新的 esp 规则计划通过原子事件 10000222 来触发,但是该原子事件不传递 mpid,因此新建积分 60888004,该积分专门传递 mpid。

在盈利能力标签2.0中esp修改 60777000 的地方,同步修改 60888004,传入 mpid。

注意:修改 60888004 时,实际的操作时先 set 为 0,然后再 set 为 mpid。这是因为 60888004 需要通过 NOS 的 push 向外推送,但如果积分变化为 0 的话,不会触发 push。因此需要保证积分在每次都会有变化量,才会触发 push。因此先设为 0 ,再设为 mpid,此时设为 0 的推送不会走完下面的 ESP规则,只有设为 mpid 的 10000222 可以走完下面的 ESP 规则。

此时便可触发 10000222 从而触发新的 esp规则,如下所示。

(3)ESP 规则

新建一个 ESP 规则,由原子事件 10000222 触发。

思路如下:

  • 判断 "OriID" 是否为 60888004。

  • 每次标签 2.0 被修改,积分 N 都会累加。

  • 根据 mpid 对 n 进行赋值(自由桌:n=50,锦标赛:n=10)

  • 当 N > n 时:

    • 将积分 N 重置为 0 ;

    • 读取当前积分 “盈利能力标签2.0” 的值,写入积分 E ;

    • 读取该用户当前的段位 R ;

    • 读取 “系统历史记录值” S ,若没有取到目标 S,则直接跳出,不再修改段位;

    • 计算用户当前需要增减的段位数,并对积分 R 赋值;

      计算规则每个段位都不一样,等李晨光设计。

      先随便定一个简单规则建立流程:1/3,2/3分位点,分别-1、不变、+1

    • 【占位】

  • 【占位】

注:

所有查改积分的地方,传入的 mpid 都需要改为原子事件传入的字段 _nv_dv

4 统计

统计是为了获得每个段位的分位点的值,整个统计结果称为系统历史记录值

用于计算用户增减段位数时,作为判断增减数量时的依据。

(1)数据落盘

滚动隐藏分 E(60888001)和段位 R(60888002)开账单,涛哥利用 V7 流程对这两个数据进行 n+1 的落盘。

上述两个积分均将 pid + mpid 作为键值,取统计周期内最新的 “value” 字段作为 value 保存。

对于所有的 R,理论上会有 [1, 30] 一共 30 个值,统计每个段位下所有的 E 值,从高到低排序,以 5% 为步进,一共给出 20 个 E 值,并按照一定规则赋值给积分 S。

注意点:

  • 对于每个 E 值,若没有对应的 R,说明该用户从未参与过段位评定。此时段位 R 取默认值 11。
  • 当某个段位 R 当前的统计数较少(少于300人)时,该段位就不出新的统计数据。
  • 统计时,当某个目标分位点没有值时,就向前取最近的一个作为当前分位点向

(2)数据赋值

赋值规则:

  • mpid:赋值 mpid。
  • pid:[段位]x1000 + [分位值],例如:16 段位中位于 10% 的盈利积分值,pid 传入 16010 即可。

写redis规则:

  • redis集群:evt-002-redis
  • key:YLNL:[pid],例如:11 段位中位于 35% 的隐藏段位值:YLNL:11035
  • field:60888003_[mpid]_ct,例如 mpid=401 的统计结果:60888003_401_ct
  • value:当前 mpid 在此段位、此分位点的隐藏段位值。

(3)数据校验

当前数据的统计结果较多,按照 50 场比赛、30 个段位、6 个分位来计算,每次统计会输出 9k 个结果。

这些结果会先与上一次结果进行对比,若差值较大,就通过邮件发送给所有的相关人员。

相关人员人工校验完成后,再覆盖老的系统历史记录值

(4)上线流程

考虑到盈利能力标签 3.0 在上线初期会快速迭代,后期会逐渐趋于稳定。我们针对上线流程进行了如下设计:

流程建立:涛哥会创建两个脚本,这两个脚本除了更新频率(日更、周更)和 mpid 列表外,其他均一致。

运维方式:首次上线的 mpid 为日更,逐渐趋于稳定后,修改为周更。

5 上线流程

  • 2025年8月25日 上线所有 evt 积分和 esp 配置,11 段位开始有玩家的隐藏分。
  • 2025年8月27日 统计所有段位的分位值,并赋值给积分 60888003(S)。赋值结束后,玩家开始根据 ESP 规则进行段位升减,但此时因为只有段位 11 有值,所以玩家只会从 11 段位升降到 8,9,10,11,12,13,14 这七个段位。
本文由作者按照 CC BY 4.0 进行授权