The RoboCup Soccer Simulator documentation
Soccer Server 足球服务器(上)
导读
在实际运用中建议直接跳至足球服务器(中)开始看,协议用于深挖底层。
Objects 物体

| 物体名称 | 
|---|
| 物体参数 | 
Protocols 协议
球员命令协议
连接
| From player to server | From server to client | |
|---|---|---|
| (init TeamName [(version VerNum )] [(goalie)]) TeamName ::= [-_a-zA-Z0-9]+ VerNum ::= the protocol version (e.g. 15)  | 
(init Side Unum PlayMode) Side ::= l \ | 
rUnum ::= 1~11 PlayMode ::= one of play modes (error no_more_team_or_player) (error reconnect)  | 
| (reconnect …) TeamName :=  | 
||
| (bye) | 
如果您的客户端使用 >= 7.0 的协议版本成功连接或重新连接,服务器将另外发送以下消息: server_param(包含服务器参数的消息),player_param(包含播放器参数的消息)和 player_type(包含播放器类型的消息)。最后,玩家将收到有关已更改玩家的消息(请参阅 Sec. Heterogeneous Players)。
初始化设置
| From player to server | From server to player | |||||||
|---|---|---|---|---|---|---|---|---|
| (compression Level) Level ::= zlib compression level [0,9]or negative number  | 
(ok compression Level) (warning compression_unsupported)  | 
|||||||
| (clang (ver MinVer MaxVer)) MinVer ::= integer MaxVer ::= integer  | 
(ok clang (ver MinVer MaxVer)) | |||||||
| (ear (OnOff [Team] [Type])) OnOff ::= on \ | 
offTeam ::= our \ | 
opp \ | 
left \ | 
right \ | 
l \ | 
r \ | 
TeamName | no response if succeeded (error no team with name TeamName)  | 
| (synch_see) | (ok synch_see) | 
球员控制
| From player to server | Only once per cycle | |||||||
|---|---|---|---|---|---|---|---|---|
| (turn Moment) Moment ::= minmoment ~ maxmoment degrees  | 
Yes | |||||||
| (dash Power [Direction]) Power ::= min_dash_power ~ max_dash_power Direction ::= min_dash_angle ~ max_dash_angle degrees Note: backward dash (negative power) consumes double stamina.  | 
Yes | |||||||
| (kick Power Direction) Power ::= minpower ~ maxpower Direction ::= minmoment ~ maxmoment degrees  | 
Yes | |||||||
| (tackle PowerOrAngle [Foul]) PowerOrAngle ::= minmoment ~ maxmoment degrees : if client version >= 12 PowerOrAngle ::= -max_back_tackle_power ~ max_tackle_power : if client version < 12 Foul ::= true | 
false | 
on | 
off | 
Yes | ||||
| (catch Direction)Direction ::= minmoment ~ maxmoment degrees | Yes | |||||||
| (move X Y)X ::= real numberY ::= real number | Yes | |||||||
| (change_view Width Quality) Width ::= narrow | 
normal | 
wideQuality ::= high | 
low | 
No | ||||
| (say “Message”) Message ::= [-0-9a-zA-Z ().+/?<>_]\  | 
No | |||||||
| (pointto Distance Direction) (pointto Off) Distance ::= real number Direction ::= real number degree Off ::= false | 
off | 
No | ||||||
| (attentionto Team Unum) (attentionto Off) Team ::= our | 
opp | 
left | 
right | 
l | 
r | 
TeamName Unum ::= integerOff ::= false | 
off | 
No | 
| (done) | Yes | 
Others
| From player to server | From server to player | 
|---|---|
| (sense_body) | sense_body message | 
| (score) | (score Time Our Opp) Time ::= simulation cycle of rcssserver Our ::= sender’s team score Opp ::= opponent team score  | 
球员感官协议
From Server to player
(hear Time Sender “Message”)
(hear Time OnlineCoach CoachLanguageMessage)
    Time ::= simulation cycle of rcssserver
    Sender ::= online_coach_left | online_coach_right | coach | referee | self | Direction
    Direction ::= -180 ~ 180 degrees
    Message ::= string
    OnlineCoach ::= online_coach_left | online_coach_right
    CoachLanguageMessage ::= see the standard coach language section
(see Time ObjInfo+) Time ::= simulation cycle of rcssserver ObjInfo ::= (ObjName Distance Direction DistChange DirChange BodyFacingDir HeadFacingDir [PointDir] [t] [k]]) | (ObjName Distance Direction DistChange DirChange [PointDir] [{t|k}]) | (ObjName Distance Direction [t] [k]) | (ObjName Diretion) ObjName ::= (p [”TeamName” [UniformNumber [goalie]]]) | (b) | (g {l|r}) | (f c) | (f {l|c|r} {t|b}) | (f p {l|r} {t|c|b}) | (f g {l|r} {t|b}) | (f {l|r|t|b} 0) | (f {t|b} {l|r} {10|20|30|40|50}) | (f {l|r} {t|b} {10|20|30}) | (l {l|r|t|b} 0) | (P)| (B)| (G)| (F) Distance ::= positive real number Direction ::= -180 ~ 180 degrees DistChange ::= real number DirChange ::= real number BodyFacingDir ::= -180 ~ 180 degrees HeadFacingDir ::= -180 ~ 180 degrees PointDir ::= -180 ~ 180 degrees TeamName ::= string UniformNumber ::= 1 ~ 11
(sense_body Time (view_mode {high|low} {narrow|normal|wide}) (stamina Stamina Effort Capacity) (speed AmountOfSpeed DirectionOfSpeed) (head_angle HeadAngle) (kick KickCount) (dash DashCount) (turn TurnCount) (say SayCount) (turn_neck TurnNeckCount) (catch CatchCount) (move MoveCount) (change_view ChangeViewCount) (arm (movable MovableCycles) (expires ExpireCycles) (count PointtoCount)) (focus (target {none|{l|r} Unum}) (count AttentiontoCount)) (tackle (expires ExpireCycles) (count TackleCount)) (collision {none|[(ball)] [(player)] [(post)]}) (foul (charged FoulCycles) (card {red|yellow|none})))
(fullstate Time (pmode {goaliecatch_ball{l|r}|PlayMode}) (vmode {high|low} {narrow|normal|wide}) (count KickCount DashCount TurnCount CatchCount MoveCount TurnNeckCount ChangeViewCount SayCount) (arm (movable MovableCycles) (expires ExpireCycles)) (target Distance Direction) (count PointtoCount) (score Time Our Opp) ((b) X Y VelX VelY) Players+) Players ::= ((p {l|r} UniformNumber [g] PlayerType) X Y VelX VelY BodyDir NeckDir [PointtoDist PointtoDir] (stamina Stamina Effort Recovery Capacity) [k|t|f] [r|y]))