Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411595 Posts in 69386 Topics- by 58444 Members - Latest Member: FightingFoxGame

May 07, 2024, 03:31:33 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperDesignDetermining Turn Order in RPG Battle System
Pages: [1]
Print
Author Topic: Determining Turn Order in RPG Battle System  (Read 4847 times)
Gazillion
Level 1
*



View Profile
« on: March 07, 2011, 06:16:12 PM »

Hey,

I'm currently working on a small RPG with turn based battles ALA Dragon Quest. One of the major differences is that the order of turns between the player and the monsters isn't  set in stone because time has a major role in the game.

Essentially I have a time line with a cursor on it that represents the present. As time goes forward so does the cursor and there are icons on this time line that determines when a character's turn is up. Pretty straight forward so far, but my problem is that the faster a character is the quicker his turn over is on this timeline.

For example say that Character X has a turn every 8 seconds while Monster A has a turn every 10 seconds. The problem I'm having is that as characters become faster and faster the time between turns shrinks which makes it somewhat difficult to model because I'd hate to have a grinded character have its turn 20 times before a monster even has the chance to attack. However, I'd also like for player's who have taken the time to grind their characters to get a reward in terms of quicker turnovers.

I'm guessing there would be some sort of equation to determine the time in-between turns that is relative to the other units in the encounter. Any ideas?
Logged

snowyowl
Level 1
*


View Profile
« Reply #1 on: March 07, 2011, 07:09:04 PM »

I'm confused. Exactly how much power do you want your characters to gain when they level up? And what kind of tactical advantages does attacking twice consecutively give?
Logged
Pineapple
Level 10
*****

~♪


View Profile WWW
« Reply #2 on: March 07, 2011, 07:10:57 PM »

I always like FFT's speed system - it determines who moves before who and rewards a unit's inactivity this turn with a sooner opportunity to act on the next.
Logged
Gazillion
Level 1
*



View Profile
« Reply #3 on: March 07, 2011, 08:01:38 PM »

Well they gain the same kind of stat improvements you'd see in JRPGs but I'd like the player to be able to mess around with the turns through different types of attacks. As they level up their speed stat increases meaning they can move faster and eventually get two turns in before the enemy does. The main problem is that I'd like to balance this so that it doesn't break the game if the player decides to just spend time grinding their stats but at the same time still give them the satisfaction of what they did wasn't for nothing.

David, I like those kinds of system as well but the way I was picturing my system there aren't "rounds" but instead just character turns. So say I cast "slow" on an enemy its next round will be in +12 seconds instead of +6 and so forth.
Logged

SundownKid
Level 10
*****



View Profile WWW
« Reply #4 on: March 07, 2011, 08:31:31 PM »

It seems like you have a general grinding problem then. What modern games often do is drastically decrease the benefits of grinding after the player reaches a certain level relative to the enemies so you have no choice but to move on or spend an inordinate amount of time for less benefit. And when the player moves on, they must face faster monsters or whatnot.
Logged

radioact1ve
Level 0
**


What?


View Profile WWW
« Reply #5 on: March 07, 2011, 08:32:28 PM »

Nice battle system plan. I loved it in Grandia II. Definitely give it a go if you can/haven't.

As for your "character have its turn 20 times before a monster even has the chance to attack" problem, its bound to happen. Say for example at the end of the game, your player is level 40 and travels to town 1 again, hes going to be really fast and able to get consecutive hits, if not KO, before the enemy. Thats unless you make the enemies strength relative to the player. Throwing random numbers to mix it up a bit. I can see it working out that way so it at least limits the number consecutive turns.

Mostly trial and error my friend. Play around with the stats and experience points gained to get a balance that works.
Logged

azeo
Level 1
*

Blank slate!


View Profile
« Reply #6 on: March 07, 2011, 10:40:50 PM »

Couldn't you have it all based off the enemy? Say, if you have two enemies, you take whatever its speed is, and set that as the "base" for the fight, so say it has a speed of 40, and it takes 20 seconds per turn. So divide 40/20, you get 2, so for every 2 point above that enemy, you are a second faster, and for every 2 points below that enemy, you are a second slower.
Or did I read the question wrong?
Logged
krasimir
Level 0
**



View Profile WWW
« Reply #7 on: March 07, 2011, 11:09:11 PM »

