Sign in to follow this  

Help and question with RPG auto-stats for mechanics

This topic is 3631 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

In my role-playing game's mechanics, I got the battle mechanics (like when a user attacks or uses magic) based off of the d20 system and other systems. The system works well in my tech demo using pre-decided player and enemy statistics. Since I don't have formulas for how much the player's stats should increased on level-up I decided to auto-calculate the stats for I don't have to hard code anything. What I mean by this is I built a bezier curve to calculate Y values for each X position using map point locations. Basically, it fills a stat graph for each player level (0-99) the player's primary stats are (1-99) but other stats are (1-255). So at level 1, the value is 1, and at level 99, the value is 255. And then I have different auto-creation functions for the stats that place the bezier points in different locations to indicate a slow-level up graph or a faster-level up graph, which looks like a cubic line for slow-level up. So I use these auto-functions right now to build these stats: * Player/Enemy Stats (Strength, Magic, Vitality, and Speed). * Equipment Stats (Attack, Defense, Evasion, Magic Defense, and Magic Evasion). * Magic Stats (Power) So that is what is going on here. Now note that the enemies are based on the same system that the players are with the exception that enemy's HP are generated way higher. Which that is where a little problem is at. The basic attack [damage = (user_derived_atk - target_derived_def)] Works some of the times depending on what the generated stats are. In order for anything to work the player has to be a higher level then the enemy... But then the enemy won't do good enough damage. Does anyone have any suggestions on this? By the way, the user and target derived attacks are just the equipment stats added up. Because some of the enemies are monsters which won't have equipment, I am thinking about adding 'Private Equipment' to the enemy database, meaning when the enemy's equipment isn't set then the private equipment stats is used instead. I know I've typed a lot so far, so bare with me. The last part, is what I use to calculate the stats. For the players/enemies, classes are used (players have classes like adventure, theif, mage, knight, etc...) and monsters have the classes (low, medium, high) Each class stores the calculated stats, the stats are generated by a "stat pie" I created that allows you to choose what the character is more of "ex: strength verses magic" The equipment is generated by using a "equipment level" and "equipment ratings". Each equipment stat has a rating, None, Low, Medium, or High. None means the equipment doesn't have that stat, low is the equipment's is very little with a capped max, and medium is a slow-level up graph, and high is faster-level up graph. Does anyone have any insight/ideas or questions to any of this? Like what does someone else recommend using instead of the bezier curve? Because I am doing all this pretty much blind since I have no previous knowledge on a battle mechanics system. Thanks for any help, it will be appreciated, and sorry again for the long message.

Share this post


Link to post
Share on other sites
First, two general issues about RPGs (and I apologize for bringing them up!):
I'd recommend not basing anything directly on d20. d20 is in many ways bizarre, irrational, and loaded with a lot of "tradition" aka weird design decisions. Also It was made for being played by-hand with dice -- you're using a computer so you don't need to do things the way d20 does it.

That said, "Levels" too are an abstraction created to make playing RPGs by-hand involve less calculation. (Though I realize that you have to quantify things using numbers at some point to ever calculate anything.) Because you're using a computer, you don't need to use strict levels for characters, you could probably be a bit more loose in tracking different attributes in different ways rather than pegging it all to level. But if you insist!

Regarding stats and skills, I personally liked the system in Ultima Online -- you could only have 255 (or so) attribute points divided between 3 attributes (Strength, Dexterity, Intelligence), and once you got really trained up you'd just be shuffling a fixed amount between them as you used one particular attribute more at the time. Same for skills, once you hit 700 it'd just redistribute points from the rest of your skills into the skills you were currently using. This made the difference between the weakest and strongest players much smaller, a factor of someone with 50hp and 50 sword skills vs. someone with 100hp and 100 sword skill (who could very well kick their ass) rather than having some worm with 4 hitpoints trying to fight a god with 65000 hitpoints, which isn't even remotely fun for either.

I guess what I'm saying is that you should be aware of the baggage that comes with employing the traditional abstractions used in RPGs.

With all of that said, let me try to give comments you actually asked for.

I suppose your problem can be solved by simply being being creative with, yes, game mechanics, but also algebra to make combat results less ... boolean. Like, hmm, compare the square root of attack vs. defense rather than the values directly, so instead of 1 attack skill = 1 attack skill in combat, you get 1 attack skill = 1 in combat to start, then 2 = 1.4, then 3 = 1.7, 4 = 2, 5 = 2.2, 6 = 2.4 ; Note that the rate of progression is slowing down, so the difference between a couple levels isn't so great. Or whatever, it's fun to plug equations into a graphing calculator to see what happens to the rate of progression.

And it'd probably be a good idea to make the relationship between damage and attack/defense less direct, like use a to-hit chance with a max and min possible value. In Fallout (which I admit was based on d20, damn!), you always had a minimum chance of 5% and a max of 95% to-hit, ever, so even a hopeless shot could make it through sometimes, and success was never guaranteed.

