@lancedolan/tourney
v1.1.0
Published
Library for running a competitive tournament and tracking its progress
Downloads
33
Readme
Purpose
Library used to run a tournament.
Usage:
import Tourney from "@lancedolan/tourney"; // CommonJS is also supported
const tourney = new Tourney()
tourney.addPlayer('joe')
tourney.addPlayer('jane')
tourney.startTournament();
tourney.markVictory('jane')
tourney.finishRound()
tourney.markVictory('jane')
tourney.finishRound()
console.log('Results', tourney.standings)
console.log('History', tourney.getHistory())
Note: The api inconsistency between
.standings
and.getHistory()
is known. I'll standardize them in a backward-incompatible update eventually, along with other similar inconsistencies.
Features
In general, this is a round-robin tournament which favors pairing stronger players together and weaker players together, but which absolutely avoids rematches at all costs, and uses the most intelligent means available to rank player strength.
- Intelligent ranking system
- Most match wins, most ties, most game wins, buchholz, etc..
- Intelligent Pairing System
- Swiss System
- When multiple pairings are possible without rematching, stronger players will be grouped with stronger players.
- Rematches are guaranteed to never happen unless unavoidable (for example round 4 in a tournament with 4 people)
- This rematch avoidance guarantees a round-rob pairing system if the number of rounds played is the same as would be in a round robin. As rematches are avoided, new round pairings will trend toward purely round-robin logic.
- If the tournament never surpasses one complete round robin, players are guaranteed to not play another player more than once.
- If the tournament surpasses one complete round robin, players will play each other, at max, once per round.
Roadmap
Features for future version:
- Editable history mid-tournament for correct data-entry mistakes
- Players can leave or join an in-progress tournament. BYEs will be added or removed as necessary.
- Configurable tie breakers: tournament manager can decide how rankings are decided.
- Confidence gauge: numeric metric for confidence that players deserve their ranking. Might be simple % of players NOT decided by coinflip/recent-win