The problem I'm having is that as characters become faster and faster the time between turns shrinks which makes it somewhat difficult to model because I'd hate to have a grinded character have its turn 20 times before a monster even has the chance to attack.

This seems like a terrible idea - attacking 20 times without a counter attack. Same thing about an attack every 10 seconds - it's excruciatingly slow. I think you need to revisit the speed leveling and come up with another way to scale that's NOT 100% speed-based.
Logged

SundownKid
Level 10
*****



View Profile WWW
« Reply #8 on: March 08, 2011, 12:53:50 AM »

The problem I'm having is that as characters become faster and faster the time between turns shrinks which makes it somewhat difficult to model because I'd hate to have a grinded character have its turn 20 times before a monster even has the chance to attack.

This seems like a terrible idea - attacking 20 times without a counter attack. Same thing about an attack every 10 seconds - it's excruciatingly slow. I think you need to revisit the speed leveling and come up with another way to scale that's NOT 100% speed-based.

It's actually not much of a problem. Once you are at a high enough level that this is the case, you should be able to steamroll those weak enemies far more quickly - as long as all the stats level equally. They would be dead far before the 20 turns have expended.
Logged

Gazillion
Level 1
*



View Profile
« Reply #9 on: March 08, 2011, 06:54:27 AM »

Couldn't you have it all based off the enemy? Say, if you have two enemies, you take whatever its speed is, and set that as the "base" for the fight, so say it has a speed of 40, and it takes 20 seconds per turn. So divide 40/20, you get 2, so for every 2 point above that enemy, you are a second faster, and for every 2 points below that enemy, you are a second slower.
Or did I read the question wrong?

Yeah I was trying to come up with a way to compare all the speed stats in the encounter and then place them on the timeline accordingly. I figured I could come up with a good equation to then figure out the +X seconds until the next turn using the difference in speed or something like that. I guess it will have to be trial and error Smiley

This seems like a terrible idea - attacking 20 times without a counter attack. Same thing about an attack every 10 seconds - it's excruciatingly slow. I think you need to revisit the speed leveling and come up with another way to scale that's NOT 100% speed-based.

Well the 20 attacks thing is what I'm trying to avoid (though I used the number 20 just as an exaggerated example to make it clear what I want to avoid). Also, as far as the +10 seconds go, it's just an indicator as to when the next player's action menu will come up to take an action (this way a character could fit its turn between two other monsters in the encounter). If there are four party members with their tokens spread across the timeline there will rarely be 10 seconds of inaction (unless they all fall on the same timeslot). Besides I wouldn't make the player wait during those gaps of time, I'd just make the system jump to the next token Smiley

Here I'll try to show you what I mean.

Code:
C1 - Character 1's turn
C2 - Character 2's turn

M1 - Monster 1's turn
M2 - Monster 2's turn

   C1    M1 M2  C2
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
0     5     10    15    20    25    30    35    40    45    50    55    60

From the example above the turn order is: C1, M1, M2, C2. However, since Character 1 is really fast its +X seconds modifier is +5 (instead of say, the default +10) so its next turn will fall right between M1 and M2.

So once C1 decides to use a fire spell on the enemy the timeline would look like:

Code:
C1 - Character 1's turn
C2 - Character 2's turn

M1 - Monster 1's turn
M2 - Monster 2's turn

         M1C1M2  C2
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
0     5     10    15    20    25    30    35    40    45    50    55    60

The idea isn't to make the player wait, it's to have the order of actions be mixed up according to character speed. This also adds a lot of fun stuff to the game such as speed modifiers and damage over time that could be interrupted through special actions.

@radioact1ve - Thanks for naming Grandia 2 for having a similar system. I'll take a look at the game and see if I can figure out how they did it Smiley
Logged

_Tommo_
Level 8
***


frn frn frn


View Profile WWW
« Reply #10 on: March 08, 2011, 07:45:31 AM »

Maybe, you could give a speed bonus to someone that is attacked (be it a NPC or a player).
This could benefit the 20-turn-streak situation, but can also save your player when he has been left alone and a lot of slow-ish monsters attack him in turn.

After two, attacks, say, he will get a free turn. It could work.
Logged

Ben_Hurr
Level 10
*****


nom nom nom


