Skip to content

Developers Hub

Developers Hub lets you compete with your own team binary (the RoboCup way) instead of NFT players. You upload a real RoboCup team, the platform test-plays it against a base team, then once it is verified you can join developer tournaments with it.

  1. Open Developers Hub from the left menu.
  2. Upload a Team_Name.tar.gz (RoboCup format). You can keep up to 5 versions. Delete one to upload another. A fresh upload sits at pending verification.
  3. The platform runs a short 1-minute test game (two 30-second halves) against the base team. Watch the replay and download the logfiles (rcg) and (rcl) from the same row. You can run one test game at a time. Re-testing a version keeps only its latest test: the previous replay is dropped. A test counts only when both teams connect under their names and the game reaches at least 100 cycles; otherwise the version is marked failed with the reason.
  4. Once the test game has produced its logfiles, review them. If you are happy, press Verify. A binary stays pending verification until you do this, even if it is your only version.
  5. Only a verified binary makes you eligible for developer tournaments. The verified version you pick represents you. Other users see it in the public list with its verified status, the test game, the last upload time.

Your archive must follow the RoboCup structure:

  • The team name, the folder name inside the archive, the archive file name: these must all match. Example: team HELIOS_base lives in a folder HELIOS_base/ packed as HELIOS_base.tar.gz. The team name means the name your binary registers with rcssserver: the test game checks the names that actually connected, so a binary that plays under a different name fails its test even when the archive and folder match.
  • Put your binary inside that folder together with its lib/ directory plus the config and formation files your players need.
  • Include a start script that launches your team’s players and the coach (see below). It must read all four launch arguments $1 $2 $3 $4; an upload whose start ignores one of them is refused.
  • Use .tar.gz (preferred) or .tar.xz. Maximum size is 100 MB. The name is at most 64 characters and may use only letters, digits, _ - . with no spaces or parentheses.
  • Your team name is locked across all your versions: every upload must use the same name. To switch names, delete every version in My Binaries first. A name that another developer already holds as their active verified team cannot be verified or activated, since team names are unique across developers.

Archive command:

Terminal window
tar czvfp HELIOS_base.tar.gz HELIOS_base/

Example layout:

HELIOS_base/
├── lib/ (your shared libraries)
├── sample_player
├── sample_coach
├── player.conf
├── coach.conf
├── formations-dt
└── start

The runner calls start <host> <basedir> <number> <port> once for each player and once for the coach. Pass the <port> argument through to your player and coach (the coach already receives its own port). Set teamname to your team name:

#!/bin/sh
HOST=$1
BASEDIR=$2
NUM=$3
PORT=$4
# Make your bundled libraries findable at runtime.
LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
teamname="TEAMNAME"
player="./sample_player"
coach="./sample_coach"
opt="--player-config ./player.conf -h ${HOST} -p ${PORT} -t ${teamname}"
coachopt="--coach-config ./coach.conf -h ${HOST} -p ${PORT} -t ${teamname}"
cd $BASEDIR
case $NUM in
1) $player $opt -g ;; # goalie
12) $coach $coachopt ;; # coach
*) $player $opt ;; # field players
esac

FoxLeague always generates its own start.sh from your start, overwriting any start.sh you ship. The generated launcher loops start over players 1-11 plus the coach as number 12, passing the game port to each player and port+2 to the coach. An archive with only a start.sh and no start is refused at upload.

When a test game cannot run, the reason shows up in your Developers Hub → My Binaries table. Common causes:

  • Name mismatch: the archive name, the folder name, the team name your binary registers with the server are not identical.
  • Extract failed: the archive is corrupt or it is not a real tar.gz / tar.xz.
  • No start file: there is no start script in the team folder.
  • Will not launch: wrong team name in start, missing libraries, a binary built for a different OS than Ubuntu 24.04.
  • Absolute paths in your config: a player config that points at fixed locations like /home/strategy/formation.conf or /home/server/playertype.conf will crash, because those paths do not exist on our servers. Your players connect, then segfault the moment they try to load a missing strategy, formation or player-type file. Use paths relative to your team folder (./strategy/formation.conf) and bundle those files in the archive. A common signature is players that send init but never appear on the field while your coach runs fine.
  • Timeout or no log: the players never connected or the game did not finish. Check that your binary runs locally first.

When you create a tournament you can turn on Developers Hub (available on all four formats, below the Organizer-only toggle). A developer tournament:

  • shows a violet DEVELOPERS badge on its card,
  • accepts only teams that have uploaded and verified a binary in Developers Hub section.

If you have not uploaded and verified a binary, the Join button is locked with a note showing Developers Only.

See Royalties System for how a verified team can earn rewards by being used in standard tournaments.

New to RoboCup Soccer Simulation 2D? These are the canonical references for building a team from scratch: