BALANCING AGILITY + ATB

Posts

Pages: 1
I'm programming my own Grandia inspired battle system from scratch in Godot (side project). Similar to Final Fantasy except you can see the enemy's atb (in Grandia's case you see everyone in a timeline). There's a bunch of other divergent snowflake ideas I have but for the moment assume I'm just recreating the bog standard ATB here. Characters each have a time gauge that are independent to each other and whoever gets filled up gets to act.

I'm not using any of the RPGMaker programs. However I don't really know where to start in regards to an agility stat's influence on this whole thing. I'm wondering if any of you had experience using an ATB (in the scriptable newer RPGMakers) in which Agility makes a difference but isn't a total shitshow if some character is acting 1 time for every 5 times one actor gets to attack. There are probably solutions to put a "cap" on things but probably some pros and cons that I can only guess at. Is there any particular plugin that just nailed good formulas that were reliable throughout a ton of testing and throughout development? I've checked the popular ones but I don't have the time to make an entire game in RPGMaker to learn from. Just hoping for some anecdotals on the general state of ATBs. I assume we all know default RM2003 is an example on what NOT to do and we're leaving that behind us... because yeah.

My thinking so far is this: At the start of battle, take the highest agility stat actor and make them the default fill speed that's comfortable (we'll consider this 100% agility). Then decrease everyone else's fill speed via some kind of weight/percentage math but don't exactly make it so someone at 50% agility acts once every 2 turns of the highest (maybe fudge to the lower 30% for that?). If there's any agility or speed buff, the highest agility at the start of the battle is still considered 100% and someone at 150%ish will still feel empowering to feel worth it. I'm also thinking in regards to the starting fill (at the start of battle), where obviously the high agility gets the advantage but with slight RNG to not make it feel samey.

Think 90% of my concerns are going to be answered with "depends on how you tweak it" but I'm still wondering if there's any rule of the thumbs or obvious things I might be missing here or just general ATB philopshy (that someone has a hypothetical phd in).

Draug's Resurrection uses exceptionally low numbers, so keep that in mind. It also hasn't gotten any real testing outside of my own, so perhaps balance isn't great, but I haven't seen too many obvious issues. I'd also like to state that I don't know anything about RM2k3.

About 95% of the Speed values are between 12 and 40, with 20 being the 'average' at the start of the game. In a battle with 8 characters, you don't really notice when someone is acting twice or half as often as most other characters, especially with other Spells and Skill requiring varying amounts of recharge time. Bosses are going to need higher values to prevent them from being dogpiled, though.

DR has a weird quirk that multiple characters can reach 100% charge at a time, and they WILL get their turn, even if they die with 100%+ charge. It sounds weird on paper, but it makes it much more difficult to shut an enemy down before they can act at all.

While the player is allowed to choose how to spend their level ups, it's fairly restricted, as you're only given three stats at a time to choose. Speed is valued at 10 points, while Attack/Defense/Magic/Resistance are 5, and HP 1. While this works well enough for simplicity's sake, I will admit that I think it still undervalues Speed, and it should probably be 15 or even 20 points. But it's waaaaaay too late for me to change that. Oh, and Evasion is an entirely separate stat.

For buffs, Haste has much harsher diminishing returns than other buff spells, giving like 7 or so points to Speed at low values, but only 1 or 2 at high values. Lastly, while maybe random, the spells Vacuum Wave and Quicksilver are specifically designed to screw over those who try to invest exclusively in Speed/Evasion, as they do more damage the higher those values break away from the others.
Red_Nova
Sir Redd of Novus: He who made Prayer of the Faithless that one time, and that was pretty dang rad! :D
9192
While I don't have much experience with designing ATB systems, one thing that immediately stood out to me about your thought process was the idea of defining the standard pace of battle by the fastest battler in the scene. While this can work, this approach can also lead to inconsistency with how fast each individual battler feels, as enemies with various AGI stats can change the speed of your party members from battle to battle, leading to an inability by the player to draw a solid connection between their character's AGI stats and the effect on the ATB.

What if, instead, there was a universal standard speed that all battler's ATB gauges filled, and the only AGI stat that modified each battler's individual ATB recharge speed was... their own? More specifically, what their actual AGI stat is compared to a standard AGI stat for a battler at their level. You can then assign a letter grade to that character's AGI based on the size of the difference, and use that grade to modify ATB gauge recovery speed. An "E" grade, for example, would have the slowest ATB recovery speed, "A" would be the fastest, and "C" would not affect ATB speed one way or the other. Assuming the average AGI stat of a battler is == their level, a level 50 battler with 50 AGI would be given a C grade, and would not have their ATB charge rate affected in any way. The exact threshold between grades is defined by you, the dev, in order to set a hard ceiling and floor to prevent any lopsided scenarios where a character can act five times before a slow character can act once.

Buffs/debuffs, as a high concept, instantly move a battler's grade up and down a level or two or three. You can even add phantom grades to the very ends of the list that can only be reached through battle effects to ensure that characters already at the edges of the grade list still feel the effects of a buff/debuff.
author=Acra
I'd also like to state that I don't know anything about RM2k3.