View Profile
« Reply #11 on: March 08, 2011, 07:58:39 AM »

Doesn't Megaman X: Command Mission do something similar with its turns?

And why shouldn't the player characters be able to move at DBZ-esque speeds when facing vastly inferior enemies?  Durr...?
Logged
AndyKorth
Level 1
*



View Profile WWW
« Reply #12 on: March 08, 2011, 08:24:42 AM »

I'd also recommend replicating the FFT time counter system. That's what I did in Reclaimed- it's a pretty easy thing to implement. It's also the same system used in Active Time Battle games as well... just with a bar that fills up instead of a text counter.
Logged

Howling Moon Software- Twilight Golf, Crayon Ball, and Unity3D stuff
baconman
Level 10
*****


Design Guru


View Profile WWW
« Reply #13 on: March 10, 2011, 03:45:31 AM »

Seems more like a balancing issue with enemies than anything else. If monster attacks per level aren't increasing enough, just change that factor. Also, this could indicate that you have too many random battles occuring between chapters; you can try to lower the frequency of their occurance (so players don't inadvertently "grind" as rapidly). You can also lessen the per-level boost of the players' speed increase; and introduce moves or techniques that take multiple turns (and thus, make them economically feasible to use).

You don't have a problem here. You have untapped potential! Smiley
Logged

SplinterOfChaos
Level 3
***



View Profile
« Reply #14 on: March 12, 2011, 03:53:29 PM »

Interestingly enough, i see this as a physics problem.

If a player has +10 speed and i have +20 speed, does that mean i'm exactly twice as fast in battle? For things like this, i typically like to bust out a mathematical formula that promises high increases early on and low increases later so nothing climbs to infinity. For example:

turnFrequency = sqrt( speed attribute )
turnTime = some const / turnFrequency

I don't normally use log, but since you know the speed attribute >= 1, that'd work too.

With the square root, attacking twice when an enemy attacks ones means having a 4 times higher speed attribute. If you don't want the player to need to be 4 times faster, then change sqrt(speed) to speed^(1/2). Try different exponents (3/4, 5/6, etc.) till something feels right.
Logged

tsameti
Level 2
**



View Profile
« Reply #15 on: March 14, 2011, 11:31:27 AM »

I'd hack up a solution with fuzzy math.


Every 'round' the character's modified speed attribute (plus an internal base offset) is used to calculate an initiative value. Then the values are compared with a stat function to divide it into standard deviation groupings.

At predetermined intervals: 1.6, 2.4, or what have you, times the average standard initiative, you get your multiple turns. But you get slightly diminishing returns so it doesn't get OP, maybe your attack power is slightly reduced for each extra turn you take. Extra turns are assigned at the divided values of your total init.

Each round, everyone gets at least one turn. But you're still rewarded for pumping speed.


What do you think?



I mean, an easier way is to have it so that Speed doesn't increase through normal level up, you rather only get speed bonuses through equips and specializations. You have to purposefully load out your ninja characters that way, and the whole length of the game you'll only have to deal with a fairly narrow range of speed stats. Easy solution.
Logged

Current
Poikolos

Permanently on Hiatus
Son, Stranger
Aelexe
Level 0
**

Out of Phase


View Profile
« Reply #16 on: March 14, 2011, 02:19:36 PM »

What if you did something like taking the average of every participating units speed statistic, and then alter how long a turn takes to occur for each character based on the percentile difference between it's speed statistic and the average?
Logged
Aquin
Level 10
*****


Aquin is over here.


View Profile WWW
« Reply #17 on: March 14, 2011, 02:22:20 PM »

Radiant Historia had an interesting approach:  basically, it gave the player absolute authourity over who went next.  And the game is tough enough that you seriously need the advantage.

Anyway, it might be a simple solution to an otherwise very fuzzy problem.  I know I've considered the topic of 'initiative' many times before, with limited success.
Logged

I'd write a devlog about my current game, but I'm too busy making it.
wednesday
Level 0
*


View Profile
« Reply #18 on: March 16, 2011, 11:30:09 AM »

I thought the typical balance for attacking more was to do less damage per hit. Usually characters in games that are quick and hit many times do less damage per hit, and the detriment being that armor values would affect each hit more dramatically than a character who acts once and does a single large slice of damage.
Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic