Page 1 of 1

A better default player order algorithm

Posted: 08 January 2024, 22:03
by awfullbored
In a thread 4 years ago sourisdudesert said:
If you suggest me a rotation method that works for all games, whatever the number of players is, I'm more than willing to implement it
Challenge accepted!

tl;dr: Guarantee that the first player will be different than the previous game. Randomize everything else.

----

In the same thread, sourisdudesert summarized the current situation:
At now the method is:
_ last player to play in the previous matchs is now 1st to play
_ all remaining players are playing afterwards in same order.

So with 3 players:
ABC => CAB => BCA

With 4 players:
ABCD => DABC => CDAB => BCDA
  • This works very nicely for two-player games, because friends alternate initiative.
  • For many other games, this is frustrating for some, where they very consistently have to follow after one particular player who may have a play style that vastly affects their neighbor. Yes, everyone gets an equal number games as the first player, but most (good) 3+ player games are not nearly as affected by this as they are by relative order.
  • And then, for games with simultaneous action selection, like 7 Wonders, this has no upside at all, which was acknowledged pretty early on when that game was the first to be excluded
----

An improvement on this would meet these criteria:
  • per sourisdudesert: "works for all games, whatever the number of players is", so that it can be cleanly implemented and easily explained
  • it would alternate the first player turns of 2 player games, which was the original and very popular reason for this work
  • it would not have Player Y follow Player X in game after game after game
So again, getting back to my proposal:

1. pick a random first player out of the set of players that were not first in the previous game.
2. shuffle the order of everyone else, including the previous first player.

Pseudocode:

Code: Select all

order = [A, B, C, D]           // inherited from previous game
previous_p1 = order.popleft()  // order = [B, C, D], previous_p1 = A
shuffle(order)                 // order = [D, B, C]
new_p1 = order.pop()           // order = [D, B], new_p1 = C
order.append(previous_p1)      // order = [D, B, A]
shuffle(order)                 // order = [B, A, D]
order.appendleft(new_p1)       // order = [C, B, A, D]
It's true that this does not guarantee that in a given, e.g., 20 4-player rematches, that each of those four players starts exactly 5 games. All that it says is that the first player will alternate. But, that feels like a better trade-off than the current situation, where those four players _always_ play immediately after one and only one of their opponents, game after game.

Re: A better default player order algorithm

Posted: 09 January 2024, 00:40
by Meeplelowda
This should be formally submitted as a site suggestion so it can be voted on.

Re: A better default player order algorithm

Posted: 09 January 2024, 02:47
by Silene
I doubt he's willing to implement it anymore ;)

Re: A better default player order algorithm

Posted: 09 January 2024, 22:20
by awfullbored
Meeplelowda wrote: 09 January 2024, 00:40 This should be formally submitted as a site suggestion so it can be voted on.
Good point! I just submitted here: https://boardgamearena.com/bug?id=110152