Problems with Speed

All new ideas for the upcoming releases of ToME 4.x.x should be discussed here

Moderator: Moderator

Message
Author
Grey
Loremaster
Posts: 3517
Joined: Thu Sep 23, 2010 10:18 pm
Location: London, England
Contact:

Problems with Speed

#1 Post by Grey »

Note that everything below is my opinion etc etc, and when it comes to design stuff I can be very strongly opinioned. Some will doubtless disagree strongly!

ToME4 used to have a good, clear speed system. Pretty much everything moved at 100% speed. Very very few monsters disobeyed this, and when they did it was obvious and made those monsters interesting. Cooldowns were tied to player turns. The tactical combat was very much centred on planning your turns ahead, guessing enemy moves and knowing when your abilities would come back off cooldown. There could be speed modifications due to some status effects, but these were both rare and significant in proportion. You really felt it when you were slowed, for instance.

Now... there seems to be a plethora of speed modifiers, and different types of speed, and cooldowns are linked to a global system. I understand the need for global cooldown turns, but with all of the modifiers going on it heavily interferes with tactical combat. You can no longer know if your ability will come off cooldown next turn, you can no longer accurately predict when an enemy will move into a space. You end up proceeding with a plan to find it scuppered by your own high movement or combat or global speed. The chess like feeling of trying to plan the next 5 turns is gone - you are left reacting to situations turn by turn. A bit of uncertainty is only natural, but this feels like complete lack of control at times.

Things like 7% modifiers to combat speed are especially bad for this. With an invisible counter going on in the back that means every 14 or so melee hits you get an extra hit. For the character this is a vague advantage, but it means nothing tactically as you can never predict when this extra turn will come, and sometimes it can come at a time you least want it - a healing skill is on cooldown of 1, you use an attack thinking you'll get that you'll have your healing skill next turn, but instead it stays at 1, leaving you vulnerable. If you had moved or waited instead you would have used up a full turn and had your healing! This sort of behaviour is immensely frustrating to me. It's made especially worse when you have to juggle modifiers to all 3 speed types and your global character speed. You can never predict how speed will operate for you.

I don't mind rare and significant modifiers to speed, but the commonness, smallness and variety of speed modifiers in the game at present makes it a horrible mess. ToME is a turn-based game, and the cooldown system especially requires clarity of turns - anything but large modifiers gets in the way of that of that clarity. ToME has perfect clarity in so many other areas, but speed, something we rely on innately in the game, is now obscured.

What can be done to alleviate this:
- Remove most speed modifiers from egos and artifacts, especially those less than 20%
- Remove all combat and spell speed modifiers. They add nothing to the game beyond being a vague bonus to the character. I repeat - combat and spell speed add *nothing* to the game. Unless perhaps they're going to be given in very high amounts that make a rael difference to play.
- Reconsider any talents and status effects that modify speed by less than 20% or that modify in non-round numbers. Ideally everything should be in multiples of 10/20.
http://www.gamesofgrey.com - My own T-Engine games!
Roguelike Radio - A podcast about roguelikes

SageAcrin
Sher'Tul Godslayer
Posts: 1884
Joined: Tue Apr 10, 2012 6:52 pm

Re: Problems with Speed

#2 Post by SageAcrin »

- Remove all combat and spell speed modifiers. They add nothing to the game beyond being a vague bonus to the character. I repeat - combat and spell speed add *nothing* to the game. Unless perhaps they're going to be given in very high amounts that make a rael difference to play.
I have to note that Brawler utilizes combat delay heavily as a gameplay mechanic(To the point of nearly getting constant double strikes with gloves, yet.), and that several artifact weapons are built around the idea of it existing, as are some egos. Archers are also built around the idea of fairly low delay, to a lesser degree.

You'd pretty much have to rebalance Brawler entirely and pull the equips involved, if you did that.

Otherwise...well, I see where you're coming from, but I actually think that, from a clarity standpoint, you're actually thinking too small, funny enough, and that any speed bonus below 30% or so isn't really worth keeping there. Something large enough so that you can mentally see as a constant strategic bonus. "I am getting four turns to every third the opponent is", and then you plan around it.

Having said that, either way it would require gutting a massive amount of skills(stuff like Strider operates on 2% Movement speed margins, and Celerity 10%, Shadow Feed uses low amounts of Attack/Spell speed, etc.), egos, overhauling any enemies that may have had minor speed bonuses(In fact, I believe Blade Horrors, for an example, would have to be cut entirely if you removed physical attack and weapon delay modifiers, as that's their only really notable and distinctive trait.)...

It's a neat idea. But maybe it's a little late in development. ToME feels like it treats speed as both a damage and/or mobility modifier, as well as a tactics modifier, and reverting it to solely be the latter would be quite hard, I think.

Velorien
Archmage
Posts: 360
Joined: Thu Jan 12, 2012 9:09 pm

Re: Problems with Speed

#3 Post by Velorien »

I think Grey's idea is nothing short of beautiful (actually being able to predict what's going to happen! Bonuses that you can intuitively weigh in your head!), but I can see where it would take a great deal of work to implement.

As an interim compromise, how about any non-100% global speed invoking a buff on the player along the lines of "you are moving exceptionally fast. Whenever this counter reaches 0 (every X turns), you will receive an extra turn. Note: talents will not cool down during extra turns), or an analogous debuff?

Incidentally, why *do* talents not cool down during extra turns? Seems like this is both inconvenient and counter-intuitive.

SageAcrin
Sher'Tul Godslayer
Posts: 1884
Joined: Tue Apr 10, 2012 6:52 pm

Re: Problems with Speed

#4 Post by SageAcrin »

As an interim compromise, how about any non-100% global speed invoking a buff on the player along the lines of "you are moving exceptionally fast. Whenever this counter reaches 0 (every X turns), you will receive an extra turn. Note: talents will not cool down during extra turns), or an analogous debuff?
The short answer to that is that it could work. Someone with more knowledge of the internals of speed would be able to give a more honestly thorough answer to this, though.

Essentially, as I understand it, the game isn't turn based in the standard "I go, then you go" sense, but instead functions with stores of energy units. When you get enough of them, you get a turn-and then the "global" turn functions on a different clock.

I'm not sure how you'd go about making sure that everything ran on that global clock, with added turns provided when needed, but my eyes cross when I try to think of tracking down every single impact that would have, so that can't be a good sign, I think. But I'm not really into it enough to know the details, so for all I know that change could be easier than I think.
Incidentally, why *do* talents not cool down during extra turns? Seems like this is both inconvenient and counter-intuitive.
Movement Infusions.

I mean, there are good and interesting arguments for Global Speed here, and there's an interesting case to be made for finding some way to make Cooldowns function on your internal global speed clock instead of the universal clock. But, as to why they don't cool down every subjective turn...definitely Movement Infusions, or any similar high movement skill.

Edit:

Also, looking over the General Discussion topic about speed, I will say that using a 100/(Delay) actually displayed figure for speed and renaming it Attack Speed would fix the confusion about weapon delay, and that the 7% global speed bonus mentioned can only be Blazebringer weapons, as almost nothing else grants itty bitty bonuses like that.

Blazebringer its self could easily be changed to an equal amount of alldamage% instead of global speed. Similar bonus in that particular case, without having as much speed clutter.

This doesn't entirely fix the tactical vs statistical bonus role that Speed currently has, but it does fix some of the specific complaints, which seems like a good compromise without taking much work.

jotwebe
Uruivellas
Posts: 725
Joined: Fri Apr 15, 2011 6:58 am
Location: GMT+1

Re: Problems with Speed

#5 Post by jotwebe »

Grey wrote: I don't mind rare and significant modifiers to speed, but the commonness, smallness and variety of speed modifiers in the game at present makes it a horrible mess. ToME is a turn-based game, and the cooldown system especially requires clarity of turns - anything but large modifiers gets in the way of that of that clarity. ToME has perfect clarity in so many other areas, but speed, something we rely on innately in the game, is now obscured.

