The default (logic) frame rate is 60 frames/sec. Therefore 60 is a good value for your purpose.
There are more frame rates:
- Animation frame rate (usually 24 frames/sec) used to play actions.
- Physics frame rate (usually matching the logic frame rate) to calculate the physics influence to a scene. Be aware it can be even finer with so called-substeps. More sub steps increase the precision of the physics calculation (but costs more processing time).
- Render frame rate (usually matching the logic frame rate) which tells how many images are rendered. If a frame lasts too long (exceeds the 1/60 time available) the BGE starts skipping the render trying to meet the frame rate. This can happen up to 5 times in a row. After that there is a forced render ignoring the time limit. The render frame rate is never higher than the logic frame rate as it is assumed there is no change to the scene and the output would be the same.
But:
I suggest to avoid this method to measure time. The BGE will try to keep the given frame rate as much as possible, but there is no guaranty.
I recommend to use a timer property. It counts the seconds. I think that is what you really want.
Then you have several ways to show the time. I think you want to format it to minutes:seconds. You can use this little script timeToText
:
import bge
from datetime import datetime
textObject = bge.logic.getCurrentController().owner
time = datetime.fromtimestamp(textObject["time"])
textObject.text = '{:%M:%S}'.format(time)
It expects a property time
to provide the seconds and should be applied to an text object.
You can indeed refresh the display each 60 frames. But you will not know when the seconds changed. Therefore I suggest to run it constantly.
Hint: If you want to show microseconds too, use this format: {:%M:%S.%f}