If this feature is implemented, would it also be possible to have a special “simul” mode where it automatically jumps to the next live game with the least time remaining? So you could play a number of live games at the same time, and if you play a move in each game before the opponents, it will stay on the last game temporarily, but as soon as one of the opponents moves you jump to that game (and then stay there until you’ve made a move, wouldn’t want to auto-jump while you are considering your move).
I don’t think the slowness of branching is really relevant in this case, but if you want to use that expression you’ll have to find the lowest non-zero one, since n * false is 0.
Also, one important part of this feature which is quite different from the current auto-advance, is the part where it would auto-advance when any one of your opponents makes a move (in the case where you’re just stuck on one game waiting, with no move to make).
I guess you’d want to be polling the games in an arbitrarily ordered cycle when the minimum number by the prior method is 0, fast enough that for a human it may as well be infinitely fast due to inherent limits of human perception, until one is polled and it is to play == 1, at which point you switch to that game and cease polling, and instead wait for a submitted move to trigger the above or herein logic.
Maybe the logic to decide which game to jump to or to begin realtime polling could be coolified by storing the games’ numbers as an array of bytes, which is then ANDed with an array of bytes set all 1 if the player is to move, and all 0 otherwise?
Honestly, I’m just testing my understanding of these interesting techniques by attempting to apply them, as such an attempt usually reveals misunderstandings in much the same way production does in language acquisition.