Base 'Parameter Curve' Generation 'Growth' Formulas?

● ARCHIVED · READ-ONLY
Started by Roguedeus 12 posts View original ↗
  1. I'm terrible at advanced Math, and for the life of me can't seem to figure out how to re-create the curve growth biases (Fast > Normal > Slow) in the toolset.

    I have searched the internet, but without knowing what I'm looking for, all I seem to find are normal distribution formulas and instructions on how to generate line graphs with existing data... but not generating new data based on Min/Max values.

    I'd appreciate any advice. Or just an example formula that I can pick apart.

    Thanks!
  2. The normal formula should be y = m + x*n (linear) where 'm' is the starting stat, 'x' is the level, and 'n' is the growth multiplier.
    A fast or slow formula I believe it's by adding trigonometric function to the linear line formula so it works like a curve.
    I haven't really tried to replicate the formula, but at least I kinda know where to start.
  3. Do you speak about the particular formula for EXP in MV? If that is so I obvserved that it is equal to:

    <Something>*Base+(Extra*(LV-1))

    This something is somehow related to Acc A and B. I observed that when Acc A is 10 and when Acc A is 50 the <something> is as follows:

    upload_2018-7-26_3-7-47.png

    A good guess may be that the <something> contains multiplication by (LV-1) since it is with 0 for LV 1 and is 1 at LV2. Later it explodes and I cannot really make up what happens.
  4. I believe it's not about EXP, but stat growth (ATK/DEF/MAT/MDF), but that EXP formula is also interesting.
  5. TheoAllen said:
    I believe it's not about EXP, but stat growth (ATK/DEF/MAT/MDF), but that EXP formula is also interesting.

    Correct. The formula for EXP is in the rpg_object.js script.
    However, the Base Param formula appears to be internal to the toolset, and generates data in the Classes.json file.
    No formula to find.
  6. Can't say if it is true for MV so you may have to test it, but at least XP and VXAce seemed to use this formula:

    min + floor((1 - rate) * ceil((max-min) * (level-1)/98.0) + rate * ceil((max-min) * ((level-1)/98.0)^2))

    min -> Level 1 value
    max -> Level 99 value
    rate -> Growth rate: (Fast: -1, Average: 0, Slow: +1)

    Since MV uses Javascript which does all calculations with decimals by default, I'd not be surprised if at least the roundings were a bit different in MV though.
  7. I've gona ahead and attempted to gleen what I can from the EXP formula... And I've run into something odd.

    This code:

    Code:
    Game_Actor.prototype.expForLevel = function(level) {
        var c = this.currentClass();
        var basis = c.expParams[0];
        var extra = c.expParams[1];
        var acc_a = c.expParams[2];
        var acc_b = c.expParams[3];
        return Math.round(basis*(Math.pow(level-1, 0.9+acc_a/250))*level*
                (level+1)/(6+Math.pow(level,2)/50/acc_b)+(level-1)*extra);
    };

    Is supposed to be generating this curve:



    But when I recreate the formula in excel, I get this output: (Column C)
    (I've checked every single cell and the formula is accurate for all 15)



    It' may not have any significance on my actual question, but it has me wondering.

    I have also looked into obvious ways of applying a Trigonometric Function to a line generation formula and, so far nothing helpful.


    Edit:
    I think I've managed to figure out that whatever is going on, is merely finding the correct logarithmic formula to multiply the line values by, in a way to maintain the initial and end values.
  8. Could someone please write one of these as a mathematical equation? I am really unable to read it like JS, Ruby or like an Excel formula and I am genuinely interested in that.
  9. kartacha said:
    Could someone please write one of these as a mathematical equation? I am really unable to read it like JS, Ruby or like an Excel formula and I am genuinely interested in that.
    If you mean, Another Fen's formula, I'm not sure how the equation in math equation.
    But, in their formula, floor(...) means when a number is decimal, it rounded down. For example, floor(1.7) is equal as 1
    In other hand, ceil(...) means when a number is decimal, it rounded up. For example ceil(1.2) is equal as 2
    How would you translate it in math equation?
  10. I've figured out how to effectively add a log function to linear generation.

    18_0725_expGen_3.JPG

    But now I just need to wrap my head around how to 'simply' flip the curve...
  11. lol I kinda hate working with log. Tell me when you figure out the formula.
  12. @kartacha


    [basis * [(level -1) ^(0.9 + (acc_a /250))] * level * (level + 1)]/[6 + [([level ^ 2]/50)/acc_b] + [(level -1) *extra]

    And then round the answer.