I created a blueprint to display a 30 seconds countdown timer with decimal places, however it runs slower than it is supposed to. If I have it set up with just seconds however, it runs perfectly. I even set the two up at the same time, and compared it to the stopwatch on my phone. The seconds blueprint and the phone stayed on time with each other, while this current blueprint snails behind. Is this due to the game tick not being fast enough to measure decimal places of a second? If anyone knows an alternate solution to this problem I would be incredibly grateful!
Tick is based on FPS, so if you add (or delay) .01 when running at 60 FPS you will end up with .6 after one second. Or in other words the game is running too slow for 1 second to be 100 ticks. It’s just doing what you told it to do. You may want to use Delta Time, it measures the time between ticks so if you use that you can scale the delay so it ends up being 1 second in delay after 1 second in 60FPS.
I was having similar issues with the Delta Time, and I was finally able to formulate this blueprint which is almost perfectly synced with real time. It doesn’t seem to be affected by frame rate either which helps with consistency of the time.
I think using the delta time as your delay value would have worked fine but if you got it working some other way it’s all good.
I would not recommend using delays on Tick - is unreliable as every machine may have a different FPS.
Use Timers instead. You can use an event to start a timer and you can loop the timer (every second for example) to do your countdown.
in your BP ClassDefault change the tick interval to 1 instead of 0 , by default tick will be different upon cpu speed.