In the base game, time starts when the Prince starts moving, but in the Epilogue, time starts when the Prince is able to move. This is because as soon as the game starts, the trap cycles after the first fight are already set in motion, and therefore one can offset those cycles by waiting at the very start of the run. To prevent people from offsetting the cycles before the run even starts, it has been decided that time must start at the very beginning.

To establish that this is in fact the case, below is a Google sheet which analyses 11 runs from several players. This sheet shows that, no matter how the run was executed from the beginning to the first trap cycle, it is always the case that the time between the start of the run and the traps being at a certain point in the cycle is always the same. (Rather, it varies by 1 second due to rounding errors in our measurements.) This is seen by the fact that the Delta column shows 1:57 or 1:58 for every entry. On the other hand, if the traps activated at some point later in the run, then we would expect to see variance of up to 6 seconds (exactly half of a complete trap oscillation), and instead the time between this activation point and the traps being at a certain point would be consistent. But since the results are consistent when measuring from a consistent point at the very start of the run, we can conclude that this activation point is in fact at the start of the run.

Moreover, the column Run Start to First Movement (s) shows that there is quite a lot of variance in how long players waited before they started moving, and yet the time difference between the game initially loading and the trap cycles being at a certain point is still the same for all of them. This suggests that the traps must definitely activate as soon as the game initially loads, and not at any point even a little bit after that.

https://docs.google.com/spreadsheets/d/1vbW_DWqBVyO85g33V0jvrypvfIQBVRleFns4vU-bNJo/edit?usp=sharing

<aside> 💡

This data is not cherry-picked. At the time of writing, the data simply consists of the top 10 runs on the leaderboard (obsolete included), and one run that is yet to be verified.

</aside>