-
Notifications
You must be signed in to change notification settings - Fork 1
Home
SRComp is a suite of software for running competition events. It aims to record the entire state of the competition in a single place and provide tooling for working with that data in a consistent and reproducible manner.
SRComp assumes:
- that you have a league section and/or a knockout section; if you have both then the league comes first and seeds the knockout
- that you can generate fair match plan (i.e: who plays who in which match) yourself (though it does provide some tooling to check that a plan is fair)
SRComp includes support for:
- generating match schedules from match plans, by incorporating both time to reset arenas between matches as well as planned and unexpected delays
- games with multiple participants, with graceful handling of no-shows and disqualifications
- normalising per-game scores to allocate league scores and/or determine knockout progression
- resolving ties
- concurrent arenas, though with the caveat that games in multiple arenas start at the same time and are of the same length
- "shepherds"; people who fetch participants before their matches
- large-screen displays of information for shepherds
- large-screen displays of information for the audience
- web pages with information for an external audience
- web pages with information for competitors
A more complete overview of the project's original requirements is available at competition software.
SRComp was created for Student Robotics' 2014 competition, and was subsequently improved upon and used in the following three years. It has also been used for a number of other similar, though usually smaller, events.
SRComp is highly modular, with each of its components addressing a specific need and occupying its own git repository.
Information about the competition is stored in a compstate repo. This includes all the core data about the competition, from when the matches are to what the scores of a given match were. See the dummy-comp repo for an example.
The following the main components of the system. For further details on each of them, see their respective READMEs.
Issues with any part of the system are reported on Student Robotics' trac instance, using the SRComp suite component.
When deployed (via the comp-api puppet manifest), SRComp HTTP is run as a WSGI module within apache. This presents the world with a consistent REST interface to the available data.
This deployment requires a local clone of the state repo, which is configured (by the same puppet manifest) to automatically pull down changes from its canonical remote. While this updates the content of the state repo, it does not cause SRComp HTTP to actually reload the data (which is cached for sanity).
The HTTP layer will instead only reload its data when the modification time of the .update-pls file within root of the state repo.
Typically this is changed by manually touching the file.
Details of previous deployments can be found at:
srcomp-puppet.git provides a puppet configuration suitable for creating the central "compbox" at the competition event. The "compbox" hosts all the SRComp related services needed to run the competition.
A Vagrantfile is provided to simplify both development and deployment.
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.
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')This repository provides a JSON API to accessing information about the state of the competition. It is a lightweight [http://flask.pocoo.org/ Flask] application which wraps the SRComp core.
Most clients are expected to use this to get their information about the competition.
srcomp-dev.git provides a development wrapper around the above HTTP application as well as including most of http clients via submodules.
srcomp-cli.git provides a collection of command-line tools for operating on or showing data from compstate repos.
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:
- a collection of pages which assume that they sit in the
/comp/url of the host website - a replacement for the site's homepage (
/)
Both of these are implemented as interactive [https://angularjs.org/ AngularJS] single-page applications on top of the HTTP API.
A node.js service which polls the HTTP API for changes and issues events based on any detected.
This repository contains the following screens:
- The
arena.htmlscreens go in the four corners of the arena and display the current match information. - The
outside.htmlscreens go around the competition venue and display 4 rotating pieces of information: Knockout diagram, Leaderboard, Match Schedule and Scores. - The
shepherding.htmlscreen 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.htmlscreen 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.

