Page 1 of 1

global speed improvements

Posted: Tue Aug 30, 2011 5:07 am
by tiger_eye
Global speed isn't working properly in b31 or in svn.

Global speed boosts in b31 can be cheesy to the point of being, well, broken. This is because speeds are multiplicative, so combining them results in exponential global speed increase. For example, n global speed boosts of 50% increases global speed to base_speed * 1.5^n. For n=4, this gives a 506% global speed.

Global speed is broken in the current svn too. It can go negative(!), and it completely breaks a few speed talents.

So, here's what I propose. It requires introducing a new internal speed parameter: global_speed_add. Don't worry, players don't need to know about it; it will just be a part of global speed and should "just work".
  • - global_speed (base of 1): negative global_speed changes will be multiplicative as is currently done in b31.
    - global_speed_add (base of 0): positive global_speed will be additive.
    - effective global speed will be: global_speed * (1 + global_speed_add)
Thus, negative changes can't result in negative global speed, positive changes aren't game-breaking or talent-breaking, and it should be relatively straightforward for players.

Re: global speed improvements

Posted: Tue Aug 30, 2011 6:40 am
by tiger_eye
Alternatively, one could apply all global speed changes--negative and positive--additively to global_speed_add. Then, the effective global speed would be:

(1) effective global speed = global_speed * (1 + global_speed_add) for global_speed_add > 0
and
(2a) effective global speed = global_speed / (1 - global_speed_add) for global_speed_add < 0
or
(2b) effective global speed = global_speed * exp(global_speed_add) for global_speed_add < 0

(2a) would make slowing effects less effective, though, so I would probably prefer the suggestion in the first post or (2b), which actually exhibits an even smoother transition to (1) than (2a).