1
1
syntax = "proto2" ;
2
2
3
- option go_package = "github.com/RoboCup-SSL/ssl-game-controller/internal/app/state" ;
4
-
5
3
import "ssl_gc_common.proto" ;
6
4
import "ssl_gc_geometry.proto" ;
7
5
@@ -109,7 +107,7 @@ message GameEvent {
109
107
required Team by_team = 1 ;
110
108
// the bot that last touched the ball
111
109
optional uint32 by_bot = 2 ;
112
- // the location where the ball left the field
110
+ // the location where the ball left the field [m]
113
111
optional Vector2 location = 3 ;
114
112
}
115
113
// the ball left the field via goal line and a team committed an aimless kick
@@ -118,9 +116,9 @@ message GameEvent {
118
116
required Team by_team = 1 ;
119
117
// the bot that last touched the ball
120
118
optional uint32 by_bot = 2 ;
121
- // the location where the ball left the field
119
+ // the location where the ball left the field [m]
122
120
optional Vector2 location = 3 ;
123
- // the location where the ball was last touched
121
+ // the location where the ball was last touched [m]
124
122
optional Vector2 kick_location = 4 ;
125
123
}
126
124
// a team shot a goal
@@ -131,11 +129,11 @@ message GameEvent {
131
129
optional Team kicking_team = 6 ;
132
130
// the bot that shot the goal
133
131
optional uint32 kicking_bot = 2 ;
134
- // the location where the ball entered the goal
132
+ // the location where the ball entered the goal [m]
135
133
optional Vector2 location = 3 ;
136
- // the location where the ball was kicked (for deciding if this was a valid goal)
134
+ // the location where the ball was kicked (for deciding if this was a valid goal) [m]
137
135
optional Vector2 kick_location = 4 ;
138
- // the maximum height the ball reached during the goal kick (for deciding if this was a valid goal)
136
+ // the maximum height the ball reached during the goal kick (for deciding if this was a valid goal) [m]
139
137
optional float max_ball_height = 5 ;
140
138
// number of robots of scoring team when the ball entered the goal (for deciding if this was a valid goal)
141
139
optional uint32 num_robots_by_team = 7 ;
@@ -150,9 +148,9 @@ message GameEvent {
150
148
required Team by_team = 1 ;
151
149
// the bot that kicked the ball - at least the team must be set
152
150
optional uint32 by_bot = 2 ;
153
- // the location where the ball entered the goal
151
+ // the location where the ball entered the goal [m]
154
152
optional Vector2 location = 3 ;
155
- // the location where the ball was kicked
153
+ // the location where the ball was kicked [m]
156
154
optional Vector2 kick_location = 4 ;
157
155
}
158
156
// the ball entered the goal, but was initially chipped
@@ -161,11 +159,11 @@ message GameEvent {
161
159
required Team by_team = 1 ;
162
160
// the bot that kicked the ball
163
161
optional uint32 by_bot = 2 ;
164
- // the location where the ball entered the goal
162
+ // the location where the ball entered the goal [m]
165
163
optional Vector2 location = 3 ;
166
- // the location where the ball was kicked
164
+ // the location where the ball was kicked [m]
167
165
optional Vector2 kick_location = 4 ;
168
- // the maximum height [m] of the ball, before it entered the goal and since the last kick
166
+ // the maximum height [m] of the ball, before it entered the goal and since the last kick [m]
169
167
optional float max_ball_height = 5 ;
170
168
}
171
169
// a bot moved too fast while the game was stopped
@@ -174,7 +172,7 @@ message GameEvent {
174
172
required Team by_team = 1 ;
175
173
// the bot that was too fast
176
174
optional uint32 by_bot = 2 ;
177
- // the location of the bot
175
+ // the location of the bot [m]
178
176
optional Vector2 location = 3 ;
179
177
// the bot speed [m/s]
180
178
optional float speed = 4 ;
@@ -185,7 +183,7 @@ message GameEvent {
185
183
required Team by_team = 1 ;
186
184
// the bot that violates the distance to the kick point
187
185
optional uint32 by_bot = 2 ;
188
- // the location of the bot
186
+ // the location of the bot [m]
189
187
optional Vector2 location = 3 ;
190
188
// the distance [m] from bot to the kick point (including the minimum radius)
191
189
optional float distance = 4 ;
@@ -196,7 +194,7 @@ message GameEvent {
196
194
optional uint32 bot_yellow = 1 ;
197
195
// the bot of the blue team
198
196
optional uint32 bot_blue = 2 ;
199
- // the location of the crash (center between both bots)
197
+ // the location of the crash (center between both bots) [m]
200
198
optional Vector2 location = 3 ;
201
199
// the calculated crash speed [m/s] of the two bots
202
200
optional float crash_speed = 4 ;
@@ -215,7 +213,7 @@ message GameEvent {
215
213
optional uint32 violator = 2 ;
216
214
// the bot of the opposite team that was involved in the crash
217
215
optional uint32 victim = 3 ;
218
- // the location of the crash (center between both bots)
216
+ // the location of the crash (center between both bots) [m]
219
217
optional Vector2 location = 4 ;
220
218
// the calculated crash speed vector [m/s] of the two bots
221
219
optional float crash_speed = 5 ;
@@ -234,7 +232,7 @@ message GameEvent {
234
232
optional uint32 violator = 2 ;
235
233
// the bot of the opposite team that was pushed
236
234
optional uint32 victim = 3 ;
237
- // the location of the push (center between both bots)
235
+ // the location of the push (center between both bots) [m]
238
236
optional Vector2 location = 4 ;
239
237
// the pushed distance [m]
240
238
optional float pushed_distance = 5 ;
@@ -245,9 +243,9 @@ message GameEvent {
245
243
required Team by_team = 1 ;
246
244
// the bot that tipped over
247
245
optional uint32 by_bot = 2 ;
248
- // the location of the bot
246
+ // the location of the bot [m]
249
247
optional Vector2 location = 3 ;
250
- // the location of the ball at the moment when this foul occurred
248
+ // the location of the ball at the moment when this foul occurred [m]
251
249
optional Vector2 ball_location = 4 ;
252
250
}
253
251
// a defender other than the keeper was fully located inside its own defense and touched the ball
@@ -256,7 +254,7 @@ message GameEvent {
256
254
required Team by_team = 1 ;
257
255
// the bot that is inside the penalty area
258
256
optional uint32 by_bot = 2 ;
259
- // the location of the bot
257
+ // the location of the bot [m]
260
258
optional Vector2 location = 3 ;
261
259
// the distance [m] from bot case to the nearest point outside the defense area
262
260
optional float distance = 4 ;
@@ -271,7 +269,7 @@ message GameEvent {
271
269
optional Vector2 location = 3 ;
272
270
// the distance [m] that the bot is inside the penalty area
273
271
optional float distance = 4 ;
274
- // the location of the ball at the moment when this foul occurred
272
+ // the location of the ball at the moment when this foul occurred [m]
275
273
optional Vector2 ball_location = 5 ;
276
274
}
277
275
// an attacker touched the ball inside the opponent defense area
@@ -280,7 +278,7 @@ message GameEvent {
280
278
required Team by_team = 1 ;
281
279
// the bot that is inside the penalty area
282
280
optional uint32 by_bot = 2 ;
283
- // the location of the bot
281
+ // the location of the bot [m]
284
282
optional Vector2 location = 3 ;
285
283
// the distance [m] that the bot is inside the penalty area
286
284
optional float distance = 4 ;
@@ -291,7 +289,7 @@ message GameEvent {
291
289
required Team by_team = 1 ;
292
290
// the bot that kicked too fast
293
291
optional uint32 by_bot = 2 ;
294
- // the location of the ball at the time of the highest speed
292
+ // the location of the ball at the time of the highest speed [m]
295
293
optional Vector2 location = 3 ;
296
294
// the absolute initial ball speed (kick speed) [m/s]
297
295
optional float initial_ball_speed = 4 ;
@@ -304,9 +302,9 @@ message GameEvent {
304
302
required Team by_team = 1 ;
305
303
// the bot that dribbled too far
306
304
optional uint32 by_bot = 2 ;
307
- // the location where the dribbling started
305
+ // the location where the dribbling started [m]
308
306
optional Vector2 start = 3 ;
309
- // the location where the maximum dribbling distance was reached
307
+ // the location where the maximum dribbling distance was reached [m]
310
308
optional Vector2 end = 4 ;
311
309
}
312
310
// an attacker touched the opponent robot inside defense area
@@ -317,7 +315,7 @@ message GameEvent {
317
315
optional uint32 by_bot = 2 ;
318
316
// the bot of the opposite team that was touched
319
317
optional uint32 victim = 4 ;
320
- // the location of the contact point between both bots
318
+ // the location of the contact point between both bots [m]
321
319
optional Vector2 location = 3 ;
322
320
}
323
321
// an attacker touched the ball multiple times when it was not allowed to
@@ -326,7 +324,7 @@ message GameEvent {
326
324
required Team by_team = 1 ;
327
325
// the bot that touched the ball twice
328
326
optional uint32 by_bot = 2 ;
329
- // the location of the ball when it was first touched
327
+ // the location of the ball when it was first touched [m]
330
328
optional Vector2 location = 3 ;
331
329
}
332
330
// an attacker was located too near to the opponent defense area during stop or free kick
@@ -335,11 +333,11 @@ message GameEvent {
335
333
required Team by_team = 1 ;
336
334
// the bot that is too close to the defense area
337
335
optional uint32 by_bot = 2 ;
338
- // the location of the bot
336
+ // the location of the bot [m]
339
337
optional Vector2 location = 3 ;
340
338
// the distance [m] of the bot to the penalty area
341
339
optional float distance = 4 ;
342
- // the location of the ball at the moment when this foul occurred
340
+ // the location of the ball at the moment when this foul occurred [m]
343
341
optional Vector2 ball_location = 5 ;
344
342
}
345
343
// a bot held the ball for too long
@@ -348,7 +346,7 @@ message GameEvent {
348
346
required Team by_team = 1 ;
349
347
// the bot that holds the ball
350
348
optional uint32 by_bot = 2 ;
351
- // the location of the ball
349
+ // the location of the ball [m]
352
350
optional Vector2 location = 3 ;
353
351
// the duration [s] that the bot hold the ball
354
352
optional float duration = 4 ;
@@ -359,7 +357,7 @@ message GameEvent {
359
357
required Team by_team = 1 ;
360
358
// the bot that interfered the placement
361
359
optional uint32 by_bot = 2 ;
362
- // the location of the bot
360
+ // the location of the bot [m]
363
361
optional Vector2 location = 3 ;
364
362
}
365
363
// a team collected multiple cards (yellow and red), which results in a penalty kick
@@ -371,6 +369,8 @@ message GameEvent {
371
369
message MultipleFouls {
372
370
// the team that collected multiple fouls
373
371
required Team by_team = 1 ;
372
+ // the list of game events that caused the multiple fouls
373
+ repeated GameEvent caused_game_events = 2 ;
374
374
}
375
375
// a team failed to place the ball multiple times in a row
376
376
message MultiplePlacementFailures {
@@ -381,7 +381,7 @@ message GameEvent {
381
381
message KickTimeout {
382
382
// the team that that should have kicked
383
383
required Team by_team = 1 ;
384
- // the location of the ball
384
+ // the location of the ball [m]
385
385
optional Vector2 location = 2 ;
386
386
// the time [s] that was waited
387
387
optional float time = 3 ;
@@ -418,7 +418,7 @@ message GameEvent {
418
418
message KeeperHeldBall {
419
419
// the team that found guilty
420
420
required Team by_team = 1 ;
421
- // the location of the ball
421
+ // the location of the ball [m]
422
422
optional Vector2 location = 2 ;
423
423
// the duration [s] that the keeper hold the ball
424
424
optional float duration = 3 ;
@@ -462,21 +462,21 @@ message GameEvent {
462
462
optional int32 num_robots_allowed = 2 ;
463
463
// number of robots currently on the field
464
464
optional int32 num_robots_on_field = 3 ;
465
- // the location of the ball at the moment when this foul occurred
465
+ // the location of the ball at the moment when this foul occurred [m]
466
466
optional Vector2 ball_location = 4 ;
467
467
}
468
468
// a robot chipped the ball over the field boundary out of the playing surface
469
469
message BoundaryCrossing {
470
470
// the team that has too many robots
471
471
required Team by_team = 1 ;
472
- // the location of the ball
472
+ // the location of the ball [m]
473
473
optional Vector2 location = 2 ;
474
474
}
475
475
// the penalty kick failed (by time or by keeper)
476
476
message PenaltyKickFailed {
477
477
// the team that last touched the ball
478
478
required Team by_team = 1 ;
479
- // the location of the ball at the moment of this event
479
+ // the location of the ball at the moment of this event [m]
480
480
optional Vector2 location = 2 ;
481
481
}
482
482
@@ -494,7 +494,7 @@ message GameEvent {
494
494
ATTACKER_TOO_CLOSE_TO_DEFENSE_AREA = 19 ; // triggered by autoRef
495
495
DEFENDER_IN_DEFENSE_AREA = 31 ; // triggered by autoRef
496
496
BOUNDARY_CROSSING = 41 ; // triggered by autoRef
497
- KEEPER_HELD_BALL = 13 ; // triggered by autoRef
497
+ KEEPER_HELD_BALL = 13 ; // triggered by GC
498
498
BOT_DRIBBLED_BALL_TOO_FAR = 17 ; // triggered by autoRef
499
499
500
500
BOT_PUSHED_BOT = 24 ; // triggered by human ref
0 commit comments