It was brought up on discord, so i write it up here again. Recently the runner Sektor reminded us, that there is an inbuilt framecounter in the game if you check "Show Cycle" under the debug options, which you can enable in your gta2 manager using this: http://gtamp.com/GTA2/powerpatch.zip
Having some runs with this enabled we noticed a difference in real time compared to actual framecount of the game. The runner hipp0cat did some tests in residential to verify that: https://docs.google.com/spreadsheets/d/1zt0fSMN6kMkEbDtFcIEvss0hfo548YxdI7WZ9MJ90O4/edit?usp=sharing
Frame = ingame framecount, Time = real time, Exp. Time = expected time if one frame would equal 0.03333.. secs (30fps).
As can be seen the actual fps are inconsistent (are between 30.1 to 3.3 fps most of the time) and can give you an advantage of up to 0.3 secs in even a short run like residential any%.. I also did a quick test with disabled frame limiter and instead using dxtory to limit to exact 30fps. The result was that the ingame framecount was consistent with the fixed fps.
So to avoid having these varying fps having an impact on the actual run performance, I would like to suggest the following:
1.) All (individual level?) runs should have the ingame framecount enabled from now on
2.) The ingame time will be calculated by dividing the framecount with 30 (exact 30 fps for simplicity). Example: 1326 frames / 30 = 44.200 secs ingame time
3.) Because some full-game runs also go into menu and there is no counter available i think these options would be possible:
- A: ignore it and give penalties if someones is deliberately too long there or game crashes
- B: just time all the time spent in the menu
- C: use Real Time anyway ignoring the possible disadvantages
Since I don´t think it would make sense to make such decisions on my own, it would be appreciated to hear the opinions or proposals of other gta2 speedrun community members about this issue.
I approve of points 1&2 and not quite sure about point 3. Option A seems bad. Option B is tolerable, but it's gonna be annoying to calculate menu time separately and add it all up, and I'm not sure people would want to bother with that. That leaves option C. If my calculations are correct, for a 30 minute run variable fps can make like ~15 seconds difference (less difference for faster runs). At the moment, there aren't any full game runs that are this close to benefit from precise frame counting. So I'd say use frame count for individual levels and realtime for full game runs, but I wouldn't personally mind using option B for that, too. Not sure if my opinion is valid though since I haven't run the full game yet, lol.