Advice on balancing classes for a Pokemon type game.

Discussion in 'Game Mechanics Design' started by JTK, Aug 26, 2019.

  1. JTK

    JTK Villager Member

    Messages:
    23
    Likes Received:
    4
    First Language:
    english
    Primarily Uses:
    RMMV
    [​IMG]
    https://gyazo.com/6e960b1d76fe5f5c686ee00edb8ed68e

    I'm going to be making a pokemon type capture game where certain types of creatures will be weak to other kinds like water beating fire fire beating grass etc. Am i going about this correctly with balancing so far?

    Only 1 party member is usable at time
     
    Last edited by a moderator: Aug 26, 2019
    #1
  2. bgillisp

    bgillisp Global Moderators Global Mod

    Messages:
    12,123
    Likes Received:
    12,304
    Location:
    USA
    First Language:
    English
    Primarily Uses:
    RMVXA
    Well by itself those numbers are meaningless gobbledygook. There's way many other factors like your damage formula, how many party members are in battle, how many monsters you will face at once, type of battle system, etc.

    Honestly the only way to know is to playtest, playtest and playtest.

    Also I think this belongs in another forum, though not sure where. I'll leave it for now until we can get someone else to chime in.
     
    #2
  3. Wavelength

    Wavelength Pre-Merge Boot Moderator

    Messages:
    4,391
    Likes Received:
    3,665
    Location:
    Florida, USA
    First Language:
    English
    Primarily Uses:
    RMVXA

    I've moved this thread to Game Mechanics Design. Please be sure to post your threads in the correct forum next time. Thank you.


    GMD is where engine-neutral balance questions go. I've also edited your post to fix broken formatting (and correct typos in the thread title).

    Yes, you are going about it the wrong way. The first thing you should do is come up with a good Damage Formula. Usually you will want a single damage formula for all (or almost all) skills in the game. Occasionally you will want different formulas for different categories of skills (like Physical vs. Magic), but in general I don't recommend that.

    The damage formula, as well as any other mechanics that stats affect, are instrumental in balancing your game. If ATK is twice as valuable as DEF, for example, your game will be difficult to balance. Do you even know what LUK does in your game? Make sure to play around and get a good grasp of how valuable each stat is, and tinker with what the stats do until they all feel equally valuable and equally viable.

    From there, figure out what strengths and weaknesses (such as "tanking damage", "spell-slinging", "sustained damage", "resource denial", or "counterattacking") each class of creature should have. For those classes, figure out what stats should be strong to support the class' strengths, and what stats should be weak to drive home the class' weaknesses. Note that classes usually not the same as elements in this sense - for example, Pokemon has Ice creatures that are tanks, Ice creatures that are bursty damage dealers, and Ice creatures that are resource deniers.

    The numbers are the last thing you should worry about. Once you've gotten here, what you want to do is design a system where a character's strengths and weaknesses are apparent all game long. Your screenshot describes a system where this is not the case. The difference between 13 ATK (Lava) and 6 ATK (Ice) at Level 1 is probably a pretty big deal. In a lot of damage formulas, this means that Lava creatures are dealing twice as much damage as Ice creatures. Cool. The difference between 205 ATK (Lava) and 195 ATK (Ocean) at Level 99 is minuscule. No one will even notice it. This is true across most of your stats and all of your elements - when everything is centered right around 200, why even have stats at all?

    One other thing I should warn you about is how many Elements you seem to have. While I don't know the exact number, the fact that you have three different Types for Fire, Lava, and Magma leads me to believe you've got 20-30 elements or even more. How is the player going to keep all of these straight? How is the player supposed to remember 900 interactions (30 x 30) between different elements? How is the player supposed to know intuitively what the difference is between "Lava" and "Magma" in terms of their elemental strengths and weaknesses? Pokemon works because its classes are fairly intuitive - Water beats Fire, Electric beats Water, Normal can't touch Ghost, etc. - and even then, a lot of them are unintuitive (like Fighting and parts of Dragon). Only serious PvP players need to worry about them - PvE players generally just try moves and hope they work, and that's good enough. When you have "Lava" and "Magma" as two different types, and they have different strengths and weaknesses (because why else would you make them different Types?), you end up overcomplicating things with needless complexity.

    I know that's a lot to take in at once, but the tools and techniques of good design are necessary to learn when you want to make an expansive game like your own. Without them, you can search forever and you'll never find the right numbers to use - there will always be some underlying systemic problem causing things to not quite line up correctly. They are what help you figure out a good place to start, and they give you the levers to tweak numbers and balance as necessary once you have a system that mostly works.
     
    Last edited: Aug 26, 2019
    #3
    JTK likes this.
  4. JTK

    JTK Villager Member

    Messages:
    23
    Likes Received:
    4
    First Language:
    english
    Primarily Uses:
    RMMV

    For my damage formula I was thinking of using
    a.atk *2 - b.def
    and then using resistances based on classes. Weakness would give 10% damage bonus and Extreme weakness would give 20%.

    So after adjusting some attack values a water type attack vs a fire type would do 18-9 with a 10% bonus amp or ~10 damage

    For my classes now i have

    Fire- Weak to water extreme weakness to ice
    Magma - Weak to Ice Extreme weakness to water

    Water - Weak to grass . extreme weakness to earth
    Ice - Weak to earth

    Grass - weak to fire, extreme weakness to magma
    Earth - weak to magma

    Fae - Weak to fire and magma, 10% reduction vs earth, grass
    Faerie - Weak to Water and Ice 10% damage reduction vs earth, grass

    Void - No weaknesses, Deals 80% damage to all non void classes
     
    #4
  5. Wavelength

    Wavelength Pre-Merge Boot Moderator

    Messages:
    4,391
    Likes Received:
    3,665
    Location:
    Florida, USA
    First Language:
    English
    Primarily Uses:
    RMVXA
    In my estimation, that damage formula is going to cause you problems. Aside from the fact that (if HP numbers are similar to your original picture) most of the mons will be KO'ed out in one or two shots, the formula causes ATK to be twice as valuable as DEF. In other words, if you raise ATK by 10 points, you deal 20 more damage with each hit; if you raise DEF by 10 points, you take 10 less damage from each hit. That is fine in some games (for example in Final Fantasy it's probably more valuable for the characters to take 1 less damage than to deal 1 more damage, so giving ATK a 2:1 ratio over DEF makes sense - and then you can design character and enemy stats differently), but in a Pokemon-style game where any given creature can be an enemy or a member of the player's party, it is going to heavily favor creatures with high ATK stats and low DEF stats.

    Rather than pick apart your own design, let's do a deep dive on why the damage formula in Pokemon itself works so well!
    Pokemon Damage Formula.png
    More detail can be found at Bulbapedia
    • Level is the attacker's level
    • Power is the skill's individual power multiplier - for example, Vine Whip's power is 45 and Blizzard's power is 110
    • A is the attack stat of the attacker - either Attack or Special Attack (similar to your ATK and MAT)
    • D is the defense stat of the defender - either Defense or Special Defense (similar to your DEF and MDF)
    • Modifier means things like Crits, Elemental Weaknesses/Resists, Weather, Random Variance, etc. - let's ignore these for now, for the sake of simplicity
    This is quite a complex formula and you will probably want something simpler, but the beauty of this formula is that every single part of it has intention behind it. It was designed in a way that each stat would have roughly equal value, the flow of battle would be similar at low levels and high levels, and small differences in level between Pokemon would bestow a significant but not gamebreaking advantage.

    Let's examine each element of this formula, step-by-step:
    • (2 x Level) / 5: This is equivalent to (Level x 0.4). The reason they use Level as a factor is because as the game progresses, the Attack Stat goes up, the Defense stat goes up to compensate... but the HP stat also goes up. That's two defensive stats vs. one offensive stat, and it would cause the battles to become slower-paced. By multiplying damage by Level (which also increases as the game progresses), we can keep the battles equally fast-paced in the early and late game.
    • ((2 x Level) / 5) + 2: Adding the +2 to the Level calculation specifically is done to flatten the sharp effect of Level at early levels. For example, without the +2, at Level 1 we would be multiplying (almost) the entire damage calculation by 0.4, whereas at Lv3 we would be multiplying it by 1.2 - a 200% increase in damage! Probably a little extreme. So instead, with the +2, it's 2.4 at Lv1, and 3.2 at Lv3, a 33% increase. That seems more reasonable for a Lv3 Pokemon vs. a Lv1 Pokemon.
    • (((2 x Level) / 5) + 2) x Power: This is fantastic and I recommend it in most formulas. What I love about this is that it allows for a very consistent and clear relationship between a skill's assigned Power and the damage it will do. A 100-Power skill will deal almost exactly twice as much damage as a 50-Power skill, no matter what the mon's stats or level is.
    • (((2 x Level) / 5) + 2) x Power x A / D: This is where the mons' stats enter the equation. Essentially, it is calculating the ratio between the attacker's relevant attack stat and the defender's relevant defense stat (and if they are equal, the ratio will be 1). There are a couple of nice things about this:
      • It values stats equally - if you double A, it doubles the damage. If you double D, it halves the damage (and therefore takes twice as many hits to KO). If you double both A and D, there is no effect whatsoever on damage. That's how you know that the stats are valued equally.
      • It keeps the relationship between stats and damage crystal-clear - if you double a mon's Attack stat, for example, and keep everything else equal, it will deal double the amount of damage to every other Mon with every physical attack skill.
      • It allows for an equal number of physical and magical attack stats. (If there were only one defense stat called DEF, but there were two attack stats called ATK and MAT, for example, DEF would be more valuable since it's used in every formula whereas ATK and MAT would only be used in half the formulas).
    • ((((2 x Level) / 5) + 2) x Power x A / D) / 50: Because this is a multiplicative factor (using non-variable numbers and the symbols x or / only) that is applied equally to all skills, you can safely ignore it when trying to find meaning in the formula. Essentially, it's used to reduce the overall numbers we get from the calculation so that we don't need HP levels in the 1000's.
    • (((((2 x Level) / 5) + 2) x Power x A / D) / 50) + 2: My guess is that this final +2 is just used to make sure that 0 damage is never dealt, and to ensure that (for example) when the player goes back to Viridian Forest with Level 50 Pokemon and battles Level 3 Pidgeys, those Pidgeys at least do something. This formula would be perfectly fine without this final +2.
    Now, putting this formula into practice, let's say a Level 50 Bulbasaur (90 ATK) uses Vine Whip on a Level 50 Clefairy (80 DEF). The damage formula would be (((((2 x 50) / 5) + 2) x 45 x 90 / 80) / 50) + 2 = 24 damage (24.275 to be exact). This seems a little low compared to Clefairy's 150 HP at this level, even for a weak move like Vine Whip, but some of the Modifiers (such as a 1.5x multiplier for Same Type Attack Bonus) will bring up this damage closer to an average of ~40, which seems reasonable.

    With this level of thought placed into your damage formulas, you can ensure that you formulas work well from start to end, and across all classes. Again, it doesn't need to be nearly as complex as Pokemon's formula - it just needs to be every bit as thoughtful. For example, something like (ATK * (10 + LEVEL) * POWER / DEF) could work well if you design the magnitude of your stats appropriately.

    If you want to read some more formula design advice, I recommend using the Forum Search feature while in this Game Mechanics Design subforum and typing in "damage formula" and making sure the "Search this forum only" box is checked. Here's one good thread to get you started.

    Finally, just a quick word about Elemental Weaknesses and Resistances. Pokemon multiplies the damage by 2 for weaknesses (4 for dual-type mons where both Types are weak to the element) and divides by 2 (4 for dual resists) for most resistances. This seems like a huge effect - and it is. It's enough to make you want to switch out your Pokemon during battle when they're in a bad matchup, and maybe even consider switching up your roster of active Pokemon based on the area you're traveling to (e.g. Electric and Grass types when going to a chain of islands with lots of water).

    Your proposed 10%/20% modifiers are simply not enough to have any tangible effect on battle tactics. A 50-Power move that hits for normal damage will still do more damage than a 40-Power move that hits an 'Extreme Weakness'!! If you want to burden your player with remembering (or looking up) 20 different type interactions for 20 different types of mons, you need to make that effort worth the while by making the Elemental Weaks and Resists play a very large role in battle.

    Sorry for talking your ear off, but I spent an hour and a half writing it because I want your game to be enjoyed. I hope you've found this advice helpful!
     
    #5
    JTK and TheoAllen like this.
  6. BK-tdm

    BK-tdm Manga Maker Veteran

    Messages:
    74
    Likes Received:
    58
    First Language:
    English
    Primarily Uses:
    RMMV
    Balancing classes can be also tied to the sheer number of classes available, the first thing i said when looking at your sheet was:
    "Fire, Lava AND Magma? man talk about repetitive..." having several "almost the same but different" elemental classes will be a pain to balance in the long run.

    You can be creative with the basic classes/elements/typing and make some of your own but to split them up in "Fist fighting/Kick fighting/Grappler/Weapon user" just bloats your typing chart making the learning curve go up on the annoying factor or even the silly scale, with stuff like water/ocean, are you telling me normal water mons are weak to grass but ocean mons are super effective on grass because ocean mons use salty water? Is that salty water gun super effective on river fish mons? Will it rust steel mons? I can go on all day...

    As an example Magma could simply be Fire/Rock on pokemon standards and it will go from ice resistant to neutral just by typing mix alone.
    Take a look at heatran which is Steel/Fire and is a walking molten magma mon!

    You can use the basic elements like Fire/Grass/Water/Thunder then maybe change Flying to Wind, or add Light, how about Mechanicals instead of Steel? Rock/Ground to Earth type? Add a Beast type instead of normals? The thing is be creative, not repetitive and keep elements/Types/classes simple, declare the rock-paper-scissors multipliers for each and then start doing mix and matching, thats where you will see if you have all areas covered or one type is ruling them all (which is why Fairy type was introduced to counter Dragon).
     
    #6
  7. JTK

    JTK Villager Member

    Messages:
    23
    Likes Received:
    4
    First Language:
    english
    Primarily Uses:
    RMMV
    Thanks for taking the time to helo me with this. i didnt think i would have to max anything as complex as i did but i think it works out using a enemy classes plugin and enemy level plugin.

    ((a.atk * 2) * (a.level /4)) - (((b.def * (b.level / 3)) + (b.mdf /10))

    This works till level 60 with my stats before attack begins getting too crazy so ill just cap the levels there.
     
    #7
  8. Wavelength

    Wavelength Pre-Merge Boot Moderator

    Messages:
    4,391
    Likes Received:
    3,665
    Location:
    Florida, USA
    First Language:
    English
    Primarily Uses:
    RMVXA
    No problem. I'm glad it helped. This formula does look somewhat better, though I question why you would include b.def and b.mdf in the same formula? That's very bizarre to me (especially since a.mat is not in this formula, only a.atk is).

    Also, I believe there is a parentheses mismatch, with three opening parentheses ((( in the second half of the formula when you only need two (( - this isn't anything that mathematically changes your formula, but if you type that into the formula box you might get a result of "0" just because the formula errors out.
     
    #8

Share This Page