GameController is the official match control software used in RoboCup competitions to manage robot soccer games — including timing, game phases, penalties, and more. This guide covers the setup of the Humanoid Soccer League GameController.
Platform Notes
This guide assumes a Linux environment with GUI support is available, as GameController requires a graphical interface.
For Windows users:
- On Windows 11, GUI support is built-in via WSLg.
- On Windows 10, or for more control, use tools like XLaunch, as described in the Prerequisites section from here.
For macOS users:
- Install equivalent dependencies using Homebrew.
- GUI behaviour and windowing may differ slightly from Linux.
Prerequisites
Install Rust and add Cargo to your shell environment:
curl https://sh.rustup.rs -sSf | shsource $HOME/.cargo/envInstall required system dependencies:
sudo apt updatesudo apt install build-essential pkg-config libgtk-3-dev libglib2.0-dev libsoup-3.0-dev \libpango1.0-dev libcairo2-dev libwebkit2gtk-4.1-dev libjavascriptcoregtk-4.1-dev \clang libclang-dev llvm-dev(Optional) Install a modern Node.js version:
Required if your system Node.js is missing or older than v18.# Remove outdated Node.js if installedsudo apt remove --purge nodejs npmsudo apt autoremove# Install Node Version Manager (nvm)curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bashsource ~/.bashrc# Install latest LTS Node.js and activate itnvm install --ltsnvm use --lts
Building and Running GameController
Clone the RoboCup Humanoid Soccer League GameController repo:
cd ~git clone https://github.com/RoboCup-HumanoidSoccerLeague/GameControllercd GameController(Optional) If you want to use a specific branch or tag, check out the desired version:
git checkout <branch-or-tag-name>Build the frontend:
cd frontendnpm cinpm run buildcd ..Build and run GameController:
cargo run -r(Optional) To run in debug mode:
cargo run
Firewall
The GameController communicates over several UDP ports. The host machine's firewall needs to be disabled for communication to work properly:
sudo ufw disableRe-enable after the session if needed:
sudo ufw enableUsing GameController
After launching, a graphical interface will appear:
- Interface: Select the network interface connected to the robot network (e.g.
wlp1s0in the NUbots lab). - Competition settings: Select division, teams, and other game settings.
- Hit Start to begin the game.
For full usage instructions and supported commands, refer to the official README.
For competition-specific robot network configuration, refer to the RoboCup Setup guide.