What can be done to alleviate this:
- Remove most speed modifiers from egos and artifacts, especially those less than 20%
- Remove all combat and spell speed modifiers. They add nothing to the game beyond being a vague bonus to the character. I repeat - combat and spell speed add *nothing* to the game. Unless perhaps they're going to be given in very high amounts that make a rael difference to play.
- Reconsider any talents and status effects that modify speed by less than 20% or that modify in non-round numbers. Ideally everything should be in multiples of 10/20.
Pretty much agree with the situation. Although I think Velorien's idea would go a long way to alleviate things.
SageAcrin wrote:
Velorien wrote: As an interim compromise, how about any non-100% global speed invoking a buff on the player along the lines of "you are moving exceptionally fast. Whenever this counter reaches 0 (every X turns), you will receive an extra turn. Note: talents will not cool down during extra turns), or an analogous debuff?
The short answer to that is that it could work. Someone with more knowledge of the internals of speed would be able to give a more honestly thorough answer to this, though.
I kind of twisted my brain the one time I made a concerted effort trying to understand how exactly tome handles speed internally. So I may be wrong about this. However, let's look at 120% global speed.

The way I understand it, every turn you use 100 energy and keep the rest, so your reserve will be 20, 40, 60, 80 and then you'll get your extra turn at 100. So Velorien's counter would start at 4, with 5/0 being the "double turn" you get.

So what if we have 107% speed? After 14 turns, we have 98 energy (14 times 7), so when we get 107 again, we'll have enough for two turns.

Basically the game would need to calculate (100/(speed - 100)) and start the counter as that.

There could even be a similar version for when you are slower than 100%, warning you when you are going to skip a turn.
Ghoul never existed, this never happened!

NEHZ
Halfling
Posts: 118
Joined: Sat Oct 01, 2011 9:29 pm

Re: Problems with Speed

#6 Post by NEHZ »

Considering that with different movement, attack and ability use speeds the game can't know exactly how long your next turn is going to be, I suggest a slightly adapted version. (the game won't know beforehand if you're going to move thrice in a row or attack as well)

If your movement speed is different from 100%, you will have a buff with multiple texts: "Your next move will take x% of a turn." plus: "No monster will be fast enough to act after this move." if you can move after moving before any monster can act, or "Some monsters will be able to take multiple actions after this move." if you lose a turn after the move and "Your abilities will (not) cool down after this move."
If your attack speed is different from 100%, you get a(n additional) buff with two parts of the same texts only with attack instead of move.
If global speed effects non-attack* abilities as well, you'll need an aditional buff for abilities.

*I'm assuming attack abilities work with attackspeed, if I'm wrong include those in the last buff as well and adjust the "attack" text to "normal attack".

skein
Halfling
Posts: 107
Joined: Mon Aug 13, 2012 12:03 am

Re: Problems with Speed

#7 Post by skein »

No, no, no. You do not remove the speed effects. They are fine and work right. What you do is give a timer counter that tells you precisely how much energy you have. This makes everything transparent and lets you plan your chess moves.

It already does this in the background, all you need to to do is make it visible on the hud or character sheet.(Both would be nice).

You can also just AVOID the items or skills that give you speed bumps if you so desire. You never have to use or wear any of it. Instead of wearing boots of speed wear evasion or rushing instead :p

edge2054
Retired Ninja
Posts: 3756
Joined: Fri May 28, 2010 4:38 pm

Re: Problems with Speed

#8 Post by edge2054 »

Grey wrote:Note that everything below is my opinion etc etc, and when it comes to design stuff I can be very strongly opinioned. Some will doubtless disagree strongly!
I doubt anyone would disagree with this statement :twisted:

Anyway, I don't think this is a bad idea per se but your post is lacking in the depth to really make this change.

First of all combat speed modifiers aren't just tied to egos and talents. We also have things like gloves and bows with varying speed modifiers that would need to be rebalanced. Second of all every talent that adjusts mind, combat, or spell speed would need to be adjusted. We can't just remove Momentum and leave a hole there right?

My point is I could get behind this idea if it was fleshed out some more. I don't think it's a bad idea. Just that it will require a lot more thought and effort than what has gone into the initial post. SageAcrin touched on a few additional areas that I didn't mention above and I'm sure there's a lot more that would need to be uncovered. In other words, it's a much larger change then you're suggesting Grey because it's not as simple as removing a bunch of things... unless we want to leave gaping holes in the game.

notmiki
Cornac
Posts: 41
Joined: Sun Jan 06, 2013 12:04 am

Re: Problems with Speed

#9 Post by notmiki »

skein wrote:No, no, no. You do not remove the speed effects. They are fine and work right. What you do is give a timer counter that tells you precisely how much energy you have. This makes everything transparent and lets you plan your chess moves.

