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.
  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.
  • 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).
  • Use .tar.gz (preferred) or .tar.xz. Maximum size is 100 MB. The name may use only letters, digits, _ - . with no spaces or parentheses.

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

If your team only has the standard start and no start.sh, FoxLeague generates a start.sh for you that loops this start over players 1-11 and the coach, passing the right port to each.

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 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: