Lichess4545 / heltour

Chess tournament management software for the Lichess4545 league
https://www.lichess4545.com/
MIT License
46 stars 37 forks source link

New league support #359

Open cyanfish opened 4 years ago

cyanfish commented 4 years ago

From Slack:

For those that are interested in adding support for different kinds of leagues (infinite series, series, zh, quads, or other new ideas), can I ask you to work on a list of all the things that are not currently supported in heltour/chesster? For example, different pairing generation, different types of scheduling, different views, different scoring/tournament structures. More detail is better. If we're going to make model changes to heltour I would like them to be holistic, taking into account everything we want to support, rather than ad hoc changes for each individual thing.

Please put responses in a comment here.

rahulan-c commented 4 years ago

It would be great if heltour could support additional tournament structures such as round-robin, knockout, and round-robin plus knockout (the current Rapid Battle format), as well as league-specific tiebreakers (if not enabled already).

cyanfish commented 4 years ago

It would be great if heltour could support additional tournament structures such as round-robin, knockout, and round-robin plus knockout (the current Rapid Battle format), as well as league-specific tiebreakers (if not enabled already).

More details please! What kind of round-robins? Play in any order with some kind of scheduling (ala series), play in a series of rounds (ala blitz battle), or something else? What kind of knockout structures - single or double elimination? Single or multiple games per round? How does the current rapid battle format work? What kinds of tiebreaks are you thinking of?

rahulan-c commented 4 years ago

Guess I’m asking for Series-style round robin, ie where players in a group can play each other in any order, but each pairing has a deadline (currently 2 weeks after the end of the ‘official’ scheduled week) after which unplayed games are marked as double forfeits.

hopffgam commented 4 years ago

I guess for the current round robin series comes down to two separate features: 1. Support round robin pairings and 2. Support having multiple rounds of a season in progress at the same time or during overlapping times (of course 2 is only relevant in conjunction with 1 because in Swiss tourneys you cannot start a round without knowing the results of the previous round).

hopffgam commented 4 years ago

I do not know exactly how the rapid battle works but I guess minimum missing feature is the support of 2-game matches in an individual round.

rahulan-c commented 4 years ago

Yes, for Rapid Battle supporting n-game matches in an individual round is essential. In the group stages, matches consist of two 15+10 games, but in the knockout stages they consist of four rapid games, followed by two 5+5 games and then an unrated armageddon.

hopffgam commented 4 years ago

Penalty system: the current penalty system just counts the number of penalties in a season and then suggests players are removed if a certain limit is reached. In a new season players might start with no card at all or already on a yellow card. For an infinite season a penalty system would ideally implement a probation system: a first penalty brings the player into a probation status for N weeks. If the player does not get another penalty during that time, they get back to a clean state. If a player gets another penalty while being on probation, they will be removed for X weeks. After re-entering the league they will be on probation status again for N weeks.

rahulan-c commented 4 years ago

Rapid Battle has a similar structure to the football World Cup.

First, the organiser(s) define sections by dividing up the pool of registered players by rapid rating; eg in the current RB there are two sections (untitled and U1800). Structure's the same for each section. Players are assigned to groups where they play each other once in an unordered round-robin format. Groups can vary in size depending on the player pool; eg in the current U1800 section, 21 players have been assigned to four groups of 5, 5, 5 and 6 players each, with three qualifying spots in each group (thus slightly disadvantaging players in the larger group, but that's a standard risk with this format).

Players are responsible for ensuring they play all their matches by a certain deadline (say 4 weeks to play all group games). Unplayed games are forfeited. Each group stage match consists of two rapid games, and match draws are allowed. Following the completion of all group games, the top 3 players per group qualify for the knockout stage. Those who finish first receive a bye to the quarterfinals; those who finish second and third play in a last-16 round beforehand. Group tiebreaks: if two or more player tie, the player who scored best against the top players in the standings is ranked above. If two or more players still tie, the lower rated player is ranked above. (Worth noting that the sole RB mod right now wants to revise these tiebreakers based on player feedback; future changes might include accounting for head-to-head results, hence why I requested the ability to define league-specific tiebreaks.)

Knockout stage is single-elimination. The last-16 and QF pairings can be logically defined beforehand: eg in a section with four groups ABCD with four players each, the four last-16 pairings might be: B3 vs C2 (to play A1 next), A3 vs D2 (to play B1 next), A2 vs D3 (to play C1 next), and B2 vs C3 (to play D1 next).

In the knockout phase, players are expected to complete their matches within a week. All knockout matches consist of four 15+10 games (ie first to 2.5 points wins). If a match is tied (2-2), then two 5+5 tiebreaker games are played. If a match is still tied (3-3), an unrated armageddon 4+1 game is played (where White starts with an extra mintute (5+1), Black has draw odds, and colours are assigned randomly). If all goes to plan, in each section four round-of-16 knockout matches are followed by four quarter-finals then two semi-finals then (in the last week) a final and a third-place match. So it takes eight weeks in total to run the tournament; four weeks for the group stage, and another four for the knockout stage.

hopffgam commented 4 years ago

Scoring system: The current scoring system essentially just counts all the games that were played during a season. For an infinity series a scoring system would have to be more flexible. We are not settled on an approach yet, but a rule set that might be most reasonable is the following:

And optional:

hopffgam commented 4 years ago

Player availability: currently players set themselves (un)available for individual rounds. They get the possibility to set their availability for the complete season. For an infinite series this approach is not really usable. It will be more practical that a player can change their availability status and then that status is considered during the generation of pairings. So, a player will set themselves unavailable if they decide to drop out of the infinite series and then after some weeks set themselves available again. Maybe it would be useful to allow to specify a time when the next availability change will take effect.

MattMaginniss commented 1 year ago

I have taken a keen interest in this. Is this still a goal? I have done some stuff in the past with bracket generation for knockout tournaments and stuff like this.

I would like to see things like infinite series, blitz cup etc on the website.

Has there been work on this? Would like to offer a hand.

glbert-does commented 1 year ago

yes, this is definitely still a goal. we'd love to be able to support more of the side leagues.

as for whether any work on this has been done: unfortunately i don't know for certain, but i am not aware of anything happening since 2020.

cyanfish commented 1 year ago

I'm not actively developing heltour any more and AFAIK Lakin has been focused on maintenance. So there's not been anyone to do this kind of work.