There are two SimTime instances. One is maintained by GameSystemManager and one is maintained by GameLoop.
The one maintained by GameLoop claims to be thread safe and its value is get from GameSystemManager.getStepTime().getTime(). (i.e not the System.nanoTime())
I only force “baseTime” to 0 on the GameLoop step time, not the GameSystemManager step time.
The time represented by these two methods is not the same. Their difference is arbitrary (could be 10s, 20m, 1h,…) depends on when we first call to GameLoop.getStepTime() after the game system manager is started.