Releases: RoboCup-SPL/GameController
RoboCup 2024
TCM/GSV for German Open 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_VERSION
has been set to 14MAX_NUM_PLAYERS
has been set to 7COMPETITION_TYPE_*
macros have changed to this year's technical challengesCOMPETITION_TYPE_CHALLENGE_SHIELD
will not be used
TeamInfo::messageBudget
has been added
In addition, compared to 2019,
SET_PLAY_GOAL_FREE_KICK
has been renamed toSET_PLAY_GOAL_KICK
SET_PLAY_PENALTY_KICK
has 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_VERSION
increased from12
to13
COMPETITION_TYPE_MIXEDTEAM
removedCOMPETITION_TYPE_1VS1
addedCOMPETITION_TYPE_PASSING_CHALLENGE
addedSET_PLAY_GOAL_FREE_KICK
renamed toSET_PLAY_GOAL_KICK
SET_PLAY_PENALTY_KICK
addedPENALTY_SPL_KICK_OFF_GOAL
removed- this changed some of the other penalty macro values
PENALTY_SPL_ILLEGAL_DEFENDER
renamed toPENALTY_SPL_ILLEGAL_POSITION
PENALTY_SPL_ILLEGAL_POSITIONING
renamed toPENALTY_SPL_ILLEGAL_POSITION_IN_SET
- In 1vs1 games (
RoboCupGameControlData::competitionType == COMPETITION_TYPE_1VS1
),TeamInfo::penaltyShot
indicates whether the team used autonomous calibration (=1
) and therefore gets the1.5
score multiplier or not (=0
). This was done in order to avoid makingscore
afloat
because 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_KICK
removedCOMPETITION_TYPE_1VS1
addedCOMPETITION_TYPE_PASSING_CHALLENGE
added- In 1vs1 games (
RoboCupGameControlData::competitionType == COMPETITION_TYPE_1VS1
),TeamInfo::penaltyShot
indicates whether the team used autonomous calibration (=1
) and therefore gets the1.5
score multiplier or not (=0
). This was done in order to avoid makingscore
afloat
because 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.