Here’s some ideas to improve flip frenzy tournaments.
Instead of a standard first-in-first-out (FIFO) queue use a priority queue. When someone enters the queue they are placed above anyone that already has more games than them, but below anyone that has less games. For example, when a game ends, P1 gets paired with someone from the queue then P2 enters the queue. If the current players in the queue are
A (7 games)
B (8 games)
C (9 games)
and P2 just finished their 7th game, then P2 get placed between A and B. If P2 just finished their 6th game, P2 goes to the top of the queue.
This doesn’t guarantee there are an equal number of games at the end of the tournament if it’s timed. Two players could theoretically play a single long game for the entire tournament!
And this would eliminate the rush to finish or concede and get back in the queue.
Another idea would be to do something a little more sophisticated. When P1 finishes their game each waiting player is assigned a number based on a few factors and P1 is paired with the waiting player with the lowest number. The number is calculated based on number of games played so far, how many times they already played P1, and win percent compared to P1. Each of these has a weight in the formula. The idea is to favor pairing P1 with someone that has less games so far, someone P1 has played less so far, and someone that is doing about the same in the tournament (kind of like Swiss pairing).
For each waiting player
N = (number of games played) + X * (number of times played P1) + Y * (difference in win percent)
(It could be that the difference in win percent would not be factored in until players have at least a certain number of games.)
Now by assigning weights to X and Y you get a number for each waiting player. P1 would be paired with the waiting player with the lowest number N.
For example, let X = 1 and Y = 3.
Now if P1 is 5-0 and a waiting player is 0-5 and played P1 once then for this player
N = 5 + 1 * 1 + 3*(1.0 - 0.0) = 9
If another waiting player was 5-1 and played P1 twice, then
N = 6 + 1 * 2 + 3*(1.0 - 0.83) = 8.5
and the algorithm would pair P1 with this player over the first player.
Now someone has to code this up and try it! Or someone can improve on these ideas.
I think (or hope) that if it’s done right then no one would get stuck in the queue for too long. And even if they do have a longer wait time it’s only because they are skipping getting paired with someone they already played a lot or someone of extremely different playing ability.