Component Overview - PeterJCLaw/srcomp GitHub Wiki

Component Overview

SRComp is highly modular, with each of its components addressing a specific need and occupying its own git repository.

Ranker

"Build "Docs ranker.git

The ranker provides a generalised mechanism for ranking the participants results of an arbitrary game and awarding normalised points. It supports disqualifications and allows for ties and is used for calculating league points and in determining progression in knockouts.

SRComp (core)

"Build "Docs srcomp.git

This repository provides a Python API to accessing information about the state of the competition. It also includes some utilities for operating on compstate repos.

Python clients should submodule this repo and then import it.

from srcomp import SRComp
comp = SRComp('/path/to/compstate')

SRComp HTTP

"Build "Docs srcomp-http.git

This repository provides a JSON API to accessing information about the state of the competition. It is a lightweight Flask application which wraps the SRComp core.

Most clients are expected to use this to get their information about the competition.

SRComp Puppet

srcomp-puppet.git provides a puppet configuration suitable for creating a "compbox" at the competition venue or as publicly hosted copy of the relevant services. The "compbox" hosts all the SRComp related services needed to run the competition.

A Vagrantfile is provided to simplify development.

Ubuntu and Raspbian are supported for deployment.

SRComp Stream

srcomp-stream.git

A node.js service which polls the HTTP API for changes and issues events based on any detected.

SRComp Screens

srcomp-screens.git

This repository contains the following screens:

  • The arena.html screens go in the four corners of the arena and display the current match information.
  • The outside.html screens go around the competition venue and display 4 rotating pieces of information: Knockout diagram, Leaderboard, Match Schedule and Scores.
  • The shepherding.html screen is used by the shepherds and contains information about the current and upcoming matches so the teams can be located in time. This replaced the previous srcomp-shepherding.git in 2015.
  • The staging.html screen is used by the shepherds and contains information about the current and upcoming matches so the teams can be placed in the right arenas.

These are implemented using a lightweight SR JavaScript library which interfaces with the HTTP API.

SRComp Kiosk

srcomp-kiosk.git provides a puppet configuration suitable for provisioning any of the Raspberry Pi based screens at the competition. See the INSTALL.md file for setup instructions, including how to bootstrap the Pis.

SRComp Scorer

"Build srcomp-scorer.git

A Flask application which manages score entry into the compstate. It ensures that scores are entered into the proper format as well as validating that the submitted scores pass validation by the compstate's scorer.

Website pages

competition-website.git

To display information about the competition state to competitors and the general public over the competition weekend, there are a number of special web pages.

There are two parts to these pages:

  1. a collection of pages which assume that they sit in the /comp/ url of the host website
  2. a replacement for the site's homepage (/)

Both of these are implemented as interactive AngularJS single-page applications on top of the HTTP API.

SRComp Dev

srcomp-dev.git provides a development wrapper around the above HTTP application as well as including most of http clients via submodules.

SRComp CLI

"Build "Docs

srcomp-cli.git provides a collection of command-line tools for operating on or showing data from compstate repos.