RM2K3 was *i think* everyone's agi gets pooled together to get some kind of average, but the more actors there were the more slower actors would typically be. The """solution""" would just be to ignore agility as a stat all together and set everyone to a flat 100 and make quick/slow characters deviate a little from that. Thread about it 10 years ago (jesus). Now that I look into it more, Pepsi added what looks to be a better version (formula included) but haven't actually tried it myself. I'd like to see the exact formula though.

I don't know if it's just badly tuned or a bad philopshy, now that I look into it I think FF7 does some kind of party pooling in regards to how Dexterity affects ATB speed too and no one complained about that. Chrono Trigger I think is actually pretty close to the RM2K3 """solution""" in that speed is a stat not affected by level ups and only goes up to 24 and is more about haste and equipping tabs. Kind of hard to find exact info of this stuff...

author=Acra
About 95% of the Speed values are between 12 and 40, with 20 being the 'average' at the start of the game. In a battle with 8 characters, you don't really notice when someone is acting twice or half as often as most other characters, especially with other Spells and Skill requiring varying amounts of recharge time. Bosses are going to need higher values to prevent them from being dogpiled, though.

I noticed you're using RPGToolkit for your game, does the way speed work built in or are you making it yourself? Also recharge sounds interesting, how does that work?

@RedNova: That def makes more sense, mainly the idea in making it less relative to the battles individually and more on what I think works for the characters as they increase in levels. Not sure what you mean exactly by grades (or at least how to implement those), I would just assume to have a list of all the "C" grades per level and use that as the relative point to add or subtract from. Though I suppose you mean manually setting hard limits also?

Though now that I think about it, it might just be be better to have the acceptable agility be an exponential increase from a level 1 acceptable agi value using the character's level as a multiplier instead of having an stat chart.
RPGToolkit 3 doesn't even have a functioning default battle system, last I checked. There is a conversion of the TK2's (pretty basic) battle system, but it's so incomplete it just gets stuck in an infinite loop of errors if you try to use it. I don't think it's a central factor, but I don't think it did anything to slow down the engine's total death by 2009 or so. If you don't want to do everything from scratch, don't use the Toolkit. The board editor, for it's time, was miles ahead of where RPGMaker was, and it was also free.

Anyway, Recharge is really simple. Attacks/Skills/Spells drop your Charge by a number, say, anywhere from 40 to 300. You act if you're 100 or above, in order from whoever has the highest number (players go first in a tie). Once nobody is over 100 Charge, everybody's Charge goes up by their Speed until someone is over 100 again. There's not any particular penalty for being in the negatives (apart from, as usual, one particular skill to make a couple particular enemies more standout). It's more that as testing went on, I found things flowed better to have stronger skills give much longer Recharge times.
Red_Nova
Sir Redd of Novus: He who made Prayer of the Faithless that one time, and that was pretty dang rad! :D
9192
author=Darken
@RedNova: That def makes more sense, mainly the idea in making it less relative to the battles individually and more on what I think works for the characters as they increase in levels. Not sure what you mean exactly by grades (or at least how to implement those), I would just assume to have a list of all the "C" grades per level and use that as the relative point to add or subtract from. Though I suppose you mean manually setting hard limits also?

Though now that I think about it, it might just be be better to have the acceptable agility be an exponential increase from a level 1 acceptable agi value using the character's level as a multiplier instead of having an stat chart.



You pretty much got it right. In battle, the AGI affects the grade, and the grade is what affects the ATB charge rate. Here's an example chart:



To find the grade of a battler, compare that battler's AGI with the average AGI for that level (an exponential increase from a level 1 AGI value is a good idea), and use the third row of this chart to find the battler's grade depending on how far from the average it is. Then, in battle, multiply the universal standard ATB refresh rate with the value found in the second row of the chart at the column associated with that battler's grade to get the refresh speed of the ATB bar for that battler.

In this chart, the red columns are the phantom grades that I mentioned before that can only be achieved when a battler receives a buff or debuff during battle.
Alright makes sense, that's probably the direction I'll go in.

As a side note: looking into what existing games do, it turns out FF8 and FF9 has less to it then I would think:

FFVIII
Although nothing changes visually, the size of the ATB bar changes depending

on BattleSpeed

BarSize = BattleSpeed * 4000

Every tick, the bar is increased by the BarIncrement

BarIncrement = (Spd + 30) * SpeedMod / 2

SpeedMod:
1 Character has Slow status
2 Character has neither Slow nor Haste status
3 Character has Haste status]


FFIX
 Although nothing changes visually, the length of a character's ATB bar is

equal to:

Length = ((60 - Spd) * 160)

Every tick, the bar is increased by the following:

+8 (slowest Battle Speed)
+10 (medium Battle Speed)
+14 (fastest Battle Speed)]


FF8 makes a lessened speed stat go against an option adjusted maximum bar then FF9 is like fuck it make the speed stat change the maximum bar but have the fill rate be decided in the options. I think speed in FF9 only goes up to 50, with FF8 it's 255 so they probably played it by ear and didn't want stats to really be a big deal. Obviously not part of my goal but I think it's still interesting.
unity
You're magical to me.
12540
I don't have anything useful to add but I just want to say "heck yeah!!!" to you using a Grandia-inspired battle system! The world needs more of those :DDD

Also wow, yeah, those FF battle speed notes are not what I expected
Pages: 1