It already does this in the background, all you need to to do is make it visible on the hud or character sheet.(Both would be nice).
I agree. Speed is complicated, but there may be a relatively simple way of communicating it to the player. Here's my best shot: a toggleable window that maths out your effective speed - factoring all global speed modifiers - for you, like so:

"If you move, it will take X game turns"
"If you attack it will take Y game turns"
"If you cast it will take Z game turns"

Along with this, another toggleable window for cooldowns:

"Blinding Speed will cool down in X turns"
"Charge will cool down in Y game turns"

This provides the information the player needs without creating too too much screen clutter. In the end, the player will still need to do a bit of math, but that's unavoidable without dumbing down the speed system. Providing the exact time left of cooldowns of you mouse over the skill would also be handy - and avoid screen clutter for folks that only rarely need the information.

jotwebe
Uruivellas
Posts: 725
Joined: Fri Apr 15, 2011 6:58 am
Location: GMT+1

Re: Problems with Speed

#10 Post by jotwebe »

NEHZ wrote:Considering that with different movement, attack and ability use speeds the game can't know exactly how long your next turn is going to be, I suggest a slightly adapted version. (the game won't know beforehand if you're going to move thrice in a row or attack as well)
Ah, good point.

So to make it transparent, the UI would have to tell you for each of attack (with currently equiped weapon), spell, movement, mindthingie how much energie it would take.

Hmm, let's take a look at the code:

From:GameEnergyBased.lua

Code: Select all

-- @energy_to_act how much energy does an entity need to act
-- @energy_per_tick how much energy does an entity receives per game tick. This is multiplied by the entity energy.mod property

function _M:init(keyhandler, energy_to_act, energy_per_tick)

	self.energy_to_act, self.energy_per_tick = energy_to_act or 1000, energy_per_tick or 100

	engine.Game.init(self, keyhandler)
Ok, so if I get this right then energy.mod is global speed. Like, a ghoul would get only 80 energy per tick.

And a bit further down, in _M:tick(), it does the following every tick:

Code: Select all

local arr = self.entities
	for i, e in pairs(arr) do
		e = arr[i]
		if e and e.act and e.energy then
It looks for things that can act and have energy in principle. For each of them:

Code: Select all

if e.energy.value < self.energy_to_act then
	e.energy.value = (e.energy.value or 0) + self.energy_per_tick * (e.energy.mod or 1) * (e.global_speed or 1)
end
If they don't have enough energy to act yet, give 'em energy_per_tick (which should be 100), which is modified by energy.mod and global_speed. Now I'm confused - energy.mod is not global speed? Works exactly similar though. Maybe it's set by the type of action taken last - i.e. an unarmed attack with 80% attack speed would be 1.25?

Anyway, as we don't have energy_to_act yet (1000 normally it seems), we add our energy_per_tick to our energy.value and move on.

Code: Select all

if e.energy.value >= self.energy_to_act then
	e.energy.used = false
	e:act(self)
end
This is the other case, where we do have enough energy. act() should take us to the Actor class... where it gets used like this:

Code: Select all

--- Use some energy
function _M:useEnergy(val)
	val = val or game.energy_to_act
	self.energy.value = self.energy.value - val
	self.energy.used = true
	if self.player and self.energy.value < game.energy_to_act then game.paused = false end
end
All right, the energy value gets adjusted and the energy.used flag gets set to true, which I guess is the go-ahead somewhere else for the actor to do something, so the game knows which energy.mod value to apply next.

Anyway, what the game should be able to predict is what the next whether the next action will end the "turn", advancing cooldowns by one, or not. So we could have 4 symbols for each of the types, and let's say they're blue if after that action the cooldowns won't advance yet, green if they'll advance by one, and red if they'll advance by two.

So if you're a Yeek with +15% global speed, they're green until you reach your "bonus turn", and then they're all blue. Now cast a spell, and they're green - next action your cooldowns will go down, as normal. Pop a movement infusion, and the movement symbol turns back to blue - you now have a lot of moves you can do in the time of one attack. Actually, the game could calculate how many actions of that type you could perform and show the corresponding number.

If you're a ghoul on the other hand, your symbols will be red every fifth turn. 80% global speed means sometimes cooldowns go down twice after one action. Activate Momentum, and your 55% bonus to attack speed should let you get an attack in at normal time, so it's back to green.
Ghoul never existed, this never happened!

