GameController Setup

Setup instructions for GameController.
Kim Khang Hoang GitHub avatar
Updated 12 June 2026

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

  1. Install Rust and add Cargo to your shell environment:

    curl https://sh.rustup.rs -sSf | sh
    source $HOME/.cargo/env
  2. Install required system dependencies:

    sudo apt update
    sudo 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
  3. (Optional) Install a modern Node.js version:

    Required if your system Node.js is missing or older than v18.
    # Remove outdated Node.js if installed
    sudo apt remove --purge nodejs npm
    sudo apt autoremove
    # Install Node Version Manager (nvm)
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
    source ~/.bashrc
    # Install latest LTS Node.js and activate it
    nvm install --lts
    nvm use --lts

Building and Running GameController

  1. Clone the RoboCup Humanoid Soccer League GameController repo:

    cd ~
    git clone https://github.com/RoboCup-HumanoidSoccerLeague/GameController
    cd GameController
  2. (Optional) If you want to use a specific branch or tag, check out the desired version:

    git checkout <branch-or-tag-name>
  3. Build the frontend:

    cd frontend
    npm ci
    npm run build
    cd ..
  4. 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 disable

Re-enable after the session if needed:

sudo ufw enable

Using GameController

After launching, a graphical interface will appear:

  • Interface: Select the network interface connected to the robot network (e.g. wlp1s0 in 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.

NUbots acknowledges the traditional custodians of the lands within our footprint areas: Awabakal, Darkinjung, Biripai, Worimi, Wonnarua, and Eora Nations. We acknowledge that our laboratory is situated on unceded Pambalong land. We pay respect to the wisdom of our Elders past and present.
Copyright © 2026 NUbots - CC-BY-4.0
Deploys by Netlify