Help regarding Battle Mechanics in a Turn Based RPG

Eugen

Warper
Member
Joined
Jan 16, 2015
Messages
2
Reaction score
0
First Language
English
Primarily Uses
Hi guys and gals,

Our team is currently working on a Turn Based RPG and along our development road we reached a slight impasse concerning the Stats of our Heroes and Monsters as well as the formulas required for our battle system to work perfectly. We have done all of our ground work well, but it feels we are still missing something to make it really good.

This game means a lot to us and absolutely any feedback is very much welcomed. So here we go.

Our Heroes are always in a party of 4. They use two position in battle - Front and Back.

At any given time 3 Heroes are in the Front row and 1 is in the back. The player can switch the positions of their Heroes at will, without consuming a turn. Once a Unit attacks it enters a cooldown state where it can’t use their skills, but can switch positions with other Units. There are Ultimate skills that activate depending on how often we use a hero, but we won’t go into that just now.

Meanwhile, the number of monsters on screen can vary from 1 to 5. Monsters also have front and back rows. There are two main groups of Monsters, Ranged and Melee. If the player fights a Melee and Ranged monster(s), the Ranged monster will always start from the Back row, from where he can only be harmed by ranged attacks and will come to the Front only once all the Front row monsters are defeated.

  1. Type-wise, there are two big groups of UNITS AND MONSTERS:
  1. Warriors , Rogues and Rangers deal Physical damage - they use Strikes ( Sword swipes ) or Techniques ( bleed damage, poison, Stuns )
  2. Priests, Mages and Warlocks deal Magic Damage - they use Spells ( Fireballs etc.) Curses ( Debuffs etc.) or Blessings (Heals, Buffs etc.).

  • Strikes

    Physical based attacks - Influenced by STR and DEX

    Can be blocked and evaded
[*]Techniques

  • Physical based attacks ( bleed, poison ) - Influenced by INT and DEX

    Can only be blocked ( if a Technique is blocked, ignore its effects)
[*]Spell

  • Spell-based abilities - magic missiles etc - influenced by INT

    Can be evaded or resisted
[*]Curse

  • Magic-based malefic status effects - curses, debuffs etc. - INT-based

    Can be resisted
[*]Blessing

  • Magic-based benefic status effects - heals, buffs etc. - Int-based

    No defence needed.

B) All characters, Units and Monsters alike, have the following stats.

  • Strength ( STR ) - Influences the Block chance (chance to block 50% of incoming damage and resist techniques)  for all classes and Damage output for the Warrior class
  • Dexterity ( DEX ) - Influences the Evasion chance and  Critical chance for all classes and the Damage output for the Rogue and Ranger
  • Intelligence ( INT ) - Influences Magic resistance (the chance to fully negate the damage of a spell/curs ) and Damage Output for Mages, Priests and Warlocks
  • Vitality ( VIT ) - Influences HP

C) Classes have specific COEFFICIENTS that influence how we Calculate Their Block, Evasion, Resistance to Magic and Critical chance. NOTE: Monsters of the same class as Units have DIFFERENT COEFFICIENTS

Here are the Coefficients for a Warrior Class Character.

block coeff
24
evasion coeff
80
resist coeff
120
crit coeff
100

Below are the formulas for calculating the Final block chance, Evasion Chance, Magic Resistance Chance and Critical Chance of a character

  • Block Chance = DefenderStr/( DefenderStr + Block COEFFICIENT*Attacker Level) . After the Block status is checked and if it takes place,  depending on the class Block Damage Reduction takes place. Different classes have DIFFERENT Block Damage Reduction percentage.

    Block Damage Reduction:

    Warrior - 50 % of incoming damage, Strikes and Techniques only
  • Rogue - 40 % of incoming damage, Strikes and Techniques only
  • Ranger - 35 % of incoming damage, Strikes and Techniques only
  • Priest - 20% of incoming damage, Strikes and Techniques only
  • Mage - 25 %  of incoming damage, Strikes and Techniques only
  • Warlock - 25%  of incoming damage, Strikes and Techniques only
[*]EvadeChance = DefenderDex/( DefenderDex + EvadeCOEFFICIENT*AttackerLevel)

[*]ResistChance = DefenderInt/( DefenderInt + ResistCOEFFICIENT*AttackerLevel) (magic resistance)

[*]CriticalChance = AttackerDex/(AttackerDex+ CriticalCOEFFICIENT*DefenderLevel)


FIGHT
Let’s take a Hero and a Monster, both Level 1, as an example.

Squire - Warrior Class and a Rogue - Thief as the Monster. As mentioned above there are 4 Heroes at any given time but we will only take into account a 1 vs 1 Situation

The Squire’s Stats are:

  • STR 9
  • DEX 6
  • INT  6
  • VIT  9 = 18 HP

The Thief’s Stats are:

  • STR 6
  • DEX 11
  • INT  5
  • VIT 4 = 8 HP

Event Chances for the Warrior - Squire are:

  • Block chance = 9 / ( 9 + 24*1) = 0.28 or 28%
  • Evasion Chance =  6 / ( 6 + 80*1) =  0.08 or 8%                                                
  • Magic Resistance Chance = 6 / ( 6 + 120*1) = 0.04 or 4 %
  • Critical Chance (vs a lvl 1 target) = 6 / (6 + 100*1) = 0,05 or 5%

Event Chances for the Rogue are ( please note that the coefficients are different from the Squire):

  • Block chance = 6 / ( 6 + 40*1) = 0.13 or 13%
  • Evasion =  11 / ( 11 + 30*1) =  0.26 or 26%                                                      
  • Magic Resistance = 5/ ( 5 + 40*1) = 0.11 or 11 %
  • Critical Chance (vs a lvl 1 target) = 11 / (11 + 40*1) = 0,21 or 21%

SKILLS

The Warrior (Squire) has a skill  - Sword Strike - dealing 100% of Squire’s STR as strike damage ( Warrior class).  So if the Squire has 15 STR he deals 15 DMG and sends him in cooldown for 3 turns. We also have a spread percentage worked into our calculations, but we’ll skip it for now.

The Thief’s skill  -  Backstab - Strike that deals initially 60% of Rogue’s DEX as damage and applies a Technique that deals 15% of his DEX as damage for 2 Turns and gives him a cooldown of 3 turns.

Battle Simulation
Monsters always start with a randomised cooldown, but never less than 1 turn. Thus our Squire attacks first in any case (we should have named him Han).

In battle we use a RNG-based system to check for various effects.

The Squire uses his skill on the Thief.

  • First we check if the Thief evades the attack.  

    Random generation gives us 0.62 > 0.26 ( see above ), so the Rogue did not evade Squire’s attack.
[*]Next, we check if the Thief blocked the strike.

  • RNGeezus gave us 0.36 > 0.13, so no block either.
[*]Since this is a Strike, we skip the Resistance part.

[*]We check if the hit is critical

  • RNG -> 0.03 < 0.05, which means it’s a Critical Hit (good lord, thank you it wasn’t a critical failure).
  • We multiply the skill’s power by the critical multiplier, which is also different for different classes
  • The final damage is 15 * 1.2 = 18.
[*]The Thief takes 18 damage and ingloriously dies. The Squire enters a 3-turn cooldown period, and all other characters receive -1 to their current cooldown meter.


Repeat as necessary until all units or monsters are dead.

We tried this system and at one point our Characters would either be unable to dodge/block/resist (due to low chances), or, if we buff the respective chances by raising the stats by “equipping items” (adding a multiplier to the stat), become much more powerful than the monsters can be (248 STR vs 114 STR @ lvl 30, for a block chance of 19%).

The questions are:

  • How do we scale this into late-game, considering that we have not equipped any items on the Squire, and the monsters cannot have any equipped items?
  • How do we maintain a balance between victory and defeat for the player? What would a good difficulty curve for a mobile TB-RPG look like?
  • Are the formulas we are using, together with the coefficients giving us a viable option to scale everything into late game?
  • What seems wrong with the system? What did we miss? Are there any gaps we did not look into.
  • We have multiple Heroes that we want to feel different in terms of Evasion, Block, Resistance, Damage.
  • Is it worth comparing the stats of the Attacker vs those of the Defender when calculating the event chance, or would the Stats vs level*coefficient suffice?
  • What of the block damage reduction, does it synergize well with the Block chance?

We hope we can start a fruitful conversation and know what you guys think. References, ideas - anything is welcome.

Thank you.
 

Harmill

Veteran
Veteran
Joined
May 3, 2012
Messages
295
Reaction score
131
First Language
English
Primarily Uses
This is hard to give feedback because there are still unknown variables. What is the max stat value? What is the max level? What would the average stat be at max level? Now, based on the low values you provided for Level 1, I made my own assumption that 99 was the max stat. I plugged in 99 STR into your Block Chance formula, and randomly decided that the enemy attacker would be Lv. 42.

99 / (99 + 24*42) = 0.08943 = 9% chance

Now this result seems extremely low. If 99 was the max stat you should NOT have only a 9% chance to proc so maybe the max stat is higher. I tried only one other value for STR - 240.

240 / (240 + 24*42) = 0.1923 = 19% chance.

Even that seems low to me. If the enemy was not Lv. 42, but instead Lv.80, your block chance becomes 11%.

I won't experiment with the formulas more than that, but my initial impressions is that it doesn't scale well. However, perhaps you don't want block chance getting out of hand, and maybe 20% proc rate at higher levels is good for you?

As for monsters not being able to equip stuff, you increase their stats to compensate. Part of game balancing is figuring out what the average player level will be at any given point in the game, and balancing your monster stats around it. In most RPGs, monsters don't have equips, so I don't see this being any different.

I also see Block being overshadowed by Evasion and Resistance. Why would you rather reduce incoming damage over outright negating it? I would feel like a Warrior class is inherently lacking in the statistics department because his "special" proc is poor compared to the others. And from my own experience playing Warcraft 3, I know I very much dislike it when games have damage scale off different stats for different classes. Because the Rogue-type class gets to have his damage scale off his Crit and Evade chance stat, which makes him scale out of control compared to other classes. As long as his damage is scaling like a Warrior's AND he gets increased Crit chance, he will usually have higher damage potential than the Warrior. 

Victory vs Defeat..... well you mentioned this is a mobile game. Is it free to play or is it premium? Free to play usually has a drastic difficulty curve where they try to encourage the user to spend money to get stronger. Also, players don't like to lose, so if it feels like a hopeless fight because enemies are just too strong, you are in danger of making them quit instead of persevere or spend money. Ideally, you would seek a happy balance where a skilled / strategic player can make it much farther than a lesser player. In other words, try to put less emphasis on player vs enemy stats and more on player input. I think it is risky for the game's difficulty to be weighed too heavily towards enemy stat distribution, because then there's nothing the player can do but grind to increase their own stats. Grind for too long, and the player gets bored. Then the decision point: spend money to skip the grind or just quit playing?
 

Eugen

Warper
Member
Joined
Jan 16, 2015
Messages
2
Reaction score
0
First Language
English
Primarily Uses
Harmill thank you for the quick balanced response. To answer your questions.

The Max stat Value for the Warrior with a Level 60 cap,  without items is - STR 287 DEX 192 INT 192 VIT 287, so the Max with items is... unknown for fact now

You say that eventually Block becomes sort of obsolete compared to Evasion or Resistance of Magic.... That's also true. Rogues will become more powerful in terms of Damage and defense compared to other classes.

The main idea I got from your post is that there is still a lot of work to be done.

Honestly that's why we are here. Brainstorming and feedback , helps find the gaps in logic and design so if you have maybe some suggestions, please let us know.

We are still trying to figure out the correct formulas and how to scale everything late game.

Is it possible that the way we handle stats and attribute them to  'procs' ( Block, evasion, resistance ) is done incorrectly???

The game is indeed free to play and we want the player to enjoy it, not force him into any unworthy money expenses to make the game easier or more fun to play.
 

thaleb

Warper
Member
Joined
Jan 17, 2015
Messages
2
Reaction score
0
Primarily Uses
I think we should clarify that the current theoretical max stat value is 999, with HP going up to 9999. The current max. level is 60, and yes, this is a free-to-play game. Nevertheless, we'd like to keep it nice and balanced, keeping drastic difficulty curves at a minimum - we like to think of ourselves as honest game designers.

What would you suggest as a good way to scale the formulas? Should we change them outright, or, maybe, increasing the stat cap and being more generous with base stats per level would be enough?

Also, why do you consider an 11% block chance as low in a turn-based game? What block percentage would you be comfortable with?

Our Rogues are planned to have a higher damage potential than Warriors, with an emphasis on DoTs and nasty debuffs. We want the Warriors to feel fat and tanky, shieldwalls behind which other characters can comfortably wait for their turn to attack, but not our main damage source.

We opted for a Damage Reduction instead of full negation for Block because the Warriors will have the highest HP rating of all classes, so, having an option to completely ignore damage on an already HP-fat class didn't seem really comfortable.
 

Harmill

Veteran
Veteran
Joined
May 3, 2012
Messages
295
Reaction score
131
First Language
English
Primarily Uses
You say that eventually Block becomes sort of obsolete compared to Evasion or Resistance of Magic.... That's also true. Rogues will become more powerful in terms of Damage and defense compared to other classes.
I think this is the problem a lot of games run into with rogue classes. Their damage is usually on par or better than a warrior, AND their evasive capabilities means they are also better defensively. Personally, I would never want to tie the damage stat to the same stat that handles evasion, as there is no choice any more. Do I want my rogue to be stronger or harder to hit? That choice is eliminated because it is all condensed into a single stat. Warriors, who typically have to tank and therefore take damage, have to make a choice between "Do I want to be tankier or do I want to do more damage?". They have to choose between putting more emphasis on HP / DEF or opting for more ATK.

Is it possible that the way we handle stats and attribute them to  'procs' ( Block, evasion, resistance ) is done incorrectly???
I don't think there is a concrete 'correct' way -- design is not a science after all. Ultimately, playtesting is going to provide better feedback than theorycrafting ever will. My instinct is telling me that rogues or mages are going to become the best class because they are strong and hard to hit with physical attacks. Mages will be strong and will be hard to hit with magical attacks. But this still comes down to what the actual proc rates turn out to be. If they were kept at the 10-20% rate I found in my calculations, then perhaps that's not overpowered at all.

When I first read your post, and saw that each stat is tied to a unique proc. It actually is something I'd see more in a hack 'n slash dungeon crawler more than in a turn-based RPG. But I had thought that there would be a large emphasis on these procs. To me, 20% proc rate is not much of an emphasis. At the same time, you can't make it high like 60% because then the procs get out of control.

For one, procs might be easier to manage if they weren't tied to stats, which are as we know, very variable. Maybe equipment can determine it. Maybe passive skills can determine it. My reference for procs is Suikoden III, because their 'skill' system is one of my favourite passive skill systems. Evasion was a skill, and so was Shield Protect. Functionally, they were pretty much the same. If Evasion procs, you avoid damage. If Shield Protect procs, you avoid damage. Each skill had a 'rank', and by increasing the rank, you increase the chances for the skill to proc. By managing the progression of these ranks, you can better control the rate of procs as you wish.

One other suggestion is your decision to incorporate enemy level into the proc rate. It might simplify things if you remove that component and adjust the formula to compensate. The formula might be easier to work with and balance if you limit yourself to variables from the player only. I think another benefit of this is that the Player wants to feel like he is getting stronger and that making progress, and if it's only player variables that affect the proc rate, then the player can see a clear improvement as he plays the game -- especially if there is a numerical value they can see that tells them the proc rate. By having higher level enemies make it more difficult to proc skills, you are removing the sense of progression. At the end of the game, they are not proc'ing Evasion or Block much/any more than they were at the beginning.

What would you suggest as a good way to scale the formulas? Should we change them outright, or, maybe, increasing the stat cap and being more generous with base stats per level would be enough?
Sorry, I can't suggest a formula to you but the best way to test your formulas is to either playtest (if you have a running build of the game) or plug your formulas into Excel and start testing as many stat combinations until you either find a problem or are convinced the formula will result in the balance you want.

Also, why do you consider an 11% block chance as low in a turn-based game? What block percentage would you be comfortable with?
There isn't really a strict "11% is low" rule or anything -- it comes down to how these procs are implemented AND emphasized within the game. If these are meant to be secondary skills that occasionally proc, then sure, 11% might work out fine. If this proc system is meant to have a much larger emphasis on how you play the game, then 11% is too low for you to rely on it or predict it or make any meaningful risk assessments based on those procs. I'm not sure what your intent is with this system yet, so this is something for you and your team to decide.

Ultimately, my feedback on this might not be appropriate to the vision for your game, as this proc system is not enclosed from the rest of the game. How the rest of the battles mechanics work and play out greatly affect how you want to integrate this, and that's why play testing will be more useful. Hopefully, I've at least given food for thought -- be mindful of your design decisions so that you can evaluate the effect the mechanics will have.
 

thaleb

Warper
Member
Joined
Jan 17, 2015
Messages
2
Reaction score
0
Primarily Uses
What if we make something like the following?

Main stats:

  • STR - formed from optimal stat count (OSC) @ actor level * STR %, which depends on the actor and can be modified.

    Units’ STR is formed from Unit’s Base STR (which is derived not from  optimal stat count, but from base unit stat count (OSC*0.4))*racial perks bonuses  + Items STR bonus
  • Monster Stats are always derived directly from OSC and their stat %
[*]DEX - formed from optimal stat count (OSC) @ actor level * DEX %, which depends on the actor and can be modified.

  • Units’ DEX is formed from Unit’s Base DEX (which is derived not from  optimal stat count, but from base unit stat count (OSC*0.4))*racial perks bonuses  + Items DEX bonus
  • Monster Stats are always derived directly from OSC and their stat %
[*]INT - formed from optimal stat count (OSC) @ actor level * INT %, which depends on the actor and can be modified.

  • Units’ INT is formed from Unit’s Base INT (which is derived not from  optimal stat count, but from base unit stat count (OSC*0.4))*racial perks bonuses  + Items INT bonus
[*]VIT - formed from optimal stat count (OSC) @ actor level * VIT %, which depends on the actor and can be modified.

  • Units’ VIT is formed from Unit’s Base VIT (which is derived not from  optimal stat count, but from base unit stat count (OSC*0.4))*racial perks bonuses  + Items VIT bonus
UNITS Stats

UnitCurrentStat = UnitBaseStat@UnitLevel + SumOfUnitStatEquipmentBonuses

UnitBaseStat@UnitLevel = UnitBaseTotalStats@UnitLevel * UnitStatsToStatDistribution

UnitBaseSTR@UnitLevel = UnitBaseTotalStats@UnitLevel * UnitStatsToSTRDistribution

UnitBaseDEX@UnitLevel = UnitBaseTotalStats@UnitLevel * UnitStatsToDEXDistribution

UnitBaseINT@UnitLevel = UnitBaseTotalStats@UnitLevel * UnitStatsToINTDistribution

UnitBaseVIT@UnitLevel = UnitBaseTotalStats@UnitLevel * UnitStatsToVITDistribution

UnitBaseTotalStats@UnitLevel - taken from table

UnitStatsToSTRDistribution - taken from table

UnitStatsToDEXDistribution - taken from table

UnitStatsToINTDistribution - taken from table

UnitStatsToVITDistribution - taken from table

MONSTERS Stats

MonsterCurrentStat = OptimumTotalStats@MonsterLevel * MonstersStatsToStatDistribution

MonsterSTR@MonsterLevel = OptimumTotalStats@UnitLevel * MonsterStatsToSTRDistribution

MonsterDEX@MonsterLevel = OptimumTotalStats@UnitLevel * MonsterStatsToDEXDistribution

MonsterINT@MonsterLevel = OptimumTotalStats@UnitLevel * MonsterStatsToINTDistribution

MonsterVIT@MonsterLevel = OptimumTotalStats@UnitLevel * MonsterStatsToVITDistribution

UnitBaseTotalStats@UnitLevel - taken from table

MonsterStatsToSTRDistribution - taken from table

MonsterStatsToDEXDistribution - taken from table

MonsterStatsToINTDistribution- taken from table

MonsterStatsToVITDistribution- taken from table

Derived Stats

  • Block Chance: derived from STR (CurrentSTR / STRtoBlock). On Block, multiply current Damage Reduction by 2.
  • Evasion Chance: derived from DEX. On Evade, ignore all effects of a Strike or Spell.
  • Critical Chance: derived from INT. On Crit, multiply final ability power by 2.
  • Damage Reduction: derived from VIT. On each hit, decrease incoming damage by a percentage.
  • HP: derived from VIT. Units and monsters have different modifiers for this transformation.

    Monsters’ HP is formed from Base HP - derived from VIT - multiplied by the monster’s Final HP Multiplier, which may vary from monster to monster.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

Holy stink, where have I been? Well, I started my temporary job this week. So less time to spend on game design... :(
Cartoonier cloud cover that better fits the art style, as well as (slightly) improved blending/fading... fading clouds when there are larger patterns is still somewhat abrupt for some reason.
Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD
How many parameters is 'too many'??
Yay, now back in action Happy Christmas time, coming back!






Back in action to develop the indie game that has been long overdue... Final Fallacy. A game that keeps on giving! The development never ends as the developer thinks to be the smart cookie by coming back and beginning by saying... "Oh bother, this indie game has been long overdue..." How could one resist such? No-one c

Forum statistics

Threads
105,857
Messages
1,017,018
Members
137,563
Latest member
MinyakaAeon
Top