forked from rcsoccersim/rcssserver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
2967 lines (2231 loc) · 116 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
[19.0.0]
* New prameters:
- server::dist_noise_rate (default value: 0.0125)
- server::focus_dist_noise_rate (default value: 0.0125)
- server::land_dist_noise_rate (default value: 0.00125)
- server::land_focus_dist_noise_rate (default value: 0.00125)
* New command:
- "(dash (l POWER DIR) (r POWER DIR))"
This is an extension of the dash command. All version players
can use this format. If the command is accepted, players can
perform acceleration and direction change simultaneously based
on the bipedal dash model.
- "(gaussian_see)"
All version players can use this command. If the command is
accepted, rcssserver sent a reply message, "(ok gaussian_see)".
This command is used for a gaussian noise mode describing below.
* Introduce a bipedal dash model. Players can now independently
issue dash commands to the left and right legs. This means that
players can now apply different accelerations to each leg. With
the bipedal dash model, players can perform acceleration and
direction changes simultaneously, governed by differential drive
kinematics.
The rotation is calculated as:
rotation = (left_leg_vel.bx - right_leg_vel.bx)/(player_size*2)
where bx is the x-component of the vector with the player's
body direction as the x-axis.
The player's result velocity is calculated as:
vel = (left_leg_vel + right_leg_vel)/2
Stamina is consumed independently on the left and right legs,
and the total consumption is the sum of half of each leg:
stamina = stamina - (left_consumed/2 + right_consumed/2)
* Introduce a new gaussian observation noise model. This model is
activated by "(gaussian_see)" command and replaces the previous
quantization model. In this model, In this model, the noised
distance in the player's observation is determined by a
Gaussian distribution:
stddev = actual_dist * noise_rate + focus_dist * focus_noise_rate
noised_dist = max(0.0, normal_distribution(actual_dist, stddev))
where normal_distribution(mean, stddev) is a random number
generator based on a Gaussian distribution with given mean and
standard deviation. actual_dist represents the actual distance
between the observed object and the player, while focus_dist is
the distance between the observed object and the player's focus
point. noise_rate and focus_noise_rate are determined by
heterogeneous parameters, with default values defined as new
server parameters, uniformly set for all player types in the
current version. For ball and player observation,
server::dist_noise_rate and server::focus_dist_noise_rate are
applied, while for flags (landmark objects), server::land_dist_noise_rate
and server::focus_dist_noise_rate are applied.
The velocity noise formula is similar to the previous one.
The formula of dir_chg remains unchanged, while dist_chg is
calculated as:
dist_chg = actual_dist_chg * noised_dist / actual_dist
where actual_dist_chg represents the x-component of the velocity
vector with the direction from the player to the observed object
as the x-axis. The resulting dist_chg value is rounded to two
decimal places before being sent.
* Improve the JSON game log format. The format of each data has
been reviewed to make it easier to parse and the JSON rcg is
now recorded as a pure JSON file. The parser library is bundled
in rcssmonitor.
[18.1.3]
* Fix an issue in the penalty shootouts referee. If both teams
score the same when finishing all extended trials, the penalty
shootouts referee will not end the game and the simulator will
get stuck. Thanks go to Omid Amini for providing the patch.
[18.1.2]
* Fix a problem of v18 observation noise model. Quantized distance
values affected by the focus point are now rounded to one decimal
place.
[18.1.1]
* Fix a problem in which the focus point is sometimes not updated.
[18.1.0]
* Revert the message frequency and the noise model of the visual
information. Now, these settings are same as 17.0.1.
[18.0.0]
* Update to C++17.
* New command:
- "(change_focus DIST_MOMENT DIR_MOMENT)"
All version players can use this command. If the command is
accepted, that player's focus point is moved according to the
given parameters. Details are described below.
* Change the version number of JSON-based monitor protocol to -1.
And, change the header line of JSON-based game log to "JSON". If
the value of server::game_log_version is -1, the content of the
recorded game log is a JSON array except for the header line.
* Introduce a new observation model.
When the players connect with version 18 or higher, the vision
sensor automatically enters the synchronous mode.
The concept of focus points is introduced. The focus point
represents a position inside a player's view angle, and can be up
to 40.0 meters away from the player's position. The focus point
affects the visual sensor noise model, with the noise of observed
objects increasing as the distance between the focus point and
the object increases.
The initial position of the focus point is the player's position,
and if a player does not change the focus point position, the
server visual noise model behaves as in server v17. However, a
player can change the position of the focus point by sending a
**change_focus** command. This command takes two parameters,
*dist_moment* and *dir_moment*, and changes the position of the
focus point relative to the player's neck angle.
See the user manual for more information on the new observation
model.
[17.0.1]
* Fix build problems caused by missing headers.
[17.0.0]
* New parameters:
- server::max_catch_angle (default value: 90.0)
- server::min_catch_angle (default value: -90.0)
* Changed parameters:
- server::min_dash_power (-100.0 -> 0)
- server::back_dash_rate (0.6 -> 0.7)
* Improvement of the catch model. The direction of goalie's catch
command has been restricted within [server::min_catch_angle,
server::max_catch_angle]. The default values are [-90.0, 90.0].
This setting means goalies cannot catch the ball behind them.
* Improvement of the dash model. server::min_dash_power is changed
from -100.0 to 0.0. This means players cannot use the negative
power in order for them to accelerate backward. If players would
like to accelerate backward, they need to use the omnidirectional
dash. In connection with the change of the dash power,
server::back_dash_rate has been changed.
* Support a JSON-based monitor protocol. If the monitor tries to
connect to the server by the client version 5, the received
messages will be JSON. The format of the game log file (.rcg) has
also followed the monitor protocol. If the value of
server::game_log_version is 6, the content of the recorded game
log is a JSON array except for the header line.
* The installation destination of the library header files has been
unified under PREFIX/include/rcss. The location of the clang
parser library has been moved to prefix/include/rcss/clang.
* Support CMake. Thanks to gikari for providing his great
contribution on GitHub.
* Support C++11/14. Some environment-dependent implementations have
been replaced by the C++ standard library.
[16.0.1]
* Fix a bug of the length of half time caused by slow_down_factor.
[16.0.0]
* New parameters:
- server::illegal_defense_duration (default value: 20)
- server::illegal_defense_number (default value: 0)
- server::illegal_defense_dist_x (default value: 16.5)
- server::illegal_defense_width (default value: 40.32)
- server::fixed_teamname_l (default value: '')
- server::fixed_teamname_r (default value: '')
* Introduce an automatic illegal defense detection rule. This rule
is disabled if the value of illegal_defense_number is 0 (default
in this version).
The illegal defense area is defined by two parameters,
illegal_defense_dist_x and illegal_defense_width. The area
defined by default values is same as the penalty area for each
side. Please note that these values may be changed in the future
version.
If a player in the defensive side team (not a ball owner team)
exists whthin the illegal defense area for that team, the referee
marks that player is a candidate of illegal defense state. Then,
if the number of marked players is more than or equal to
illegal_defense_number, the referee judges that the team behaves
illegal defense at that cycle. Finally, if the illegal defense behavior
for a team continues for more than or equal to illegal_defense_duration,
'illegal_defense_[lr]' playmode is called and a free kick is
awarded to the other team. The free kick position is currently
fixed at (+-41.5, 0.0).
* Introduce a fixed team name feature. If fixed_teamname_[lr] are
given, the players and online coaches receive the given string as
their opponent team name, while receiving their own team name as
it is. This feature can be used for an anonymous game where both
teams do not know their opponent team name during a game.
* Define a new player state flag for the monitor protocol to
represent an illegal defense state. This flag can be used to
visualize the state of illegal defense behavior on the
monitor/logplayer.
[15.6.0]
* Change the default value of server::dash_angle_step from 45.0 to
1.0. This change means players can dash to almost any direction.
* Fix the problem of foul assignment during penalty
shootouts. Thanks go to Ruggero Rossi for providing the patch.
[15.5.0]
* Fix build problems on Ubuntu 18.04. Replace all auto_ptr variables
with unique_ptr or shared_ptr. Now, rcssserver requires c++14.
[15.4.0]
* Improvement of the referee. When two or more players kick/tackle
the ball in the same cycle, the last kicker is the one that
provided higher acceleration to the ball and not the one that sent
the last kick/tackle command to the server. Thanks go to Nader
Zare for providing the patch.
[15.3.0]
* Fixed bison3 build problems. Supported Ubuntu 14.04.
[15.2.2]
* Fixed a bug of the backpass detection. If kick and catch are taken
simultaneously by same team players but the before kicker also
belongs to the same team, the backpass violation is detected.
[15.2.1]
* Fixed a bug of the backpass detection. Two or more players from
different teams kick the ball in the same game cycle, the backpass
violation is never detected.
[15.2.0]
* Fixed an issue with the CatchRef which did not allow a goalie to
catch the ball, after having intercepted it from an opponent,
dribbled to its own area and catch it. Regardless of the
interception position, this should never lead to a foul being
called. Thanks go to Fernando Almeida for reporting the problem
and providing the patch.
* Changed the default value of server::log_date_format from
"%Y%m%d%H%M-" to "%Y%m%d%H%M%S-".
* Fixed a defect of boost detection.
[15.1.0]
* Fixed a defect of boost detection by updating autoconf macros.
* Fixed a bug of referee's player clearance operation after fouls.
* Fixed a defect of zero division in Quantize method.
[15.0.1]
* Fixed a defect of clang specification. Now, directive names or
ID strings are limited within 8 characters.
[15.0.0]
* New parameters:
- server::red_card_probability (default value: 0.0)
* Changed parameters:
- server::drop_ball_time (200 -> 100)
- server::golden_goal (true -> false)
* Improvement of the offside referee. The automatic referee checks
whether offside position players actually touched to the ball or
not, or whether offside position players intended to approach the
ball by kick/tackle command and their position is located within
server::offside_active_area from the ball.
* Improvement of the catch model.
- If goalie fails to catch the ball beyond the fuzzy catchable
area, the ball has no effect. (same as the previous model)
- If goalie fails to catch the ball within a fuzzy catchable area,
the ball is accelerated to the catch command direction. It is
similar to the ball bouncing from the wall that the normal
vector's direction is same as the catch command direction.
* Improvement of the foul model. In the previous foul model, players
never get the red card immediately even if they intentionally
perform a foul action. As a result, players can perform an
intentional foul safely if they have no yellow card. Now,
the server::red_card_probability variable is used to determine
whether a player get the red card if it performs an intentional
foul, or whether a players get the yellow card if it performs a
dangerous tackle. If red_card_probability is 0.01 and player's
foul_detect_probability is 0.5, the actual red card probability
becomes 0.005.
* Removing automatic player clearance during stoppage time. For
example, left side players can approach to the ball during the
playmode offside_l, but they are kept away from the ball before
the playmode is changed to freekick_r.
* allowed '+' as a team name character.
* Fixed a build problem caused by boost::filesystem3.
[14.0.3]
* Fixed a bug of the overtime handling when server::golden_goal is
false. Thanks go to Thomas Gabel for reporting the problem.
[14.0.2]
* Fixed a problem of automatic heterogeneous player assignment. Now,
the player type ID of unchanged player is never broadcasted.
* Fixed a compilation problem on gcc-4.4.1. Thanks go to Ke Shi for
reporting the problem.
[14.0.1]
* Fixed an incorrect catch model implementation. Thanks go to Bruno
Vinicius for reporting the problem. The following pseudo code
shows a corrected trade-off rule of the catch model:
// catchable_area_l_stretch is the heterogeneous parameter,
// currenlty within [1.0,1.3]
double this_catchable_are_delta
= server::catchable_area_l * ( catchable_area_l_stretch - 1.0 );
double this_catchable_area_l_max = server::catchable_area_l
+ this_catchable_are_delta;
double this_catchable_area_l_min = server::catchable_area_l
- this_catchable_are_delta;
if ( ball_pos is inside the MINIMAL catch area )
{
// the MINIMAL catch area has a length of
// this_catchable_area_l_min and width server::catchable_area_w
//
// goalie catches the ball with probability
// server::catch_probability (which is 1.0 by default)
}
else if ( ball_pos is beyond the MAXIMAL (stretched) area )
{
// the MAXIMAL catch area has a length of
// this_catchable_area_l_max and width server::catchable_area_w
//
// goalie definitely misses the ball
}
else
{
double ball_relative_x = ( ball_pos - goalie_pos )
.rotate( -(goalie_body + catch_dir) ).x;
double catch_prob
= server::catch_probability
- server::catch_probability
* ( ball_relative_x - this_catchable_area_l_min )
/ ( this_catchable_area_l_max - this_catchable_area_l_min );
// goalie catches the ball with probability catch_prob
// it holds: catch_prob is in [0.0,1.0]
}
[14.0.0]
* New parameters:
- server::tackle_rand_factor (default value: 2.0)
- server::foul_detect_probability (default value: 0.5)
- server::foul_exponent (default value: 10.0)
- server::foul_cycles (default value: 5)
- server::golden_goal (default value: true)
- player::kick_power_rate_delta_min (default value: 0.0)
- player::kick_power_rate_delta_max (default value: 0.0)
- player::foul_detect_probability_delta_factor (default value: 0.0)
- player::catchable_area_l_stretch_min (default value: 1.0)
- player::catchable_area_l_stretch_max (default value: 1.3)
* Changed parameters:
- server::stamina_capacity (148600.0 -> 130600.0)
- server::dash_angle_step (90.0 -> 45.0)
- server::side_dash_rate (0.25 -> 0.4)
- server::back_dash_rate (0.5 -> 0.6)
* Improvement of the dash model. The new server::dash_angle_step
value enables players to dash into eight directions. The value of
server::side_dash_rate and server::back_dash_rate are increased to
enable more acceleration in sideward/backward dashes.
* Improvement of the stamina model. The stamina capacity value is
changed from 148600.0 to 130600.0.
* Increasing tackle noise. server::tackle_rand_factor parameter is
introduced and, consequently, each heterogeneous player type has
an independent tackle_rand parameter. With this parameter, the
noise of tackle effect is increased more than kicking noise. Each
heterogeneous tackle_rand value is caluculated as follows:
tackle_rand = kick_rand * server::tackle_rand_factor
* Introducing fouls for dangerous tackle situations. If players
perform a tackle command under specific conditions and the referee
detects it, then the playmode is changed to
foul_charge_[lr]
where l or r is the side of the tackling player. After wait
cycles, the play mode is changed to "free_kick_[lr]" or
"indirect_free_kick_[lr]", where l or r is the side of ball
handling player. When foul occurs in penalty areas,
- if the side of penalty area is same as the penalized player's
side, indirect free kick is awarded to the other team at the
position where foul occurs.
- else, the ball is moved to the outside of penalty
area and free kick is awarded to the other team.
Currently, the dangerous conditions are defined as follows:
- The ball handling player exists between the tackling player
and the ball.
- The ball handling player's body angle is directed to the
opposite side of the tackling player.
- The ball handling player is performing dash command.
- Finally, the foul is determined randomly using
foul_detect_probability of each heterogeneous player type.
* Introducing intentional foul option. Now, intentional foul playing
and yellow/red cards are introduced. The tackle command is
extended by an additional boolean parameter, i.e.
(tackle DIR {true|false})
which indicates that the player is willing to foul his
opponent. If the boolean parameter is omitted, the false value is
used by default.
Details:
a) if foul flag is false:
normal tackle behavior, i.e. tackling for the ball
b) if foul flag is true AND ball not in kick range of opponent:
normal tackle behavior
c) if foul flag is true AND ball IS in kick range of opponent:
c1) tackle the ball, but apply a higher tackle exponent
(server::foul_exponent = 10)
c2) if the foul succeeds (with probability determined in c1):
the foul-playing player does *not* have to remain idle
for server::tackle_cycles cycles. but instead the opponent
player (the player to which the foul has been applied) must
remain idle (lie on the ground) for server::foul_cycles
cycles.
c3) if the foul succeeded:
the referee detects the foul with probability
foul_detect_probability.
=> free kick for other team
c4) if the referee detected the foul AND the dangerous
conditions specified in the previous section are met:
=> yellow card to the player AND free kick for other team
c5) if the referee detected the foul AND the dangerous
conditions are met AND the ball is in the penalty area
where its side is same as the penalized player's side
=> yellow card to the player AND indirect free kick for
other team
c6) if player has two yellow cards:
=> red card to the player AND the player is disconnected
from the Soccer Server
* Red and Yellow cards. If an intentional and dangerous foul is
detected, the referee penalizes the player and sends the yellow/red
card message toclients. The message format is similar to playmode
messages. Side and uniform number information of penalized player
are appended to the card message:
(referee TIME yellow_card_[lr]_[1-11])
or
(referee TIME red_card_[lr]_[1-11])
* Foul information in sensory messages.
- Players can receive their idling cycles caused by intentional
foul and their card status every cycle by sense_body
message. These information are appended after the previous
format and are sent only to v14 or later clients.
(sense_body TIME ....
...
(foul (charged CYCLE) (card {none|yellow|red})))
CYCLES is the number of cycles the current idling will last
for, with 0 indicating that the player isn't idling.
As well as sense_body message, players can receive all players'
foul information by fullstate message:
(fullstate TIME ...
...
((p {l|r} <unum> [g] <player_type_id>)
<pos.x> <pos.y> <vel.x> <vel.y> <body_angle> <neck_angle>
[ <point_dist> <point_dir>]
(<stamina> <effort> <recovery> <capacity>)
[t|k|f] [y|r])
...
The character 'f'(indicates player is lying on the ground),
'y'(indicates yellow card) or'r '(indicates red card) are
appended to each player information.
- Coaches can receive all players' idling and card status by
see_global message. These information are sent only to v14 or
later clients. As well as player's fullstate message, 'f', 'y'
or 'r' are appended to each player information as follows:
((p "TEAM" UNUM[ goalie]) X Y VX VY BODY NECK[ ARM][ {t|k|f}][ {y|r}])
- New player state flags, FOUL_CHARGED, YELLOW_CARD and RED_CARD,
are introduced to record/send players' status to game log or
monitor clients.
* Introducing heterogeneous goalie. Online coaches now can change
the player type of goalie. The 'catchable_area_l_stretch' variable
is added to each heterogeneous player type. The value is
caluculated as follows:
double delta = random( player::catchable_area_l_stretch_min,
player::catchable_area_l_stretch_max );
catchable_area_l_stretch = delta;
As a trade-off, such a goalie would have a reduced catch success
reliability according to:
double default_catchable_area_l = server::catchable_area_l;
double this_catchable_area_l = default_catchable_area_l * catchable_area_l_stretch;
if ( ball_pos is inside the default catch area )
{
// goalie catches the ball with probability server::catch_probability
}
else if ( ball_pos is beyond the stretched area )
{
// goalie definitely misses the ball
}
else
{
double ball_relative_x = ( ball_pos - goalie_pos ).rotate( -(goalie_body + catch_dir) ).x;
double catch_prob
= server::catch_probability
- server::catch_probability * ( ball_relative_x - server::catchable_area_l )
/ ( this_catchable_area_l - default_catchable_area_l );
// goalie catches the ball with probability catch_prob
}
And, now, the information of goalie's player type id is sent to
players with fullstate message. If players connect as v14 or later
client, they can receive the following player information in the
fullstate message:
(p {l|r} <unum> [g] <player_type_id>)
* Introducing heterogeneous kick power rate. The variable of
'kick_power_rate' and 'foul_detect_probability' are added to each
heterogeneous player type. These values are calculated as follows:
delta = random( player::kick_power_rate_delta_min,
player::kick_power_rate_delta_max )
kick_power_rate = server::kick_power_rate + delta
foul_detect_probability = server::foul_detect_probability
+ player::foul_detect_probability_delta_fact * delta
In this trade-off, we assume that a player who is rather strong
(and, thus, can shoot very strongly), is not very smart (and, thus,
cannot very well deceive the referee when doing a foul).
Since the introduction of foul is a new feature to be added, we do
*not* change the kick power rate actually in v14 in order to
provide a migration period to teams. So, the above parameters are
set to 0. These parameters will be changed in v15 or later.
* Golden goal option. The new switch option, 'server::golden_goal',
determines when the game finishes in extra halves. If
server::golden_goal is true and the goal is scored in extra
halves, the game finishes immediately. If server::golden_goal is
false, the game is continued during all extra halves even if the
goal is scored. This option is introduced to enable more flexible
competition scheme.
[13.2.2]
* Fixed a bug of the player clearance from the ball.
* Fixed a bug of the back passer update in the referee module.
* Fixed a bug that offense side players are cleared from the ball
in back_pass_? and catch_fault_? playmode.
[13.2.1]
* Added the missing comma in CSVSaver. Thanks go to Andreas
Hechenblaickner for reporting the problem.
[13.2.0]
* Changed parameters:
- server::synch_see_offset (30 -> 0)
- server::pen_max_extra_kicks (10 -> 5)
- server::pen_before_setup_wait (30 -> 10)
- server::pen_ready_wait (50 -> 10)
- server::pen_setup_wait (100 -> 70)
- server::pen_taken_wait (200 -> 150)
* Fixed a timer bug of the penalty kick referee.
[13.1.1]
* Fixed a bug of the indirect free kick referee.
* Fixed incorrect online coach names for result savers. Thanks
go to Andreas Hechenblaickner for reporting the problem.
* Fixed gcc-4.4 compilation problems. Thanks go to Hedayat Vatankhah
providing the patch.
[13.1.0]
* Fixed a defect of a new dash model. Now, a dash direction is
discretized before calculating a dash power effectiveness.
For example, if server::dash_angle_step is 90, the command
"(dash 100 40)" is equivalent to "(dash 100 0)" and the command
"(dash 100 46)" is equivalent to "(dash 100 90)". Thanks go to
Holger Endert for reporting the problem.
* On Cygwin, replaced the player command parser generated by
flex/bison with the hand-coded parser, in order to avoid the
defect of Cygwin's flex/bison.
* The configure script supported the FLEX environment variable, that
can specify a certain flex command location.
[13.0.2]
* Fixed a ball catcher bug that causes a strange penalty shoot outs
play. Thanks go to Ke Shi for reporting the problem.
[13.0.1]
* Fixed build problems with bison 2.4
* Fixed defects on FreeBSD and MacOSX.
* Supported cygwin.
* Changed the default configuration file location on Windows. Now,
configuration files are generated under the rcssserver's working
folder.
* Fixed defects of the directory creation. Now, rcssserver can
create a nested directory for configuration files or log files.
* Fixed defects of the team graphic broadcasting. Now, team graphic
messages are sent to all monitors connected after coaches.
* Now, an offline coach receive an error messag if an offline
coach tries to connect without coach mode.
* Added a header line to the first CSVSaver output.
[13.0.0]
* RCSSBase is now integrated into RCSSServer. It is not necessary
for you to install RCSSBase before the RCSSServer installation.
* New parameters:
- server::stamina_capacity (default value: 148600.0)
- server::max_dash_angle (default value: 180.0)
- server::min_dash_angle (default value: -180.0)
- server::dash_angle_step (default value: 90.0)
- server::side_dash_rate (default value: 0.25)
- server::back_dash_rate (default value: 0.5)
- server::max_dash_power (default value: 100.0)
- server::min_dash_power (default value: -100.0)
* Changed parameters:
- server::stamina_max (4000 -> 8000)
- server::max_back_tackle_power (50.0 -> 0.0)
- server::extra_half_time (300 -> 100)
- server::player_speed_max (1.2 -> 1.05)
- server::player_speed_max_min (0.8 -> 0.75)
- server::extra_stamina (0.0 -> 50.0)
- player::player_decay_delta_min (-0.05 -> -0.1)
- player::extra_stamina_delta_max (100.0 -> 50.0)
- player::effort_mix_delta_factor (-0.002 -> -0.004)
- player::effort_man_delta_factor (-0.002 -> -0.004)
- player::new_dash_power_rate_delta_min (-0.0005 -> -0.0012)
- player::new_dash_power_rate_delta_max (0.0015 -> 0.0008)
* Changed a stamina model. The new parameter
server::stamina_capacity defines the maximum recovery capacity for
each player. When player's stamina is recovered during the game,
his stamina capacity is also consumed. If the player's stamina
capacity becomes 0, his stamina is never recovered and he can use
only his extra stamina. The recovery policy of the stamina
capacity is as follows:
- normal halves
The stamina capacity is reset to the initial value just after
the kick off as well as the other stamina related variables.
- extra halves and penalty shootouts
The stamina capacity is reset to the initial value just after
normal halves if the game is not over, but is never recovered
at the half time and before the penalty shootouts.
If server::stamina_capacity is set to a negative value, players
have an infinite stamina capacity. This setting makes the new
stamina model completely same as the old stamina model.
* Changed a dash model. Players can now add the dash direction as
the second argument of his dash command:
`(dash <power> <dir>)'
The dash direction is relative to player's body angle (or reverse
side angle if dash power is negative value) and is restricted
within [server::min_dash_angle,server::max_dash_angle]. The dash
power effectiveness is affected by the magnitude of dash
angle. Players can dash in direction of their body (or reverse
side angle if dash power is negative) using 100% of power, in
backward with server::back_dash_rate(0.5) of power and in sideward
with server::side_dash_rate(0.25) of power. The dash power
effectiveness will increase between sides and body direction from
server::side_dash_rate(0.25) to 1.0 and between sides and backward
from server::side_dash_rate(0.25) to server::back_dash_rate(0.5).
dir_rate = ( fabs( dir ) > 90.0
? back_dash_rate - ( back_dash_rate - side_dash_rate )
* ( 1.0 - ( fabs( dir ) - 90.0 ) / 90.0 )
: side_dash_rate + ( 1.0 - side_dash_rate )
* ( 1.0 - fabs( dir ) / 90.0 ) );
Please note that server::min_dash_power will be set to 0 in the
future simulator (v14 or later). This means the negative dash
power will be forbidden completely.
In order to balance with older binaries and to enable flexible
settings, server::dash_angle_step parameter has been
introduced. This parameter defines the discreteness of player's
dash direction. If server::dash_angle_step is 90.0, players can
dash only in four directions (forward, backward and two
sidewards).
* Changed heterogeneous player parameters. Now, heterogeneous
players' dash speed become slower.
* Forbad a backward tackle. Now, server::max_back_tackle_power is
set to 0. This means the tackle command directed to 180.0 degree
has no effect.
* Changed an overtime length. Now, the default overtime length
is set to 1000 cycles.
* Supported a protocol version 13.
- All new parameters are sent to v.13 or later clients.
- server::extra_half_time parameter is now sent to v.13 or later
clients.
- Version 13+ players and coaches can see players' kicking state.
When players can see another players team, they can also see if
that player is kicking via a `k' flag as follows:
`((p "<TEAMNAME>" <UNUM>) <DIST> <DIR> <DISTCHG> <DIRCHG>
<BDIR> <HDIR> [<POINTDIR>] [{t|k}])'
`((p "<TEAMNAME>") <DIST> <DIR> [<POINTDIR>] [{t|k}])'
Coach visuals now can indicate if a player is kicking via a `k'
flag as follows:
`((p "<TEAMNAME>" <UNUM>) <X> <Y> <VEL_X> <VEL_Y> <ANGLE>
<NECK_ANGLE> [<ARM_DIR>] [{t|k}])'
If an observed player is tackling, the kicking flag is always
overwritten by the tackle flag.
Please note that the kicking state can be seen within one cycle
just after kicking.
- The stamina capacity information is added to sense_body message
as follows:
`(stamina <STAMINA> <EFFORT> <CAPACITY>)`
* Supported a monitor protocol version 4 and a game log format
version 5. In these versions, players' stamina capacity
information are contained in each player data. Now, these versions
are used by default.
* Now, stoppage time information is recorded in the text log(.rcl)
files.
* Supported the environment variable RCSS_CONF_DIR. With this
variable, you can specify the default location of configuration
files.
[12.1.5]
* Fixed build problems with boost::system.
[12.1.4]
* Fixed library dependencies and a problem in 64bit platforms.
Thanks go to Hedayat Vatankhah for providing the patches.
[12.1.3]
* This release is the version for the final round of RoboCup2008.
* Added new parameter, server::extra_half_time(default: 300). This
parameter changes the length of each extra half. Please note that,
at least in this release, rcssserver never send
server::extra_half_time to v.12 or older clients via the
server_param message.
[12.1.2]
* Fixed gcc 4.3 compilation problems. Thanks go to Hedayat Vatankhah
for providing the patch.
* Fixed gcc 4.4 warnings.
[12.1.1]
* Fixed an endless loop bug in the collision check with goal
posts. Thanks go to Alexander Burger for reporting the
problem.
* Fixed defects of the back pass rule.
- Now, the back pass rule does not apply if goalie catches the
ball after his own kick but the previous ball kicker is an
opponent player and both kicks are performed within the same
play_on period.
- Now, the back pass rule applies if a teammate player holds the
ball and kicks the ball just after goalie's catch in the same
cycle.
- Fixed a defect of timer count when trainer changes the playmode.
[12.1.0]
* Slightly changed the game log format version 4. Now, players'
pointing points are recorded by the global value of left-hand
coordinate system.
* The size of team_graphic image can be smaller than 256x64. Any xpm
graphic that the size is 8*m x 8*n (0<m<=32,0<n<=8) is acceptable.
* Now, team_graphic messages are always recorded in the game log
file as msg info.
* Now, the game date and result are recorded at the end of the game
log file as msg info.
* Fixed a defect of log file flushing.
* Disabled the stdoutsaver by default. Instead, the rcsoccersim
script will try to load the stdoutsaver module.
* Fixed an incorrect result message of penalty shootouts in
stdoutsaver.
[12.0.1]
* Fixed a change_view command bug in the synchronous mode. Thanks go
to Tobias Springenbergr for reporting the problem and providing
the patch.
[12.0.0]
* Supported the monitor protocol version 3 and the game log format
version 4. Now, these are used by default.
* Fixed a build problem on some platforms.
[12.0.0_pre-20080210]
* New parameter:
- server::synch_see_offset (default value: 30)
* Renamed parameter:
- server::min_tackle_power -> server::max_back_tackle_power
(default value: 50.0)
* Changed parameters:
- server::tackle_power_rate (0.0135 -> 0.027)
- server::tackle_back_dist (0.5 -> 0.0)
- server::tackle_width (1.0 -> 1.25)
* New command:
- "(synch_see)"
All version players can use this command. If the command is
accepted, rcssserver sent a reply message, "(ok synch_see)".
This command is used for a synchronous mode describing below.
* Changed a see message timer. There are 2 modes for all players,
the asynchronous mode and the synchronous mode. The asynchronous
mode is completely same as v.11 or older timer and is a default
mode for all players including v.12 players. If players send the
"(synch_see)" command, they enter to the synchronous mode and
cannot return to the asynchronous mode. v.11 or older players
also can use this command and the synchronous mode.
In the synchronous mode, the "low" view quality cannot be used and
the following view width are available:
| mode | view width(degree) | see frequency |
| narrow | 60 | every cycle |
| normal | 120 | every 2 cycles |
| wide | 180 | every 3 cycles |
In all view modes, rcssserver send see messages at
server::synch_see_offset(30) ms from the beginning of the cycle.
Each view width can be calculated as follows:
narrow: 60 = visible_angle(90) * send_step(150) / sim_step(100)
normal: 120 = narrow * 2
wide: 130 = narrow * 3
* Changed a tackle model for v.12 players based on the Thomas
Gabel's proposal. Now, the argument of the tackle command sent by
v.12 players means the ball acceleration angle relative to the
player's body angle. Effective power for tackle(angle) is
calculated as follows:
eff_power = ( max_back_tackle_power
+ ( max_tackle_power - max_back_tackle_power )
* ( 1 - fabs( angle )/PI ) )
* tackle_power_rate
* Changed a tackle power restriction rule for the v.11 or older
players as follows:
power = max( -max_back_tackle_power,
min( max_tackle_power, power ) )
This means a tackle power is restricted within [-50,100] in the
default settings. Note that a backwards tackle might be completely
forbidden (max_back_tackle_power is set to 0) in the v.13 or later
simulator.
* Added a tackle power reduction according to the ball position as
follows:
eff_power *= 1 - 0.5*( fabs( player_2_ball.th() )/PI
* Changed a kick noise model. This change is motivated by the Mehrab
Norouzitallab's proposal. Now, the maximum kick noise is directly
proportional to the kick power, the ball distance, the ball
direction and the ball speed. When the kick power is 0, the kick
noise becomes always 0.
pos_rate = 0.5 + 0.25*( dir_diff/PI + dist_2_bal/kickable_margin )
For tackle: pos_rate = 0.5 + 0.5*( 1.0 - tackle_prob )
speed_rate = 0.5
+ 0.5*( ball_speed / (ball_speed_max*ball_decay) )
max_rand = kick_rand
* ( power / max_power )
* ( pos_rate + speed_rate )
kick_noise = polar2vector( rand( 0, max_rand ),
rand(-PI,PI) )
* Added an automatic version check for configuration files. If
configuration files do not contain a version parameter that is
same as the rcssserver's release version, rcssserver will exit
with error messages.
* (Not fixed yet) Supported the monitor protocol version 3 and the
game log format version 4. From these versions, data is
represented by human readable text messages. The default version
of game log format is still 3 in 12.0.0_pre-20080210 because the
format has not been fixed yet and the implementation has not been
completed yet.
* (Test version) Introduced a new catch model based on the
Sebastian Marian's proposal. The catch probability is set to
unreliable catches. If ball is not within the goalie's reliable
catch area, the catch probability is calculated according to the
ball position and the goalie's catch command might be failed.
Note that this rule is not actually used in the default
settings of v.12 server. If you try to test this rule, you need
to change the server::catchable_area_l(default value: 1.2)
parameter to the value greater than
server::reliable_catch_area_l(default value: 1.2). And
server::min_catch_probability(default value: 1) also need to be
change to [0, 1]. RCSSServer can read these parameter from
server.conf, but does not send them to clients.
[12.0.0_pre-20071217]
* Supported a protocl version 12. Now, players and coaches can
connect as a version 12 client. In the version 12 protocol,
- Players can change view width only to normal or wide and cannot
change the view quality. Instead of them, players can receive
see messeage at the begining of every cycle if their view width
is normal. If players' view width is wide, see message is
received once every two cycles. The new message arrival order is
as follows: