• Add Review
  • Subscribe
  • Nominate
  • Submit Media
  • RSS

Mid-Month Update - The Great Debuff Problem of 2016

  • Sgt M
  • 07/07/2016 05:06 AM
  • 4050 views
Today, I bring you a different sort of blog! We're going to look at a rather finicky problem affecting some of the later areas of Soma Spirits that may be a good lesson for aspiring devs, perhaps. maybe. We'll see!

Soma Spirits handles buffs a little differently than what RPG Maker's default wants to enforce. By default, VXA applies buffs seperately from stats, stacking twice, first at +/- 25% and then +/- 50%. For the damage formulas that I established for the game rather early in development, a 50% increase ended up being far too much and was the different between monsters doing 1 damage or 40. Probably not a good variance in a game where you're probably going to have about 180-200 HP by the game's end.

Soma Spirits applies buffs as an unstackable state/status effect. So you get a one-time buff or debuff of 20% and this works well for the majority of the game. But now that I am working on the last two dungeons, I'm noticing that even 20% is still fluctuating wildly as monster stats are being more heavily affected by them.

Soma Spirit's default attack formula is a.atk * 1 - b.def *0.5 (Variance 10%), basically a downscaled version of the default atk4 - def2.

The first monster in the game, Oozie. has 16 ATK. So a 20% debuff will put them at about 13. At that point, that's no big deal at all. However, late game monsters have upwards of 50 ATK, and a 20% debuff will put them at 40. And with the formula roughly equating to 1 ATK = 1 DMG, that can be the difference between them doing 10 damage or 20.

Basically, any move used against monsters that lowers their ATK stat is very overpowered right now. Dearie me.

I think what we have going on here is that the intended exchange of numbers isn't really compatible with that damage formula. At Level 1, you have about 60 HP, and at Level 15 you have about 140. Monsters are intended to hit you for about 20 damage by that time, and if they're only doing half of their intended damage, that's a bit of a problem.

So I'm looking at solutions. And here's some ideas I've had. And maybe you folks could add suggestions as well:

1. Increase the player's HP, lower defense and increase intended damage intake. For example, if the player had 250 HP at that point of the game and is intended to take about 30 damage per hit, the difference between 20 and 30 would be far less debilitating to the game's difficulty and balance.

2. Have late-game enemies rely less on regular attacks and more on skills with unique formulas. For example, there is no Magic Defense stat in the game (MDF governs healing)

I'll figure this out, hopefully.

Posts

Pages: 1
Vaccaria
You'd think MZ would use a dictionary for switches/variables by now?
4936
I hope there's no such thing as a 200% lifesteal buff for an enemy boss that STACKS.
It sounds like % based alterations might be approaching this from the wrong direction to begin with. What you're observing is a problem that occurs when using subtractive rather than divisive defense (a split in methodologies that has been extensively discussed on RMN and elsewhere, I believe). In a subtractive defense system, buffs and debuff make huge differences -- doubling attack or defense can affect damage by far more than 200%, as you're observing. Percent-based scaling doesn't work well in such a system unless you scale HP growth just right (which is what you're proposing in solution 1), since the differences created, and thus the damage variance, will upscale wildly with stat growth.

I think the most logical option is to play to the basis of the battle system: simple arithmetic. Make buffs and debuffs alter stats by a fixed number, possibly varying with magic attack if you still want a bit of a scaling effect. Is that possible or is VX Ace just not built for that functionality?
I think argh's got the right idea. Another fix would be to alter your damage formula. I'm using crystalgate's formula in Jimmy; it basically works like this:

a.atk**2/(a.atk+b.def)

The ** denotes an exponent; so it's attack squared divided by the sum of attack and enemy defense. This makes defense scaling much more natural; with Ace's default formula, defense tends to either be useless or grossly overpowered.
author=Housekeeping
I think argh's got the right idea. Another fix would be to alter your damage formula. I'm using crystalgate's formula in Jimmy; it basically works like this:

a.atk**2/(a.atk+b.def)

The ** denotes an exponent; so it's attack squared divided by the sum of attack and enemy defense. This makes defense scaling much more natural; with Ace's default formula, defense tends to either be useless or grossly overpowered.


This is doing the trick! Monsters are doing much closer to their intended damage, with a debuff applied. a 20% debuff with the same stats now brings damage down from 18 to about 13. This is MUCH better!

Thank you so much!
author=Housekeeping
I think argh's got the right idea. Another fix would be to alter your damage formula. I'm using crystalgate's formula in Jimmy; it basically works like this:

a.atk^2/(a.atk+b.def)

Awesome to see people using this formula! I shared it last year here and Crystalgate was both supportive and helpful in dissecting the math behind why the formula works.

In case you're curious, the formula was designed to make it easy for game developers to balance around. To that end it does two things. First, the formula is designed do to atk/2 damage when atk = def. So if you have 1000 atk against a 1000 def enemy, you do 500 damage. And second it's designed to prevent small stat changes from having an oversized effect on damage.

Good luck with your game!
Sorry I misattributed your formula, hedge! I'll make sure to mention that it came from you in the future. It's been incredibly useful!
No worries. I'm glad to hear it's been useful!
Pages: 1