UEWBot / dipvis

Django-based visualiser for tournaments for the boardgame Diplomacy
GNU General Public License v3.0
7 stars 4 forks source link

Support top board sets #294

Open UEWBot opened 4 months ago

UEWBot commented 4 months ago

For the final round, separate the players in to two groups, with a cutoff between the two, and seed each group separately. Only someone in the top group can win the tournament.

This is the same as a top board if the cutoff is the top seven.

UEWBot commented 3 months ago

The main thing here is support a "split point" for seeding for a specific Round (presumably the final round but I see no reason to require that). Today, all Rounds have a split point of 0, meaning that everyone is seeded together. A split point of 7 (or maybe 1 board), is the traditional top board, where we separate the top 7 into a Game and seed the remainder as usual. A split point of 21 (or 3 boards) would take the top 21 players and seed them into 3 Games and take the remainder and seed them. The option to only have the players above the split point play should be available (for standalone top boards).

I guess it would actually be the "top X players who are present". Roll call gets a little tricky when you have players who would rather not play who are in the top N. Actually maybe not - you can specify standby players as usual, and the top N may change if a standby player is playing or not. The "get seven" page would probably want to restrict players playing two boards to those outside the "top N". I see no reason why "top N" players couldn't sit out if they want, though. Then we just do two separate seedings with the two sets of players. That should be easy enough. May want some options around which powers are available and whether to consider who played who earlier in the tournament (those both seem like boolean options - consider earlier opponents and consider powers played). We'd also want the Paris Method to be an option, even if that is implemented as "TD assigns powers to players above the cutoff".

We would want a new Game attribute indicating a top board, although multiple boards could have it set.

There may also be some weird scoring effects wanted - seems like there could be more variation there. Options like "games above the cutoff have a score multiplier" and "first M places have to be from above the cutoff". Given that a cutoff of one board gives a regular top board, "no best country awards from boards above the cutoff" may also be useful (although the TD can always do that by hand anyway, it's nice to have it look right on the best countries page). There are some thoughts at https://github.com/UEWBot/dipvis/issues/83#issuecomment-887821489

See also issues #148 #144 #83 and maybe #7

UEWBot commented 3 months ago

Game.is_top_board already exists, although the code never sets it. It does affect the display in a few places

UEWBot commented 3 months ago

So a number of new Round attributes:

Also need something more than the current Tournament.power_assignment because tournament often assign powers on the top board in a different manner.

Then some new scoring-related attributes.

Given that that's several attributes, all of which are only needed for a top board round, maybe it's a new class?