And I liked the way Fallout handled armor -- each armor type had a base damage "absorption" and then a percentage damage resistance. So: damage = (attackDamageRoll - armorAbsorption) * (1.00 - resistance); Leather armor had a good absorption and poor resistance while metal armor had poor absorption and good resistance (like 70% vs. lasers, I believe). Note that the armors do not have "levels" as such, they're just different types of armor, which I think is a good way to break out of the whole level-up grinding iterator genre of game -- eg. "Congrats! Everything is the same, just with higher numbers!" (though Fallout did break this rule later by adding "levels" of armors, tsk tsk).

Share this post


Link to post
Share on other sites
Quote:
First, two general issues about RPGs (and I apologize for bringing them up!):
I'd recommend not basing anything directly on d20. d20 is in many ways bizarre, irrational, and loaded with a lot of "tradition" aka weird design decisions. Also It was made for being played by-hand with dice -- you're using a computer so you don't need to do things the way d20 does it.


My mechanics are now mostly based on some battle mechanics I found on gamefaqs on various Final Fantasy games, but the same problems I mentioned with players verses the enemies still exist with being leveled out.

Quote:
That said, "Levels" too are an abstraction created to make playing RPGs by-hand involve less calculation. (Though I realize that you have to quantify things using numbers at some point to ever calculate anything.) Because you're using a computer, you don't need to use strict levels for characters, you could probably be a bit more loose in tracking different attributes in different ways rather than pegging it all to level. But if you insist!


The reason for using levels is by means to cap how strong your character becomes, and it helps me generate the stats for each level instead of trying to figure out how much the stats should increase at level up.

Quote:
Regarding stats and skills, I personally liked the system in Ultima Online -- you could only have 255 (or so) attribute points divided between 3 attributes (Strength, Dexterity, Intelligence), and once you got really trained up you'd just be shuffling a fixed amount between them as you used one particular attribute more at the time. Same for skills, once you hit 700 it'd just redistribute points from the rest of your skills into the skills you were currently using. This made the difference between the weakest and strongest players much smaller, a factor of someone with 50hp and 50 sword skills vs. someone with 100hp and 100 sword skill (who could very well kick their ass) rather than having some worm with 4 hitpoints trying to fight a god with 65000 hitpoints, which isn't even remotely fun for either.


Ultima Online was interesting, but yet the way it worked is not the direction I want to take this battle mechanics system to.

Quote:
I guess what I'm saying is that you should be aware of the baggage that comes with employing the traditional abstractions used in RPGs.

With all of that said, let me try to give comments you actually asked for.

I suppose your problem can be solved by simply being being creative with, yes, game mechanics, but also algebra to make combat results less ... boolean. Like, hmm, compare the square root of attack vs. defense rather than the values directly, so instead of 1 attack skill = 1 attack skill in combat, you get 1 attack skill = 1 in combat to start, then 2 = 1.4, then 3 = 1.7, 4 = 2, 5 = 2.2, 6 = 2.4 ; Note that the rate of progression is slowing down, so the difference between a couple levels isn't so great. Or whatever, it's fun to plug equations into a graphing calculator to see what happens to the rate of progression.


I don't get what you mean by compare the square root of the attack vs. defense, because the reason for comparing the direct value is to determine what the damage left to dealt is.

Quote:
And it'd probably be a good idea to make the relationship between damage and attack/defense less direct, like use a to-hit chance with a max and min possible value. In Fallout (which I admit was based on d20, damn!), you always had a minimum chance of 5% and a max of 95% to-hit, ever, so even a hopeless shot could make it through sometimes, and success was never guaranteed.


I'm actually got a whole system going on checking the chance to hit which is divided into if a character missed or got their attack blocked.

Quote:
And I liked the way Fallout handled armor -- each armor type had a base damage "absorption" and then a percentage damage resistance. So: damage = (attackDamageRoll - armorAbsorption) * (1.00 - resistance); Leather armor had a good absorption and poor resistance while metal armor had poor absorption and good resistance (like 70% vs. lasers, I believe). Note that the armors do not have "levels" as such, they're just different types of armor, which I think is a good way to break out of the whole level-up grinding iterator genre of game -- eg. "Congrats! Everything is the same, just with higher numbers!" (though Fallout did break this rule later by adding "levels" of armors, tsk tsk).


That is interesting but the thing is that the game would have to make to generate some kind of stats based off of those "types of armor" being hard-coded or not.

My whole approach to this is to get hard-coded numbers out of the way and have the game handle this.

Researching this and playing with the math involved in this process is a bit tricky because you have so many factors of things; players, enemies, player equipment, magic stats, etc...
Just to get this all balanced is a pain.

Share this post


Link to post
Share on other sites

This topic is 3631 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this