Firstly, if you are applying velocity rather than moving the objects location, then it should go the same speed regardless of framerate.
To get the time between each frame, I’d do something like this:
currentTime = time.time()
delta = currentTime - bge.logic.theTime
bge.logic.theTime = currentTime
“delta” will be the value in seconds between this frame and the last time you ran that script.
Note that you’ll want to initialise bge.logic.theTime somewhere before doing that.
As for finding out the time since the start of the game, first you need to remember the time that the game started:
bge.logic.gameStart = time.time()
Then, this will check if you are 30 seconds since the start of the game:
if time.time() - bge.logic.gameStart > 30:
print("30 seconds have passed")