I have encountered an increased number of stallers who are just waiting for you to quit because it gets too boring. So my suggestion would be that: if you finished your turn with less than 2min left you should just get 30 additional seconds in the next draw phase. Normal players wont be affected because they gain seconds by their actions and if they take less then 1min per turn they get the 3min total each round.
The timer system has been worked after 8+ years. We have tried everything and this is the best system and there’s no better system in any game. This is a dynamic timer system where you get 3 secs back per move. You get 180 secs idle time + 3 secs per move. The idle time is fixed. It can be used for thinking, reading, afk, etc. It doesn’t matter. There is no time per turn in real life or in the rulebook.
There’s absolutely no anti-stalling thing we can program. A program cannot read a user’s mind to know if they are intentionally stalling. We don’t have a camera to see if the player is afk.
If you don’t reset the clock back to 180 seconds, you will end up with the majority of the player base complaining that they don’t have enough time.
We have tried all this before and this what works the best. In ygopro, I also created the timer system that is used in edopro today and that still is what most players prefer after years of trial and error.
I suggest familiarizing yourself with different timer systems. The system we are using is called Increment. You can only gain up to 360 secs maximum even if you keep trying to gain time. This is also to prevent the hostage loop situation whereby you can infinitely keep gaining time during your turn due to controlled loops.