Arcaea Potential机制recent部分研究过程

前人工作摘要:


ptt组成

每个人的ptt由40个成绩取均值而成,其中30个best成绩和10个recent成绩。

  • best成绩就是你自开始打以来打得最好的30个成绩,中间没有相同的谱面出现。

  • recent成绩是取最近30次游玩中10次最好的成绩.

    • 特殊的,因为Hard回忆条降至0导致的 Track lost 不会计入ptt计算队列(recent队列未写入10次成绩时除外,此情况下写入确定会加分) 尽管lost

    • v1.7.0光的个人主线包更新后需留意Fracture HikariOverflow特性虽然会触发Hard模式回忆条,但是结算并不归于Hard而是Easy 所以没事别作死

      • 对应的由Zero Hikari触发进入Fracture Ray开始为真实Hard模式

      单次成绩ptt

      • PM 即 ≥ 10,000,000:定数+2 (屏蔽物量影响)≥ 9,950,000定数+1.5+(分数 - 9,950,000)/100,000

      • 9,949,999 ~ 9,800,000:定数+1+(分数 - 9,800,000)/400,000

      • ≤ 9,800,000:定数+(分数 - 9,500,000)/300,000 (下限为0)

      EX保护机制

      • 对于任何EX评级的成绩,如果将其写入recent队列会导致ptt下降,则该成绩并不会写入队列,而是直接舍弃

        来源:http://wiki.arcaea.cn/index.php/Potential

总结:potential的总体构成已经有框架,也就是定数系统,best30和产生于recent30中的top10,但是对于recent部分,最为复杂的部分,没有过多研究。


实验方法:通过30次放置,通过表格按顺序记录一定顺序总结规律。所有操作均为单设备登录并且网络良好。

实验过程:

实验第一次第二次因为经验不足,出现过多失误,此处不多做介绍。


第三次实验:

第三次

前十次pm制定曲目,11pc设计为ptt为最高,随后均为放置并观察ptt变化。没有实质性结论,类似于验证。


第四次实验:

第四次


计算验证(注意最后一行实际上为0)

    根据计算结果,在14pc后,11pc取代了8pc,12pc取代了9pc,而13pc没有计入。8,9pc不在top中但仍在recent中。

    也就是说:当前的成绩如果是EX,那么必须要使得ptt增加(等价于比top10中的最低要高)才计入recent,并且top会重新计算(推论就是EX只能加或者keep)。但是top中原来最低的成绩没有写出recent。


    第五次:

    发现异常


    37pc,38pc写出2,3pc。

    39pc计入但是发现并没有按照时间顺序写出recent,对应3pc应该被写出。

    41pc按照预期,3pc被写出。

    42pc进入top使得ptt增加。

    异常情况复现

    42,43,46pc复现39pc情况,其中42,43均为EX,而46为Hard Track Lost且未EX

    剩下的按预期变化,44,45分别写出6pc,7pc。

    目前已知的是Hard Track Lost与EX有相同的recent写入判定。但是写入时候对应的写出不是按照时间顺序。猜测是将最低成绩写出。


    第六次

    第六次

    注意:此次实验可能较为不严谨,与第二次,三次实验类似有更好的验证方法(但是我懒)

    理论上11,12写出的是实验开始前30pc的放置。


    实验结论:

    recent是按照时间顺序排列的,最早的pc位于最前面

    分两种情况:

    ①分数小于EX

    直接写入末尾,最早的pc写出,也就是按时间顺序写入与写出recent

    ②分数大于等于EX或者困难模式track lost

    如果比top中的最小值大,也就是可以更新top,那么会把recent中ptt最低的pc写出(同ptt则取最早);否则不计入。

    后续通过自己用c++写的模拟程序(手动输入),用多次记录验证了上述结论。


    后记:

    感谢成员协助以及Vanitas

    不知道那天开始就对ptt机制感兴趣,想着弄明白具体算法并且看能不能自己实现一定的模拟。后来看到了Arcaea的中文wiki并获取到了一些信息,也发现了一些问题(早期的ptt计算公式中的系数存在经验数值而非精确数值),某天看到了Xs写的Tairitsu机器人有查询Arc单曲ptt功能后告诉了协助写potential页面的Vanitas(老婆)和RW,在一定了解后修正了计算公式。(目前另外一个疑点就是step计算式,对就是那个根号)

    接下来就是愉快开始recent相关实验,一开始还是很容易不记得自己打到多少pc的,也没有相关api能查到recent记录。后来想到了放置的时候记得按顺序换歌曲打,才尽量避免了记录失误。

    然而那个C++代码,因为写得不太好,我已经不太想改了。

    残象之形

    本文禁止转载或摘编

    -- --
    • 投诉或建议
    评论