设为首页 收藏本站 放到桌面

游戏魂

 找回密码
 注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 2271|回复: 0

[经验分享] 数值执行配属性可用的公式--非原创 [复制链接]

Rank: 3Rank: 3Rank: 3

升级
11%
  • TA的每日心情

    2017-3-13 09:20:03
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    帖子
    40
    精华
    0
    威望
    -44
    魂力
    115
    金币
    65
    注册时间
    2015-6-17

    蚊子叮的照耀,好多蚊子啊…… 革命卫队专属

    发表于 2017-2-17 18:02:06 |显示全部楼层

    感谢前辈写的文档,我来分享一手

    成长曲线设计方法研究

    问题的提出

    数值设计中经常遇到成长曲线的设计,比如主角MaxHP随等级的成长曲线。这类设计往往首先确定两个端点,如1级时1000HP40级时3000HP,然后再在这两点之间拉出一条曲线来。根据设计需要,这条曲线可能凸也可能凹,可能平缓也可能陡峭,这就需要在设计时留下可方便调节的参数;进一步地,要求不同的成长曲线之间,能够对成长特征进行量化的比较。

    根据这两点要求,整理出了常用的三种方法:双曲线、抛物线、指数线。为了增强设计的可阅读性和可操作性,在双曲线部分重点介绍了设计思路和过程,也建议其他同学在进行类似设计时,能够将一些参数和中间变量的意义解释清楚,方便后来的同学阅读和操作。

    双曲线简化

            首先,将问题“设计一条从(Xmin,Ymin)到(Xmax,Ymax)的成长曲线”,简化为“设计一条从(-1,-1)到(1,1)的成长曲线”,这样可以抛开具体数值的影响,而专注于曲线自身的特征。

    函数

            考虑双曲函数:,-1<p<1-1<=x<=1

    1. 曲线经过(-1,-1)和(1,1)两点;

    2. p=0时,曲线为线性函数;当-1<p<0时,曲线为下凸函数;当0<p<1时,曲线为上凸函数;

    3. 曲线经过(0,p)点,换句话说,曲线的纵截距就是参数p的大小;因此:

    4. 越大,曲线越陡峭;越小,曲线越平缓;

    5. p的大小可以用来比较两条双曲线的成长特征;

    映射

            接下来,只要先把实际问题中的X映射到该函数中,得到x,再根据函数计算得到y,最后映射回实际问题中,就可以得到对应的Y了,即:

            X(Xmin,Xmax)映射到(-1,1)中,结果为;令,,可以得到:;

            根据函数和x值,计算出对应的y值;

            y从 (-1,1)映射到(Ymin,Ymax)中,结果为,整理后有:Y=y*Ydif+Ysum;

            具体操作过程见EXCEL文档。

    抛物线简化

            与双曲线处理方法相同。

    函数

            考虑二次函数:,-0.5<=p<=0.5-1<=x<=1

    1. 曲线经过(-1,-1)和(1,1)两点;

    2. p=0时,曲线为线性函数;当-0.5<=p<0时,曲线为下凸函数;当0<p<=0.5时,曲线为上凸函数;

    3. 曲线经过(0,p)点,换句话说,曲线的纵截距就是参数p的大小;因此:

    4. 越大,曲线越陡峭;越小,曲线越平缓;

    5. p的大小可以用来比较两条双曲线的成长特征;

    映射

            与双曲线处理方法相同。

            具体操作过程见EXCEL文档。

    指数线简化

            与双曲线处理方法相同。

    函数

            考虑指数函数:,-1<p<00<p<1-1<=x<=1

    1. 曲线经过(-1,-1)和(1,1)两点;

    2. -1<p<0时,曲线为下凸函数;当0<p<1时,曲线为上凸函数;p不能取0;

    3. 曲线经过(0,p)点,换句话说,曲线的纵截距就是参数p的大小;因此:

    4. 越大,曲线越陡峭;越小,曲线越平缓;

    5. p的大小可以用来比较两条双曲线的成长特征;

    映射

            与双曲线处理方法相同。

            具体操作过程见EXCEL文档。

    比较

    三条曲线都经过(0,p)点,越大,曲线越陡峭;越小,曲线越平缓;p的大小可以用来比较两条相同曲线的成长特征。

            p=0时,双曲线和抛物线都退化为直线,指数线的p值不能取0

            0<<=0.5时,三条曲线的形状相差不大;

            0.5<<1时,抛物线的单调性会发生变化,也就是对称轴会落到两个端点之间;

            接近于1时,双曲线和指数线都趋近无限陡峭,双曲线变化地更快;这是抛物线做不到的,换句话说,由于单调性的限制,抛物线的最大陡峭程度在=0.5时取到,因此可能无法达到实际需要的陡峭程度。

            用表格简单比较三种曲线:

     

    双曲线

    抛物线

    指数线

    表达式

    p取值

    (-1,1)

    [-0.5,0.5]

    (-1,0)或(0,1)

    p=0时

    退化为直线

    退化为直线

    不能为0,无法退化为直线

    趋于1时

    变化较快

    变化较慢

    陡峭程度

    无上限

    =0.5时达到上限

    无上限

            综合来看,抛物线的设计存在硬伤,是三者之中最差的方法;双曲线表达式简单,是三者之中最优的方法;而在设计某些比较陡峭的成长曲线时,可以考虑采用指数线,可调控的区间要相对大一些。

    总结

            上面分布讨论了双曲线、抛物线、指数线的设计方法,在熟练掌握之后,也可以使用其它中间变量作为参数;但是使用p作为统一调节参数的好处就在于,它可以作为曲线形状的量化指标;对于同样类型的曲线,可以根据需要很容易地设计不同的成长速度;如果采用其他参数,往往会受实际数值影响,而不能准确体现曲线的成长特征。

            略去中间过程,双曲线的公式为:,直接引用可以使设计过程变得简洁。




    该贴已经同步到 mentuosi的微博
    您需要登录后才可以回帖 登录 | 注册

    现在是
    回顶部