yes at some point it does.
you have the FPlatformTime::Seconds (as it’s visible on the screen)
and there are other methods to get the game start time and the current time.
i don’t remember from the top of my head.
but now that i think about it, it does not matter, almost at all. unless you dive into multi-threading.
you’d have to implement your own timer, and track and compare with whatever time you track.
but, if you want that to happen on the game thread, and you’ll mostly do, you can only do so in between frames.
which means, your resolution is back at where the frames are, now with added overhead.
so, it’s the same resolution as a timer, but now with added overhead.
if you were to use AsyncTasks to communicate with the game thread, now you’ve lost all accuracy, and can be delayed by additional frame(s).
the only way to implement an accurate timer, would be to implement your own thread (not async task).
then on the thread have some sort of either spin lock or smth. but again the spin lock can incur in inaccuracies.
so you’ll need to access the operative system’s timer interrupt. which i’m not sure you can easily.
maybe you’re lucky and ue implements an api for that, but i’m not confident.
but even if you do do that, what do you do then?
you’re in another thread.
i’m not confident you can even access physics state from another thread, as it might be performing a calculation.
and if you wait for the physics to finish (which would be difficult) you’ve lost accuracy again.
and you’ll have to be super careful with locking items so that the gc doesn’t kill them or take them from you. which, again, shifts the time, and it’s difficult and error prone.
and there are a ton of things you can’t do on another thread. like creating objects, destroying, or certain modifications. (like changing the transform iirc of certain objects).
so, you’ll need to communicate to the game thread. and you lost accuracy again. even if you use some sort of thread lock, if your timer really needs to be accurate, a thread lock is a random amount of time.
and finally, the physics are calculated in the same timesteps as the timer. so let’s say you dropped a frame, and the DT is 0.0166666667*2 , then the physics will be calculated in that DT (afaik).
and your accurate timer won’t be able to work with that.
so in conclusion, unless you truly truly truly require an accurate timer, i’d try to engineer my problem so i can use the regular timer.
afaik, nopes. you could fake it, but it wont be accurate.