Tree of Savior Forum

Buff timers count down too fast, based on frame rate

Date
19/05/2016

Game Control Mode
Joypad

Bug Description
The buff timers in the top left beneath the player bar are counting down at a speed depending on your frame rate. Which means those with higher end computers are losing out on their buff times, not to mention the pardoner buffs people are buying and not getting the full duration.

Steps to reproduce the issue
Requirements: A pc capable of high fps.

  1. With vertical sync on @ 60fps, cast a buff that has a similar up time as its cool-down time eg: level 5 fire enchant(110s up time, 110s cool-down).
  2. Take note that when the buff expires and is removed there are still a couple of seconds to go on the cool-down.
  3. Now with vertical sync off with a high fps of close to 200, cast the same buff again.
  4. Notice that when the buff expires this time, there is a much larger time left on the cool-down.

Videos
Notice in each video I cast fire enchant from far right of my skill bar, then i mouse over the buff so you can see the timer. Once the cool-down reaches 1 minute you can see the difference in the timing.

Buff timer @ 60fps - Buff expires with only a couple of seconds left on cool-down, not too bad but still not correct.

Buff timer @ 200fps - Buff expires with 10! seconds remaining on the cool-down.

Solution
A band-aid fix would be to just use vertical sync to minimize the loss of buff time, however there is still the problem of how the buff timers are coded. Timers that use seconds should avoid being used in the update loop as this updates every frame, so if your frame rate changes then your timer speed changes which is how it seems to be at the moment.

System

  • CPU : i7-4770k 3.4GHz
  • RAM : 32GB
  • Graphics Card : Nvidia GTX 770 4GB overclocked edition.
  • Mainboard : Gigabyte H87-D3H CrossFire
  • Storage : 1.2TB
  • OS : Windows 8.1
  • Internet Connection : ADSL 30Mb down 2Mb up
  • Country, Region : New Zealand, Christchurch
2 Likes

Great find! Hope this gets fixed asap.
@STAFF_John @STAFF_Ines @STAFF_Ethan
@GM_Sebastian
@GM_Francis

1 Like

Really great find!
what a stupid bug!

So thats WHY my buffs sometimes run out before the cd (like enchant fire with a simular cd/buff duration)

I hope it gets fixed soon. It should not be happening in the first place… I always thought 110seconds are 110seconds…
So: but in ToS it is: 110seconds are faster on 130+ fps as opost to 110sec. on ~60 fps.

(sounds really stupid, like our german saying: “Zu Fuß ist es kürzer als über den Berg”. litteraly translated to "it is faster on foot, than over the mounbtain ")

1 Like

I managed to get the game to run at 300fps if i turned everything to low and went somewhere quiet. I got up to around 330fps at the highest then with fire enchant on the animation drops it down to just below 300, around the high 290’s.

Unfortunately if I start recording it drops drastically but when I could get the game to stay around 300fps the timer for level 5 fire enchant was out by almost 15 seconds.

This screen shot just shows the game running at 300fps.

Wow, that’s just… wow.
IMC; go back to college, game programming 101 : Never program your game to be framerate dependent!!! What is up with many gaming companies being unable to grasp the concept of framerate independent progamming?

Well, i guess for now when opening a shop and going afk i’ll just limit my FPS to 1, so i can have 60 times longer shop durations… (just kidding, of course)

Curious : Are skill cooldowns also bound to framerate?

1 Like

This post was flagged by the community and is temporarily hidden.

The cool-down time doesn’t seem to be effected.

It’s possible, but I doubt it, if it was then people could modify their timers so they can keep a buff for longer.

Though these are all just speculations and we shouldn’t get too ahead of ourselves, I would really like someone to respond to clarify. It’s quite important for people builds, having to put an extra point into a buff to ensure its up 100% can change a build dramatically.

It is somewhat client dependent, but not entirely.

The way it works is like this

  • When you cast buff, client tell server “hey this toon casted X buff”
  • Server acknowledges that, and tell client “affirmative, buff casting confirmed, show cool down” (this is why sometimes you see your char cast buff and the animation went off but nothing happened, because some packet lost in server acknowledgement process. Also buff timer will have 1 second delay comparing to cooldown due to this)
  • Client then proceed to display the buff
  • Client will keep the buff timer client-side (this is the buggy step)
  • When buff timer expire, client tell server “hey this toon’s buff expired”
  • Server then responds “affirmative, remove buff”

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.