@lancedolan/tourney
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

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

Readme

Keywords

none

Package Sidebar

Install

npm i @lancedolan/tourney

Weekly Downloads

25

Version

1.1.0

License

none

Unpacked Size

75.1 kB

Total Files

15

Last publish

Collaborators

  • lancedolan