Parcae2
Uruivellas
Posts: 709
Joined: Sat Jan 14, 2012 12:02 am

Re: Problems with Speed

#11 Post by Parcae2 »

The problem is that that wouldn't tell you how quickly you're moving relative to your opponents, which is what matters. It also wouldn't tell you if you have 1 free movement actions left or 10.

A notification in the game log (foo has 1 free action/movement/attack next turn) strikes me as the best way to get around that, but it would still lead to some confusion in the most common area where more transparency would be useful: movement infusions. As it currently stands, if you pop a movement infusion when low on health and then walk past a monster, you're basically gambling that it won't get another turn at the worst possible moment.

Maybe your character sheet should show you how much energy an action costs, while the log tells you how much energy you have left after accomplishing an action? But that wouldn't solve the monsters-with-enhanced-speed problem.

Come to think of it, I still don't know what happens when a player with 300% global speed is fighting a monster with 300% global speed. Do they alternate or does each one go three times in a row?

wobbly
Archmage
Posts: 400
Joined: Tue Jul 03, 2012 8:35 am

Re: Problems with Speed

#12 Post by wobbly »

Step-up can be even more problematic. Depending on the timing you can move 1 square & it ends. The timing aspect of who's move it is worries me less. If your running past a target with a movement infusion & there's a chance of it getting a hit in, that to me is fine. I'm not a fan of overly deterministic mechanics & perfect knowledge though I realize some others are. It's fine with me either way. But if something is meant to last a turn it should, rather then you move at 10x speed for 1/10 of a turn.

jotwebe
Uruivellas
Posts: 725
Joined: Fri Apr 15, 2011 6:58 am
Location: GMT+1

Re: Problems with Speed

#13 Post by jotwebe »

Parcae2 wrote:The problem is that that wouldn't tell you how quickly you're moving relative to your opponents, which is what matters. It also wouldn't tell you if you have 1 free movement actions left or 10.
Yeah, that would be ideal, but I'm stumped as to how to present that info in the player effeciently. I also don't think it's as big as a problem if you can't predict your enemies' actions that exactly - I agree it would be nice to know, but for me it's ok if you don't.

What this would do is to make the relationship between your actions and your cooldowns and other effects transparent, which at the moment is also quite obscure.
Parcae2 wrote: A notification in the game log (foo has 1 free action/movement/attack next turn) strikes me as the best way to get around that,
[snip]
Maybe your character sheet should show you how much energy an action costs, while the log tells you how much energy you have left after accomplishing an action? But that wouldn't solve the monsters-with-enhanced-speed problem.
It would have to tell you how many ticks until your next action to be useful, depending on what kind of action you take (move, attack, spell, mind - all can have different speeds). If it tells you after your action, it's too late to be useful - it'll be old news by the time you choose your next action.
Parcae2 wrote: Come to think of it, I still don't know what happens when a player with 300% global speed is fighting a monster with 300% global speed. Do they alternate or does each one go three times in a row?
Since a standard tick is 100 energy, and acting costs 1000, they'd alternate. They'd get 300 energy per tick, so they'd each act every 3-4 ticks. (If I understood the system correctly, that is. Far from sure about that). Where it would get weird is with speeds over 1000% - as I understand it, you can act at most once per tick, so once you'd get over 1000 energy per tick, you'd only accumulate more energy and have a few extra ticks of high speed after your speed boost wears off. 1000% is sort of the speed of light.
Ghoul never existed, this never happened!

5k17
Halfling
Posts: 84
Joined: Sat Sep 01, 2012 1:35 pm
Location: Germany

Re: Problems with Speed

#14 Post by 5k17 »

I think displaying the player's and every monster's energy and exact cooldowns would be the easiest solution.
Die early, die often.

AIAndy
Cornac
Posts: 33
Joined: Tue Dec 18, 2012 10:39 am

Re: Problems with Speed

#15 Post by AIAndy »

I assume cooldowns and buff durations only reduce on the global turns?
Then it would be good to know when you are at the start of a turn with more than usual energy as something like a movement infusion would be considerably more powerful then.
Maybe cooldowns and buffs/debuffs should be separate actors so their duration is exact?

Post Reply