星际大盗 发表于 2022-10-24 10:42:34

关于金刚训练度算法的推测

                                                                                           关于金刚训练度算法的推测(转载自龙舰队群)苏打的训练计算公式是不公开的,我做个推测,大部分都是靠猜,大家权当一乐。 首先根据接口吐出的参数linear与easeIn来看,苏打可能是用了缓动函数来累加船员的训练度。 这游戏后台是C#开发,app前台是Unity3D套原生壳子。游戏里很多计算,都是前台做完后台还要验算一遍的,比如战斗结果。所以我就假设后端是C#和unity3D揉到一起的框架。 而unity3D对于C#版本,刚巧有一个著名的插值缓动类插件iTween,苏打可以捡现成的用。 金刚的类型是easeIn,那么直接看补间控制类:Exponential可以按指数方式衰减的正弦波来定义运动,然后我查了下API,三次缓入方程easeIn的代码如下: public static function easeIn(t:Number,b:Number, c:Number, d:Number):Number{         return c * (t /= d) * t * t + b;       } 看下官方手册中解释各个参数:lt:current time(当前时间);lb:beginning value(初始值);lc:change in value(变化量);ld:duration(持续时间)。 那么进一步推测,苏打利用这个函数的方式,可能是:l训练度上限应该就是durationl训练度的起点0就是beginningvaluel当前训练的进度,即当前训练值,就是current timel而唯一未知的就是change in value,这个是苏打自己设置的,但我有个推测,后面会讲。 先简化一下函数的返回值c *(t /= d) * t * t + b,这个代码表达式在数学上等价于c * t3 /d3+ b,而b永远是0,进一步简化c * t3 / d3 那么,把金刚代入这个公式,假设有一只练到50的金刚,那么当前结果为C * 503 / 1103= 0.09391436C。 游戏里训练是越来越难,所以我猜苏打可能是这样做的:1. 每次训练,都结合系统时间、船员ID等等我们不知道的参数,生成一个随机,但绝对控制在一定范围内的基础训练值2. 将船员当前的训练度、参数C 代入公式,得出衰减值3. 基础值 - 衰减值,如果还能大于1,总训练值就增加对应的结果 而随着训练度的提高,函数计算出的衰减值会迅速增加,让训练越来越难有效果。                                                                                                 那么,这个关键的C,究竟是什么?我想到了一个东西——训练表情。 表情从大笑到濒死,共11个,我假设C的范围就对应1到11,还是用训练值50的金刚来代入公式:大笑金刚:1 * 503 /1103 =0.09391436濒死金刚:11 * 503 /1103 =1.0330579 假设本次训练,随机出来的基准训练值是1.1,减去上面的结果,大笑金刚训练度成功+1,濒死金刚训练无进展。 最终结合公式,我推导出了手练7星EaseIn型船员时,在不同的训练度下,应该用何种表情训练的表格。 !!!!!!!!注意!!!!!!!!1.    表格只适用于7星EaseIn型船员。2.    表格对应的训练是研究到最高等级的金色训练3.    表格给出的表情,只是在 尽量让每次训练都有进展与进展不要太大导致练歪之间,取一个大致的平衡点:a)   提高表情等级,会更不容易歪,但是可能会多次训练没有成果。b)   降低表情等级,也许会次次有进展,但恐怕会歪的厉害。4.    表格只推导总训练进展,各子属性进展全凭运气。
船员训练曲线训练度表情
白银剑圣Linear0-509
建筑工程车Linear50-607
布伦达教授EaseIn60-704
残奥会之神Linear70-803
伊娃Linear80-902
收割者Linear90-1101
威利Linear
异形女王Linear
金刚EaseIn
粉红哥斯拉EaseIn
莉莉塔/莉莉丝EaseIn
嗜血行尸Linear
银河精灵EaseIn
银河炼金术士Linear
赛博达克Linear
银河冰雪女王Linear
Python 2.0Linear
既然公式表格是我提出的,那我肯定要做第一个吃螃蟹的人。附上我按表格训练的金刚:
页: [1]
查看完整版本: 关于金刚训练度算法的推测