Releases: RoboCup-SPL/GameController
RoboCup 2025
TCM/GSV for RoboCup 2025
RoboCup 2024
TCM/GSV for RoboCup 2024
German Open 2024
TCM/GSV for German Open 2024
RoboCup 2022
This is the GameController that will be used at RoboCup 2022.
Network Interface
RoboCupGameControlData
Compared to 2020/2021,
GAMECONTROLLER_STRUCT_VERSIONhas been set to 14MAX_NUM_PLAYERShas been set to 7COMPETITION_TYPE_*macros have changed to this year's technical challengesCOMPETITION_TYPE_CHALLENGE_SHIELDwill not be used
TeamInfo::messageBudgethas been added
In addition, compared to 2019,
SET_PLAY_GOAL_FREE_KICKhas been renamed toSET_PLAY_GOAL_KICKSET_PLAY_PENALTY_KICKhas been addedPENALTY_*macros have been adapted to rule changes
RoboCupGameControlReturnData
In order to keep a continuous model of robots in tools such as the TCM despite the new team communication rules, RoboCupGameControlReturnData has been changed to match most of the fields from the SPLStandardMessage. Robots must still unicast it to the GameController host, but the GameController forwards it to all hosts that requested the true game state (such as TCMs) on port 3940.
SPLStandardMessage
The SPLStandardMessage hasn't changed since 2018 except for the (invalid) default values of playerNum, teamNum and fallen, and 7 is a valid player number now.
Dynamic Ball Handling Challenge
The GameController does NOT assist with the scoring of the challenge. It only counts down the time and ejects players that are penalized. According to the rules, it also finishes the challenge when an attacker pushes. In all other cases, the referee must judge whether the challenge can still be completed.
7 vs. 7 Challenge
The hardware penalty limitation is implemented as 2 per half and 3 per game, i.e. a third hardware penalty in the second half is only legal if at least one of them was in the first half.
TCM
Since the TCM visualizes messages from two sources now (SPLStandardMessage and RoboCupGameControlReturnData), there are two numbers (separated by a slash) in the per-robot statistics for number of messages, messages per seconds, and illegal messages (first number is from team messages, second number is from GameController return packets).
GORE 2022
This is the GameController that will be used at GORE_3.
RoboCup 2021
This is the GameController that will be used for the Passing Challenge and 1vs1 Challenge at RoboCup 2021.
RoboCupGameControlData Format
The overall message format is still the same as 2019, however some macros have been added/removed/redefined.
The changes with respect to the 2019 release are:
GAMECONTROLLER_STRUCT_VERSIONincreased from12to13COMPETITION_TYPE_MIXEDTEAMremovedCOMPETITION_TYPE_1VS1addedCOMPETITION_TYPE_PASSING_CHALLENGEaddedSET_PLAY_GOAL_FREE_KICKrenamed toSET_PLAY_GOAL_KICKSET_PLAY_PENALTY_KICKaddedPENALTY_SPL_KICK_OFF_GOALremoved- this changed some of the other penalty macro values
PENALTY_SPL_ILLEGAL_DEFENDERrenamed toPENALTY_SPL_ILLEGAL_POSITIONPENALTY_SPL_ILLEGAL_POSITIONINGrenamed toPENALTY_SPL_ILLEGAL_POSITION_IN_SET- In 1vs1 games (
RoboCupGameControlData::competitionType == COMPETITION_TYPE_1VS1),TeamInfo::penaltyShotindicates whether the team used autonomous calibration (=1) and therefore gets the1.5score multiplier or not (=0). This was done in order to avoid makingscoreafloatbecause that would have broken the alignment and binary compatibility.
For those who already had adapted to the 2020 version (which was never officially released), the only changes are:
COMPETITION_TYPE_GENERAL_PENALTY_KICKremovedCOMPETITION_TYPE_1VS1addedCOMPETITION_TYPE_PASSING_CHALLENGEadded- In 1vs1 games (
RoboCupGameControlData::competitionType == COMPETITION_TYPE_1VS1),TeamInfo::penaltyShotindicates whether the team used autonomous calibration (=1) and therefore gets the1.5score multiplier or not (=0). This was done in order to avoid makingscoreafloatbecause that would have broken the alignment and binary compatibility.
In particular, the version number has not been increased again!
Passing Challenge
The Passing Challenge mode allows to select one team, the other team is automatically set to "Invisibles" and the corresponding panel in the main screen is empty. Since the robots are already put on their starting positions, there is no ready phase, instead it is possible to switch to set immediately. From then on, the game is started as usual with the "Playing" button (the signal is still delayed by 15 seconds). The "+" button in the top left corner can be used to count passes; it does not switch the game state. The referee still needs to manually track the 30 second limit for leaving the red zone.
1vs1
In the start screen, besides selecting both teams, you have to select the checkbox "Uses Autonomous Calibration" below the respective team(s). This way, the GameController calculates and displays the adjusted score.
The main screen displays only the penalties that are possible in this competition. The "Global Game Stuck" button is centered because Global Game Stuck is not called on a specific team in this competition. The "+" button which normally awards a goal only increases the score; the game state is not changed.
The number in parentheses next to the robot name indicates the number of hardware penalties (fallen/inactive and request for pick-up) the robot has left. After more than 3 hardware-related penalties (e.g. on the fourth penalty), the robot is ejected, i.e. its penalty never ends.
Due to the rule that 1vs1 games must always have a winner, the "Finish" button is disabled during the last 10 seconds of the second half if the score is equal. Instead the "+" button next to the remaining time becomes available to extend the game by one minute. After five extensions, the "Finish" button stays available because the rules demand a coin toss then.
Because the team colors depend on the hosting arena and not on the teams playing, the configuration files in this release do not specify team colors. I would advise teams not to rely on TeamInfo::teamColour because every seen robot is an opponent. Still, in order to disambiguate communication between the GameController operator and head referee, it is advantageous for the hosting teams to set their jersey colors in their local copy of the GameController. The relevant file is config/spl_1vs1/teams.cfg in the binary release (in the source code it is located under resources). In each line, you should append ,<home color>,<away color>. Then the left team will always have your home jersey color preselected and the right team the away color.
German Open Replacement Event 2021
This is the version of the GameController that will be used at the German Open Replacement Event from May 6-9, 2021.