<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Dear SPL teams,<div class=""><br class=""></div><div class="">you can now download the GameController 2015 German Open Edition at the "Downloads" page of the SPL website. It contains all changes necessary to implement the new rules. The sources can be found at&nbsp;<a href="https://github.com/bhuman/GameController" class="">https://github.com/bhuman/GameController</a>&nbsp;.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Important Code Changes</div><div class="">---------------------------------</div><div class=""><br class=""></div><div class="">The most important change that you have to make in your code is that, since team colors get a little bit fuzzy this year, team numbers are now used everywhere to identify teams. The team number is the number that is assigned to your team in the file teams.cfg of the GameController (e.g. B-Human has the number "5").</div><div class=""><br class=""></div><div class="">struct RoboCupGameControlData:</div><div class=""><br class=""></div><div class="">&nbsp; uint8_t kickOffTeam; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the team number of the next team to kick off</div><div class=""><div class="">&nbsp; uint8_t dropInTeam; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // number of team that caused last drop in</div></div><div class=""><br class=""></div><div class="">struct SPLCoachMessage:</div><div class=""><br class=""></div><div class=""><div class="">&nbsp; uint8_t team; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// team number</div></div><div class=""><br class=""></div><div class="">struct SPLStandardMessage:</div><div class=""><br class=""></div><div class=""><div class="">&nbsp; int8_t teamNum; &nbsp; &nbsp; &nbsp; &nbsp;// [MANDATORY FIELD] the number of the team (as provided by the organizers)</div><div class=""><br class=""></div><div class="">There are also several fields marked as mandatory in the SPLStandardMessage that your robots must fill.</div></div><div class=""><br class=""></div><div class="">Please note that the field teamColour of the TeamInfo structure can now contain one of four different values: TEAM_BLUE, TEAM_RED, TEAM_YELLOW, and TEAM_BLACK.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">GameController Changes</div><div class="">----------------------------------</div><div class=""><br class=""></div><div class="">--- Startup Dialog</div><div class=""><br class=""></div><div class="">The communication between referee and the operator of the GameController still uses colors, because some team names may be hard to pronounce or the names of the two teams playing may sound similar. To avoid announcements such as "Out by lemon yellow, pushing sunflower yellow 3" there are four color classes now that cover many different color tones:</div><div class=""><br class=""></div><div class=""><div class="">"blue" (cyan, blue, violet)</div><div class="">"red" (magenta, pink, not red/orange)</div><div class="">"yellow" (yellow)</div><div class="">"black" (black, dark gray)</div><div class=""><br class=""></div><div class="">Each team must have jerseys from two distinct color classes.</div></div><div class=""><br class=""></div><div class="">The file teams.cfg can now contain the colors of main and alternate jerseys for each team. The first team in a match will always plays with its main jerseys. The second team will also play with its main jerseys, unless they are the same color as the one the first team uses. Teams for which no jersey colors are specified play in blue when being the first team and in red when they are the second team and the first team does not play in red as well.</div><div class=""><br class=""></div><div class="">--- Penalties</div><div class=""><br class=""></div><div class="">The new GameController implements two new penalties and groups some other penalties together to keep the number of buttons constant:</div><div class=""><br class=""></div><div class="">- "Fallen / Inactive / Local Game Stuck": Pressing this button results in PENALTY_SPL_INACTIVE_ROBOT. It covers most situations in which a robot does not contribute to the game (anymore).</div><div class=""><br class=""></div><div class="">- "Ball Holding / Hands": Results in PENALTY_SPL_ILLEGAL_BALL_CONTACT and groups together two penalties that were rarely applied last year.</div><div class=""><br class=""></div><div class="">- "Motion in Set": In playoff matches, games are only started by the referee blowing the whistle and the robots have to detect that signal. There is a risk that they accidentally react to another sound (e.g. a whistle on a neighboring field) and start moving too early. In that case, they are penalized by PENALY_SPL_ILLEGAL_MOTION_IN_SET. Since potentially a lot of robots can react to the same noise, this penalty is preselected in the state "Set" of playoff games (other penalties can still be selected) and many robots can be penalized by just pressing their buttons. The robots stay on the field and will automatically be unpenalized 15 seconds after pressing "Play", i.e. after the referee really whistled.</div><div class=""><br class=""></div><div class="">- "Kickoff Goal": If a robot kicks the ball before the ball left the center circle since the last kick-off, it will be penalized by PENALTY_KICK_OFF_GOAL, the ball will be put back, and the game continues.</div><div class=""><br class=""></div><div class="">--- Kick-off in Playoff Games</div><div class=""><br class=""></div><div class="">In playoff games, the referee blows the whistle for kick-off and the operator of the GameController presses the button "Play". On the screen, the GameController switches to "Play", counts down the clock, and counts down the 10 seconds that the defending team is not allowed to enter the center circle as usual. However, none of these changes reach the robots (or the GameStateVisualizer). They will receive packets where the state is still STATE_SET and secsRemaining/secondaryTime do not change. Only 15 seconds later, the state switches to STATE_PLAYING and the remaining time to play will drop by 15 seconds. At that moment, also all robots penalized for illegal motion in set will be unpenalized again.</div><div class=""><br class=""></div><div class="">--- Coach Message Delays</div><div class=""><br class=""></div><div class="">Coach messages are not delayed anymore unless 10 seconds since the previous message have not passed yet. They can carry up to 80 characters.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><span style="text-align: -webkit-auto; orphans: 2; widows: 2;" class="">Have fun!</span></div><div apple-content-edited="true" class=""><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px;"><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-align: -webkit-auto; widows: 2; border-spacing: 0px;"><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><span class="Apple-style-span" style="border-collapse: separate; text-align: -webkit-auto; border-spacing: 0px;"><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px;"><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><div class=""><br class=""></div><div class="">Thomas Röfer</div><div class="">(Team B-Human)</div><div class=""><br class=""></div><div class="">_______________________________________________________________________</div><div class="">Dr. Thomas Röfer</div><div class="">DFKI Bremen</div><div class="">Cyber-Physical Systems<br class=""></div><div class="">Cartesium 0.55</div><div class="">Enrique-Schmidt-Str. 5</div><div class="">28359 Bremen, Germany</div><div class=""><br class=""></div><div class=""><a href="http://www.dfki.de" class="">http://www.dfki.de</a></div><div class=""><a href="http://www.informatik.uni-bremen.de/~roefer" class="">www.informatik.uni-bremen.de/~roefer</a></div><div class=""><br class=""></div></div></div></span></div></span></div></span></span></div></body></html>