Original Post — Direct link
Balancing Ashes of Creation
https://ashesofcreation.wiki/Roles “ 1v1 matchups will have a rock-paper-scissors dynamic, where one class will be superior to another.

Assumption - placeholder number for Total available spec points per class = 150
Every level gained will give the player 2 points for specs until level 25, from level 25-50 each level will give the player 4 spec points for a total of 150.
• Tank will lose to Support
• Support will lose to DPS
• DPS will lose to tank
Each of the 8 classes will need to be categorized into its trinity role within its class. Each class would have spec trees aligned to their gameplay type. However, each class would have a tech tree that allows for partial specs into a class that shares similar traits. For example, a tank could have 3 spec trees, 2 of which offer the ability for full spec into tank related abilities and passives totaling 75 points per spec tree, the 3rd allows for spec into fighter related passives/abilities with only 33 available spec points.

However, to preserve class identity it would be important to create a classification of abilities that falls into class specific only.

Once level 25 is reached and a 2ndary class is chosen and an additional skill tree would become available with 50 total spec points. This skill tree would not have any abilities and would provide added status affects to the abilities held by the original class: DOT, duration, decreased ability mana/stamina cost etc, this would be related to the 2ndary class chosen. For example, Rogue could give crit chance and DOT augments etc, this would also need to change ability animations to preserve the feeling of the 2ndary class chosen.

From above we know that each class will have the ability to spec into 233 points of abilities/passives/augments etc. The player will only ever have 150 spec points. Each tree should have the ability to be fully utilized without increasing or ramping point usage. If you ramp the points needed to reach the end of any spec tree than a meta will form around those abilities as you will need to independently balance those final abilities to account for the points spent. This would result in classes being built around the way those abilities work instead of how the class works.
A theoretical example of class with their spec trees,

Tank – 2 spec trees for tank specific abilities/passives, 1 reduced one for fighter/summoner
Summoner – 2 spec trees for summoner abilities/passives, 1 reduced one for tank/mage/fighter
Rogue -- 2 spec trees for rogue abilities/passives, 1 reduced one for ranger/mage/fighter
Ranger -- 2 spec trees for ranger abilities/passives, 1 reduced one for mage/rogue
Mage -- 2 spec trees for mage abilities/passives, 1 reduced one for ranger/summoner
Fighter -- 2 spec trees for fighter abilities/passives, 1 reduced one for tank/summoner
Cleric -- 2 spec trees for cleric abilities/passives, 1 reduced one for bard/mage
Bard -- 2 spec trees for bard abilities/passives, 1 reduced one for cleric/ranger

If this partial spec tree was given regardless of 2ndary class, it would be essential to not allow for any abilities that provide uniqueness to the class to be shared. For example, if a rogue has a stealth ability nobody else has then the ranger cannot spec into that rogue ability within their own spec tree but perhaps, they could spec into the ability to hide their nameplate or perform a trap check etc. This design would also allow for more diverse raid/dungeon groups.
--------------------------------------
Damage types
• Magic
• Physical
• Holy/Radiant damage
• Elemental (Assumption = Air, Fire, Water, Lightning, Darkness, Light, Planar)
• True damage (non-mitigated damage)
Defensive Stats
• Magical
• Physical
Armor types
• Light – More mobile, better against magical damage mitigation
• Medium – general damage mitigation and possible 2ndary stats like critical chance
• Heavy - More hp and physical damage reduction
Mobility
• Auto attacks and most spells can be cast while moving however suffering a movement speed penalty.
Resources
• Stamina
• Mana
----------------------------
Ability types per class
Damage (1 Value)
• Direct damage
• Aimed damage
Tank (1 Value)
• Mitigation
• Threat Generation (Threat accumulation abilities for aggro management)
Support (1 Value)
• Heal
• Resistance
• Damage
Crowd Control (CC)
• Slow (1.25)
• Disarm (1.33)
• Snare (1.4)
• Root (1.5)
• Silence (1.33)
• Sleep (1.75)
• Stun (1.85)
Ability type subcategories
• AOE (Area of effect) -- (Square root radius r (r^1/2))
• DOT (Damage over time) -- (Square root time t (t^1/2)
• Physical (1)
• Magical (1)
• Holy/Radiant (1)
• Elemental (1)
• True damage (1.5)
• Dash (((Length^1/2)/(Duration^2))) * (1/Cast time) -- (L^1/2 / D^2) / (1/C) The higher cast time and duration lowers the value of the dash, higher the length, higher the value)
• Blink (Distance^1/2/cast time^2) – (D^1/2/C^2)
• Jump ((Length^1/2)/(Duration^2)) (L^1/2/D^2)
------------------------------
Now to balance out the classes.
Each ability will have its basic stat, like direct damage, which can be coupled with a CC ability and up to 2 ability subcategories.
Each modification to an ability carries a value. For example, a direct damage ability, augmented with a slow and AOE with radius 5 IGU (in game units) would have a value of
(1 + 1.25 + (5^1/2) = 4.486) regardless of damage.
------------------------
Now we have a way to arbitrarily value every ability combo in the game before damage and mana/stamina drain are considered. Damage values are nearly meaningless by themselves so you would need to create an additional relationship between damage / cool downs and resource usage and the ability value I just talked about.
To assign appropriate mana/cool down and damage values we need to create an inverse relationship between the arbitrary value already given. Assign CDR (cool down reduction), mana use and damage a value between 0.1 and 9.99 and multiple it by the original arbitrary value. As the value nears 0 it is more resource intensive and as it nears 9.99 less resource intensive. For example, the ability above had a value of 4.486, the goal would be to achieve an arbitrary value of 1.
So, with said ability to achieve a value of 1 we could
• (Cool down (CD)) (4.486*.75)
• Mana (3.364*.35)
• Damage (1.177*.85 = 1.000)
Now to quantify what the values between 0.1 and 9.99 mean is more difficult but we will use percentages because number are kind of pointless here otherwise.
First you want to set your maximum and minimum values for your ability cool down, damage and mana use. Let’s just say cool down is between 5 and 60 seconds, mana is 5%-100%, and damage (% max hp on a player target without any resistances or armor at max level) 5%-50%. Now you have your minimum value 0.1 = 5 seconds, 5% mana and 5% max hp and your maximum value 9.99 = 60 seconds, 100% mana and 50% hp.

(Edited minimum CD from 2->5 seconds)

To be honest this last part I could not figure out, does this need to be exponential with 1 being perfectly in the middle and the rate of change (regarding CD/Mana/Dmg) increasing the further from 1 you go, or should it be linear? Probably exponential but I am truly unsure. I am unsure if it matters either way, I feel like it does but can’t put my finger on why.
Finally, when adding penetration to things you can add a subsect value to damage that is treated the same way damage was. Basically, if you have physical pen add in a number relational to the max pen and min pen available and multiple the damage modifier by that number. Make sure to include 0.1 through 9.99 so that you can have negative effects applied easily. (Like equipping the sword of blah blah increase physical damage taken by 20% etc)

Now you have a way to value every ability in the game and scale it to match every other ability in the game. The key here is that everything equals 1, even if the abilities are completely different, they all have a basic formula and when something is out of whack it should be out of whack across the board and thus changing the original formula value would result in the desired change.
---------------------------------
I did not account for movement speed differences between classes or the trinity, but again if you assign a formula to this and create an arbitrary value you can scale each class to be different but in line with another by having the final value equal 1.
I understand that I may have made several fundamental errors when evaluating this however I hope I didn’t and that the base logic stands up. The base logic being that if you separate every ability and its defining factors, assign a value to that then add it up and multiply by its constraints (CD/Dmg/Mana) and make every ability equal the same number you should be able to have an easy way to balance the game forever, since anytime something is out of whack it merely means the arbitrary value assigned to that ability doesn’t correlate with its true value and thus needs to be changed. It will mean that balancing jump/etc for ranger will change jump/etc for all classes, however that should be the case with this balancing system.
--------------------------------
Also, I was really bored today and really enjoyed making this post, sorry if it is nonsensical or illogical, I did try and no I don’t expect you to read it, but if you did, tell me what you really thought about it, I’d love some feedback or to change it to be more accurate if possible. Man I sure would love to intern at IS ;)
over 1 year ago - Vaknar - Direct link
Strevi

Voxtrium;d-54748

Man I sure would love to intern at IS ;)


They have so much fun :smile:



Work hard, play hard :wink:
over 1 year ago - Vaknar - Direct link
I'm curious, how long does it take to come up with and do the math for a post such as this one?

It's quite impressive and interesting reading through posts with such meticulous thought put into them!