Ok, I have been pounding my brain for the last few days on how to calculate the perfect beginning and ending stats for any class in the rpgmaker games (mainly in ace). I do believe I have come up with two equation that will work with any number that is entered in. Here are my equations:
NOTE: All values gathered in as a decimal will be rounded up. This can be changed as I have tested these equations with both rounding down and up. But, I find that you get much better numbers if you round up.
1.) Max HP / Max MP
Max_Stat = Base_Stat * [(2^(MaxLevel/10)/100]
now, I like to work with low numbers, which is where I originally created this equation, but you can put both big and small numbers into it.
Example 1: Small HP/MP numbers (Pokémon Style)
Base HP = 20
Max Level = 99
MHP = 20 * [(2^(99/10))/100]
Your Max HP is now 191.0851567, but we will call it 191. Now there is a slight variation you can add onto the end of this first equation. The variable "C" can be any number (best picks are between 50-150), which will allow for higher growth.
Example 2: High HP/MP (Normal JRPG/RPG style)
Base HP = 125
Max Level = 99
MHP = 125 * [(2^(99/10))/100]
MHP = 1194
See! Now it works decently! Now, say we want to add C to this equation. The best range when working with large numbers is make C any number between 1200-2500, to allow more growth.
2.) Other stat Equation (used for ATK, DEF, MAT, MDF, LUK, AGI)
Max_Stat = (Base_ATK * ((2^(Max_Level/10))/100) - C
Where:
- Base_ATK = 10 to 25
- C = 10 to 50
I am going to be using these equations on my game and if the mechanics seem to break anywhere (because in theory and with the tested numbers I used before posting it should work) I will make changes to them immediately. Now, these are not straight forward "Use as intended" equation, you can play with them, break them, rebuild them, what ever you want! If you do use these equations though, I'd like you to credit me in your game, just add Flare_Fox to you credits list and i'll be happy!
Thanks for looking!
Base Stat Equation Ideas
● ARCHIVED · READ-ONLY
-
-
I have to be blunt here....
Why again would I use your "equations" in a game? What purpose do they have? -
I didn't say you had to, all I said was that this equation seems, at least in theory, to work fairly well in calculating the max a stat should get for your character classes. When you modify the stats in a class, you can set the base value, the max value, and whether you grow at an average, fast, or slow speed. I like to be able to control all aspects to a game, and that's where the equation comes from. I don't necessarily like to pull random numbers out of my head and test to see if they work, so I add structure to the sudo-randomness; that's what my equations allow for. As for using them, I find that calculating skill damage ratios, enemy stats, and item effects stem from making your classes. So, if you want an easy way to base your classes, then you can use my equation. Again, its not perfect, for nothing ever is, but it gives the designer a starting point.
-
Perhaps you did not understand me here. I was Curious about what problem does your equation solve and not whether it is mandatory to use it. Then again you did try to answer my question in the later part.
However still... the problem with your math is not that its "inaccurate" but its a "random" calculation. You see, RPG Maker (at least I know VX Ace has that) allows you to create a stat curve based of the Lv 1 and Lv 99 stat.
These values have to be set "by the designer" since you have to add the "variables" here. The "variables" are anything that goes AGAINST the stat (its not a random number). To make it more clear to understand, an example:
My enemy is a slime with 100 HP, 10 ATK and 10 DEF. It uses "Attack" which calculates the damage as 2x ATK - enemy DEF.
How much HP does my Knight require?
HP will be based on the ATK and DEF stat of the Knight. If the Knight also has "Attack" as his skill, and has 20 ATK, this means he should kill the Slime in 4 hits. This also means that he will receive around 3-4 hits from the enemy. If the Knight has 10 DEF, this means he will lose an average of 30~40 HP per battle. If I am counting in that the Knight should survive at least 10 battles before he needs to recover, I have to give him at least 400 HP. You can add +10% HP here as a buffer just in case - which means the HP value is 440.
Why consider the opponent?
Because ENEMIES are the variables that you pitch your character stats against. You solve it by a calculation that considers these variables. So, an equation to tell the HP of your character should look something like this:
Character HP = (Enemy HP / Hero attack skill equation) * (Enemy attack skill equation) * Amount of encounters your character should survive before healing
So if we pull stats from the previous scenario it will be:
(100 / (2*20-10)) * (2*10-10) * 10 = 3,3 * 10 * 10 = 330 HP
If you want the character to be more durable than others -> Simply adjust the Encounter value. Make it so he can survive more without healing.
If you want the character to have better DPS -> give him more attack or a better attack skill than others.
You can come up with how the equations for that would look on your own. Just remember to calculate on the right variables.
Stronger enemies can simply cut the "encounter value" more than the standard enemy.
And if you want to calculate the Max stat -> pitch it against the strongest "standard" enemy you meet. Adjust as necessary. (as in - do you want to allow much bigger stats than the enemies handle or you calculate them for some final challenge boss, etc) -
Functions, not equations...although functions are equations, in this context the proper term to use is "functions."
Using functions for parameter growth helps you control and project actor progression (if linear progression is your thing). Using functions to control actor progression is a bit redundant, given the capabilities of RPG Maker.
BUT...
If you use a function to control actor progression, you can introduce different variables into the process to the benefit or detriment of the actors. Honestly, the sky's the limit here, but an example off the top of my head would be (in-narrative) the characters' diets. Maybe the function for ATK progression is rational and has a variable in the denominator: maybe that variable increases or decreases with the amount of food an actor eats (used as items in this example). If that variable is low, parameter progression would be slower than if that variable were higher. In other words, the player would have to micromanage the (in-narrative) characters' diets in order to maximize their parameters as they level up. It doesn't sound fun, but it's an idea on how to use functions to control progression. -
In all honesty, its not mandatory to use my equations. What I wanted to use them for was setting a sudo-random number for the base stat (i.e. hp or atk for level 1) then sending in that base number into my equation so you could get the ending stat for level 99. Yes, I am aware that rpgmaker has built in functions to calculate such things for you, but I like my own set of sudo-random numbers to begin with. So lets look at my classes that I made for my game.
My warrior class starts off with 25 HP at level 1. Now, I want to set what his health will be at level 99, since you can do this by hand. What I then do is put his base health into the first equations, thus arriving at 239 as my max hp at level 99. (note, I round to the nearest whole number when I calculate) So now when I click on the button to generate curve, I put 25 in for level 1, and 239 in for level 99, and then hit ok, and it will generate my curve for me with the parameters I have set for it. Now yes, the base hp and mp that I begin with are random, 15-25, but it limits the starting hp for a cleaner "guess and check" optimization system later in the game creation process.
Also, with this aforementioned class, my attack starts out at 16, the sudo-random number I picked from the base of 10-25. I then set that base value into the second equation. Now we are introduced to the other sudo-random variable called "C", which subtracts an extra value between 10-50. I chose 10-50 because it allows for modification, as does the other equation I made. Now, when I put 16 into the second equation I get 103, meaning that's the highest my attack will go. Then I put those parameters into the curve generator and let it do its thing.
Also, one thing you do not want to do is base your character stats off your enemy stats, you should do it the other way around. This allows for easier modification and its less of a head ache, trust me, I've tried almost everything in the book on trying to make a decent enemy/troop and this way here seems to work for what I need. If you still need more information, feel free to Skype me at eugenepetrie18. I hope this last post makes sense since I am terrible at explaining things.
Now, since I know my base and ending attack, I can predict how strong of enemies I need for each level, just by reducing the level variable in the equations, which I preset to 99 since I was looking for the absolute max of a stat. Now, as I have said before, these equations are not perfect, and will be thoroughly tested as I continue designing my game with them. At the moment, they seem to work fairly well for me, so I will continue to leave them as they are. -
I don't mean to come across overly harsh, but I don't think your equations are as dynamic and useful as you might think.
What happens when max level <= 66? (Hint: Max Stat is less than beginning stat)
If Max Level = 76, you have final = 2 * initial.
With max_level = 90, final = 5 * initial, and max level = 99, final = 9.5 * initial.
See the point I'm getting at? The two examples look good at a glance because they give what seems like a reasonable number for level 99. But that's largely just a fluke, and the equations themselves are far more complicated than necessary to get that result.
For real gameplay scenarios, length of time to get level gains, expected end-game level range, and other factors, are of far more importance anyway. -
I don't exactly see what you are getting at but since my calculations seem to be seemingly irrelevant to any sort of game dev method I suppose I need to rethink the calculations. At the time being I wont be responding anymore to this thread since I have some java plugin development to work on, so until the java projects are done, I won't be messing with the equations.