news
来自「在LINUX下运行的仿真机器人服务器源代码」· 代码 · 共 1,658 行 · 第 1/5 页
TXT
1,658 行
understood by the MySQLSaver, their default values and a brief description: +-------+---------+---------------------------------------------+ | Param | Default | Description | +=======+=========+=============================================+ | host | "" | The host name of IP of the machine running | | | | the MySQL database. An empty string | | | | indicates that the localhost will be used. | +-------+---------+---------------------------------------------+ | user | "" | The username to use connecting to the | | | | database. The empty string indicates that | | | | current unix username will be used | +-------+---------+---------------------------------------------+ | pass | "" | The database password for the user being | | | | used. | +-------+---------+---------------------------------------------+ | db | "" | The name of the database to use. An empty | | | | string indicates that that default database | | | | will be used. | +-------+---------+---------------------------------------------+ * Added a result saver that prints the results of the game to stdout in a human readable format. You should not try to parse this with another program, as no guarantees about it's format are made, and it may change from version to version. If you wish to get text results in a parsable format, please create your own module for doing so. * Added support for saving game results via dynamically loaded modules (see below for information about modules). A result saver must inherit from rcss::ResultSaver and on initialisation of the module, it must register with rcss::ResultSaver::Factory factory. An example of how this is done can be seen in stdoutsaver.cpp. * Integrated the new configuration parser in rcssbase. The old configuration file format is no longer supported, but can be easily converted to the new format using the following awk script. awk '/^[ \\t]*$/ {} \ /^[^#]+[:]/ { gsub(/:/, \"=\" ); $1 = \"server::\" $1; } \ /^[ \\t]*[^#:=]+$/ { $1 = \"server::\" $1 \" = true\"; } \ { print; }' \ oldserver.conf > newserver.conf The server uses this technique to read ~/.rcssserver-server.conf if it exists and ~/.rcssserver/server.conf (the new conf file) does not and then save the configuration to ~/.rcssserver/server.conf. This means that most users will be unaffected by the configuration file changes and ~/.rcssserver/server.conf will be created with all their current options. A similar procedure is used for ~/.rcssserver-player.conf and can be used for other player.conf files. You will also need to modify any scripts you have that pass parameters to rcssserver, by replacing -PARAM VALUE with either server::PARAM = VALUE or player::PARAM = VALUE and -sfile FILE and -pfile FILE with include = FILE. * Added support for automatic module loading. Modules can be added or removed by adding them to the module directory (default is /usr/local/share/rcssserver/modules) which can be specified with the module_dir server parameter. On systems where dynamic loading is not supported, or static compilation is used, module loading can be simulated by using the RCSSSERVER_DLOPEN_LIBS option during configure. Custom modules must contain the following line LIBLOADER_EXPORT( libname, init, fin ); Where libname is the name of the library without the file extention (e.g libstdoutsaver) and init and fin are the names of initialisation and finalisation functions for the module. These functions must take not parameters and must return void. Your module must also register (and deregister) it's class(es) with an object factory (this is usually done in the initialisation and finalisation functions), which is used in the server to create instances of the class. Please see the base class's object factory interface for more details. * Added support for coach names in the log file names. The online init command now has the following format: (init TEAMNAME [COACHNAME] [(version X)]) e.g. (init myteam (version 7)) (init myteam mycoach) (init myteam mycoach (version 6)) are all valid online coach init string. At the end of the game, the logfiles are renamed and if the online coach specifies a coachname when it connects, then _COACHNAME is added after the team name. e.g. 200305081101-test_coach_1-vs-test2_coach2_2.rcl is an example of a log file for 'team' vs 'team2', where 'team' had an online coach called 'coach' and 'team2' had an online coach called 'coach2'. * Fixed a defect where pointing players were sent twice in a see message. [9.3.7] * Fixed defect in the sending of team graphics to monitors where the first line of the data was repeated and there was no space between team_graphic_{l|r} and(. Thanks got to Matus Horvath for reporting the problem and providing the patch. * Fixed gcc3.3 compilation problem. [9.3.6] * Fixed defect that caused a segmentation fault when a player reconnected.[9.3.5] * Fixed bug in the handling of ear on/off commands sent by players, where partial and complete where inverted. * To help with future user problems, the server now also outputs at startup the version of rcssbase being used. * Fixed catch_fault_r string which was perviously cacth_fault_r. * Fixed online coach releated seg fault. This may have been caused if a coach tryed to connect after a coach had already connected and disconnected for the same team. * A bug was fixed that was causing nested conditions in CLang to be restructured in logically incorrect way.[9.3.4] * The default values for tackle_dist and tackle_width have been changed to 2.0 and 1.0 respectively. You will either need to change these manually in your ~/.rcssserver-server.conf remove your ~/.rcssserver-server.conf to have the defaults regenerated. * Added constraint such that substitutions are not allowed after the normal and extra halfs have passed. It is thus not possible anymore to make substitutions during or just before the penalty shootouts.[9.3.3] * The rcsoccersim script will now report errors if the server or a monitor cannot be found. The script has also been modifed to use the monitor specified by the RCSSMONITOR enviroment variable as the default monitor (this can be handy of you use your own monitor or wish to change the default to the classic monitor). If RCSSMONITOR is not set, the script will try to use either rcssmonitor or failing that, rcssmonitor_classic. At anytime you can override the default by using the -frameview and -classic options. * Fixed bug where recover_init was sent to v8 players when it shouldn't have been. * Some build problems on OS X have now been fixed. The server seams to work on OS X, if built statically. For dynamic libs to work you will at the very least need to rebuild the libtool and auto* components by running aclocal glibtoolize --force --copy aclocal autoheader automake --add-missing --copy autoconf from the rcssserver directory. There may be other problems that I am unaware of.[9.3.2] * RCSSClient can now be compiled without ncurses on systems that do have ncurses, by using the '--without-ncurses' parameter to configure. * The SED environment variable is now set automatically in the libtool script, during configure. * Fixed crash during initialization of default server paramters on Solaris platforms * RCSServer now will compile with either sstream or strstream, depending on which is available.[9.3.0] * Fixed bug in synch mode that would cause the server to send "think" commands to disconnected clients and wait for a response from them. * Fixed bug in flex usage that would require manual editing of the generated source files on some systems. This bugs would only affect people who are checking out the code from CVS, those editing the .ll files or those rebuilding the generated code for other reasons. * Fixed bug in synch mode that would result in a server crash when clients disconnect. * Fixed bug that allowed kicks and tackles after the end of the match. * Fixed bug where the effort_init server parameter was not set, not used, but sent to players as part of the server param message. * Fixed bug where the recover_init server parameter was not set, not used, but sent to players as part of the server param message. * Added automatic penalty mode. First of all two different server parameters have been added that specify how many halfs are played: nr_normal_halfs (default=2) - number of halfs that are always fully played nr_max_extra_halfs - number of extra halfs when score is a draw golden goal rule applies in these halfs If no goals are scored and the server parameter penalty_shootouts is true, the automatic penalty mode is started. New play modes, messages and server parameters have been introduced: New PlayModes: PM_PenaltySetup_Left/Right (message: penalty_setup_l/r) PM_PenaltyReady_Left/Right (message: penalty_ready_l/r) PM_PenaltyTaken_Left/Right (message: penalty_taken_l/r) PM_PenaltyMiss_Left/Right (message: penalty_miss_l/r) PM_PenaltyScore_Left/Right (message: penalty_score_l/r) Messages: penalty_onfield_l/r penalty_foul_l/r penalty_winner_l/r penalty_draw Server parameters pen_before_setup_wait pen_setup_wait pen_ready_wait pen_taken_wait pen_nr_kicks pen_max_extra_kicks pen_dist_x pen_max_goalie_dist_x pen_allow_mult_kicks pen_random_winner The procedure is as follows 1. The referee announces on which side the penalties will be taken using the message (penalty_onfield_l/r). 2. The ref moves the ball to the penalty mark, which is on a distance of pen_dist_x from the goal. 3. The ref chooses a team to start at random and announces it (penalty_setup_l/r). 4. The referee then waits pen_setup_wait cycles and then checks whether the players are moved according to the following rules: - the defending goalie must move to within goalie_pen_line_dist meter of the goal line and between the posts - the other goalie must move behind the goal line and outside the penalty area line (the only exception is when the goalie takes the penalty) - the defending players and the teammates of the player must move within the center circle. - one of the players of the team that takes the penalty has to move within 2 meters of the position of the ball. One player is not allowed to be the penalty taker again before all eleven players (including the goalie!) have taken a penalty. If after pen_setup_wait cycles one or both teams do not obey the above rules the penalty is over. In case the attacking team makes a mistake, it is counted as a miss, otherwise as a score. If both teams obey the rules, the mode changes to PM_PenaltyReady_Left/Right 5. The attacker then has pen_ready_wait cycles to take the first kick. If one of the rules of 4 is not obeyed during these cycles or the time has elapsed, the penalty is over and is counted as a foul for that team. After this first kick, the play mode changes to PM_PenaltyTaken_Left/Right.. 6. Depending on the server paramater pen_allow_mult_kicks the attacker is now allowed to kick the ball again or not. When the ball is catched or passed the goalline within pen_taken_wait cycles, it is either called a miss or a score (depending where the ball crossed the goalline) immediately. When pen_taken_wait cycles have elapsed without a catch or the ball passing the goalline, it is also called a miss. In case of a miss the play mode changes to PM_PenaltyMiss_Left/Right, otherwise to PM_PenaltyScore_Left/Right. 7. Now it is checked whether one of the teams has won. One of the two teams has won when. - pen_nr_kicks penalties have been played and one team has scored more goals than the other - less than pen_nr_kicks have been played but one of the teams can never get to the score of the other team within pen_nr_kicks - it was a draw after pen_nr_kicks but after an even number of extra penalties sessions (less than pen_max_extra_kicks) one team has scored more goals In the case of a win the message pen_winner_l/r is communicated and the playmode changes to PM_TimeOver. Otherwise when pen_nr_kicks + pen_max_extra_kicks have been played, the game is a draw. Depending on the parameter pen_random_winner the server picks a random winner or not. In the latter case the message pen_draw is communicated. In all other situations, and no team has won yet, the referee goes back to 2 after pen_before_setup_wait cycles. * Changed file format of log files and game logs because of possible automated penalties after a match. The new format is as follows: {date}-{team_l_info}-vs-{team_r_info}.rc[gl] where {team_[lr]_info} looks as follows: {team}_{score}[_{pen_score}[w]] with team: name of the team score: goals scored by this team (excluding penalty goals) pen_score: scored penalty of this team (optional) w: optional winner indication when penalties were also a draw and this team was the random winner (pen_random_winner: on) Possible examples are - normal game without penalties 200303180158-MRB2003_1-vs-UvA_Trilearn_2.rg - with penalties
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?