2018-08-25 Daigo Moriwaki * [shogi-server] Support a graceful shutdown. A file named "STOP" in the base directory prevents the server from starting new games including Floodgate matches. (Closes #38544) 2018-04-07 Daigo Moriwaki * [shogi-server] Give more penalty on assigning matches with same players. (Closes #38178) 2017-09-03 Daigo Moriwaki * [shogi-server] Write game results in categorical files The shogi-server now writes down game results in the following files, depending on a game class: - 00LIST: all games - 00LIST.floodgate: floodgate games - 00LIST.others: non-floodgate games (Closes #37492) 2017-09-02 Daigo Moriwaki * [shogi-server] Write more game results in record files As the CSA Record Format standard states, "%TIME_UP" and "%SENNICHITE" are now recorded in CSA files when a game ends for timed up or sennichite respectively. (Closes #37490) * [shogi-server, mk_game_results, mk_rate] Change schema to add number of moves The format of an internal game result summary file, '00LIST', has been changed to add number of moves of a game, which would be of help for a script calculating rating scores. (Closes #37491) * Update Revision to 20170902 2017-02-26 Daigo Moriwaki * utils/csa-filter.rb: Allow csa-filter.rb to filter games by a winner or loser New command lines, --winner or --loser , are now supported to supply extra filtering conditions. Note that each filter is combined as AND condition. E.g. - % ./csa-filter.rb ~/Downloads/20160314 --white gpsfish_xeon --loser gpsfish_xeon - % ./csa-filter.rb ~/Downloads/20160314 --white gpsfish_xeon --winner gpsfish_xeon (Closes #37023) 2016-12-11 Daigo Moriwaki * Update Revision to 20161211. * Fix Dockerfile. 2016-12-09 Daigo Moriwaki * Allow util/statistics.rb to set a filtering condition of found files Regarding util/statistics.rb, add a new command line option, --filter regexp, to process files that are matched with a regexp. It would make it easier to calculate statistics of certain games. (Closes #36855) 2016-11-26 Daigo Moriwaki * [shogi-server] Allow to customize maximum lenght of a login indentifier (Closes #36821) - The current maximum length of a login identifier is 32. Some private uses require longer player names to distinguish each other by specifying randomly generated tokens. It would of help to add a new command line option --max-identifier to overwrite the default maximum length. * Build a Docker image for Shogi-server (Closes #36822) - Build a Docker image % make image-build - Running a local shogi-server would look like % docker pull shogiserver/shogiserver % docker run -p 4081:4081 -v `pwd`/logs:/logs shogiserver/shogiserver * [shogi-server] shogi_server/game.rb: - Remove a debug message 2016-04-09 Daigo Moriwaki * utils/eval_graph.rb - Support Fischer time control. * [shogi-server] Bump up the revision to 20160409. 2016-04-02 Daigo Moriwaki * [shogi-server] Support Fischer Time Control (Closes #36230) - Fischer time control means that: Before a player has made their move, a specified time increment is added to their clock. Time can be accumulated, so if the player moves within the delay period, their remaining time actually increases. (https://en.wikipedia.org/wiki/Chess_clock) - New syntax of game names: An 'F' suffix denotes a Fisher time in seconds. For example, "floodgate-600-10F" specifies + A floodgate game + Total allotted time is 600 seconds for each player + 10-second increment before a player's move in a Fischer way - The server now proposes game conditions upon a game start with - "Protocol_Version 1.2" - "Increment:" for Fischer Time Control - Kifu files can include the following comment for Fischer Time Control: - "'Increment:" * [shogi-server] Fix some lint warnings. 2015-12-13 Daigo Moriwaki * [shogi-server] Enhance capability of Floodgate configuration file - New parameter: Max_Moves, defined in the CSA protocol ex. set Max_Moves 256 - New parameter: Least_Time_Per_Move, defined in the CSA protocol ex. set Least_Time_Per_Move 0 - Proposed messages distributed to each player upon starting a new game will include Max_Moves as well as Least_Time_Per_Move. - CSA files produced by the server will include settings of Max_Moves and Least_Time_Per_Move in comment lines as follows: 'Max_Moves:256 'Least_Time_Per_Move:0 - The official Shogi-server on wdoor.c.u-tokyo.ac.jp will be running with different parameters, depending on game names. a) Max_Moves will be 256 for floodgate-600-10 games; otherwise, 0. b) Least_Time_Per_Move will be 0 for floodgate-600-10 games; otherwise 1. (Closes: #35839) * [shogi-server] shogi_server/pairing.rb: - LeastDiff attempts more trials, depending of a number of players to be matched, top achieve more optimized matching combinations. 2015-11-27 Daigo Moriwaki * [shogi-server] shogi_server/time_clock.rb: - A time consumed could be -1. * The start time of a move is captured after sending a move to a player of the next turn at the end of the giant lock * The end time of the move is captured at the exact time when the server receives it before the giant lock Therefore, end_time < start_time is possible when a player returns a move instantly. Thanks to Tomoyuki Kaneko for reporting this issue. (Closes: #35795) 2015-02-14 Daigo Moriwaki * util/statistics.rb: - Updated to investigate floodgate-600-10 games. Consult the result at http://www.sgtpepper.net/hyspro/diary/20150214.html. - Added a companion R script: histogram.R 2015-02-01 Daigo Moriwaki * [shogi-server] - shogi_server/login.rb: When players are logged in, log their player_id if they have it. 2015-01-20 Daigo Moriwaki * [mk_rate] - Getting an absolute path of this file was wrong if it was a symbolic link. This issue has been addressed. * [mk_html] - Links to details pages for players now use a relative path so that it works on a testing site. 2015-01-17 Daigo Moriwaki * [shogi-server] - shogi-server, shogi_server/{command,game_result,player}.rb: The change at 2014-10-13 was not worked as expected. Reworked. A player, attempting to login with the current live player stalling for more than a day, can forcibly override the current player. 2015-01-12 Daigo Moriwaki * [shogi-server] - shogi_server.rb: Follow an API change in a upstream class: LogDevice.previous_period_end 2014-12-27 Daigo Moriwaki * [shogi-server] - When a non-rated player participates in Floodgate, the following exception was thrown and a Floodgate game would not start: undefined method `[]' for nil:NilClass ["/home/shogi-server/www/x/shogi_server/pairing.rb:499:in `block in calculate_diff_with_penalty'" This issue has been resolved. Only players who have player ID (i.e. those who log in with valid password) are now allowed to participate in Floodgate as the spec web page [http://shogi-server.sourceforge.jp/rating.html] describes. 2014-12-23 Daigo Moriwaki * [shogi-server] - Addressed Ruby incompatibility on ShogiServer::Usi::alphabetToDan. It (and usiToCsa.rb) did not work with Ruby 1.9.3. This issue has now been fixed. Thanks to Hiraoka-san for debugging. 2014-12-18 Daigo Moriwaki * utils/eval_graph.rb: - Gnuplot 4.6.6 drew evaluation-value lines with a dashed style. This issue has now been addressed so that solid lines are used. 2014-11-30 Daigo Moriwaki * [mk_html] - Corrected a url. 2014-11-24 Daigo Moriwaki * Ruby 2.0: - Ruby 2.0.0 or later is recommended to use with shogi-server since Ruby 1.8 reached its End-of-Life on the end of July, 2014. * [shogi-server] - Addressed a warning of duplicated range in a regular expression. 2014-10-13 Daigo Moriwaki * [shogi-server] - A player, attempting to login with the current live player stalling for more than a day, can forcibly override the current player. - Kifu record files now includes rating scores of players at the time when games start. Previously, for rating games, a record file includes player IDs of both players with a line starting with "'rating". Now it also shows rating scores for players who have valid scores. The formats for black and white players are as follows: 'black_rate:: 'white_rate:: A sample output: 'rating:Test_sente+275876e34cf609db118f3d84b799a790:Test_gote+275876e34cf609db118f3d84b799a790 'black_rate:Test_sente+275876e34cf609db118f3d84b799a790:2763.0 'white_rate:Test_gote+275876e34cf609db118f3d84b799a790:2345.0 2014-10-12 Daigo Moriwaki * [shogi_server] - New feature: max moves - New command line option: --max-moves n When a game with the n-th move played does not end, make the game a draw (default 256 in compliance with CSA Protocol V1.2 or later). Setting 0 disables this feature for CSA Protocol V1.1.2 or before. - Players will receive a new message, "#MAX_MOVES", upon an end of such a game: #MAX_MOVES #CENSORED - A new log summary type, "max_moves", has been assigned for games drawing with max moves. 'summary:max_moves:name_sente draw:name_gote draw - Least time per move: - New command line option: --least-time-per-move n This option specifies a least time in second per move, which is 0 second by default, meaning that a decimal fraction of time for a move will be truncated in compliance with CSA Protocol V1.2 or later. Set 1 for CSA Protocol V1.1.2 or before. 2014-07-19 Daigo Moriwaki * [mk_rate] - Added a new option, --abnormal-threshold n: Games that end with the 'abnormal' status are counted in win/lost games for the rating calculation if a game plays more than n plies. Otherwise (or if n is zero), abnormal games are counted out of rating games. 2014-01-07 Daigo Moriwaki * [shogi-server] - Released: Revision "20140107" 2013-12-29 Daigo Moriwaki * [shogi-server] - Previously, parameters in Floodgate time configuration file were not applied to actual instances. This issue has been fixed. 2013-12-21 Daigo Moriwaki * [shogi-server] - shogi_server/pairing.rb: Impose penalty on matches between likely kin players. 2013-12-15 Daigo Moriwaki * [webserver] - Listen on only IPv4 explicitly. Under ruby 1.9.3p194, without any bind addresses, ruby attempts to listen on both "0.0.0.0" and "::". Specifying "::" on Linux leads to listen on both IPv4 and IPv6, which results in a warning message saying "Address already in use - bind(2)". * [shogi-server] - Released: Revision "20131215" 2013-12-14 Daigo Moriwaki * [usiToCsa] - Added a new program, bin/usiToCsa.rb, which is a bridge for a USI engine to connect to the Shogi-server. - bin/usiToCsa is a sample wrapper script. 2013-12-13 Daigo Moriwaki * [shogi-server] - shogi_server/league/floodgate_thread.rb: - Added a log message. 2013-12-08 Daigo Moriwaki * [shogi-server] - shogi-server/shogi_server/pairing.rb: - Modified comment for LeastDiff match. - Changed log messages and levels. 2013-12-07 Daigo Moriwaki * [shogi-server] - shogi_server/pairing.rb, player.rb: Simplify estimated rate of unrated players (less memory). - Enhanced syntax of Floodgate time configuration file. Now it supports "set sacrifice "; it sets a sacrificed player for a specific Floodgate game. ex. set sacrifice gps500+e293220e3f8a3e59f79f6b0efffaa931 2013-12-05 Daigo Moriwaki * [shogi-server] - Added a new pairing method, ShogiServer::ExcludeUnratedPlayers, which filters out unrated players. - Enhanced syntax of Floodgate time configuration file. Now it supports "set pairing_factory "; it sets a factory function name generating a pairing method which will be used in a specific Floodgate game. ex. set pairing_factory floodgate_zyunisen - Implemented conversion of move representation between CSA format and USI one. 2013-11-24 Daigo Moriwaki * [shogi-server] - shogi_server/league/floodgate.rb: Improved robustness against empty file under ruby 1.9.3p194 - shogi-server: - Previously, reloading in daemon mode failed on ruby 1.9.3p194. This issue has been fixed. - Listen on only IPv4 explicitly. Under ruby 1.9.3p194, without any bind addresses, ruby attempts to listen on both "0.0.0.0" and "::". Specifying "::" on Linux leads to listen on both IPv4 and IPv6, which results in a warning message saying "Address already in use - bind(2)". * [mk_game_results] - Fixed for reading Japanese comments under ruby1.9.3p194. * mk_rate-from-grep, mk_rate-grep: - Removed files that are no longer used. 2013-11-23 Daigo Moriwaki * [mk_rate] - gsl library may be provided as a gem - Now duplicated inputs are checked and skipped. * test/TC_floodgate.rb - Improved randomness check so that it works on Ruby 2.0.0 as well 2013-11-04 Daigo Moriwaki * [mk_rate] - Added a new option, --ignore, which is imported from mk_rate-from-grep. * [mk_game_results] - Flush after each output line. * Rleased: Revision "20131104" 2013-09-08 Daigo Moriwaki * [shogi-server] - shogi_server/{game,time_clock}.rb: When StopWatchClock is used, "Time_Unit:" of starting messages in CSA protocol supplies "1min". 2013-04-07 Daigo Moriwaki * [shogi-server] - shogi_server/{game,time_clock}.rb: Adds variations of thinking time calculation: ChessClock (current) and StopWatchClock (new). StopWatchClock, which is usually used at official games of human professional players, is a clock where thiking time less than a miniute is regarded as zero. To select StopWatchClock, use a special game name with "060" byoyomi time. ex. "gamename_1500_060". 2013-03-31 Daigo Moriwaki * [shogi-server] - %%FORK command: %%FORK [] [] The new_buoy_game parameter is now optional. If it is not supplied, Shogi-server generates a new buoy game name from source_game. - command.rb: More elaborate error messages for the %%GAME command. 2013-03-20 Daigo Moriwaki * [shogi-server] - New pairing algorithm: ShogiServer::Pairing::LeastDiff This pairing algorithm aims to minimize the total differences of matching players' rates. It also includes penalyties when a match is same as the previous one or a match is between human players. It is based on a discussion with Yamashita-san on http://www.sgtpepper.net/kaneko/diary/20120511.html. 2013-02-23 Daigo Moriwaki * [shogi-server] - New command: %%FORK [] Fork a new game from the posistion where the n-th (starting from one) move of a source game is played. The new game should be a valid buoy game name. The default value of n is the position where the previous position of the last one. - The objective of this command: The shogi-server may be used as the back end server of computer-human match where a human player plays with a real board and someone, or a proxy, inputs moves to the shogi-server. If the proxy happens to enter a wrong move, with this command you can restart a new buoy game from the previous stable position. ex. %%FORK server-denou-14400-60+p1+p2+20130223185013 buoy_denou-14400-60 2012-12-30 Daigo Moriwaki * [shogi-server] - Backported a5c94012656902e73e00f46e7a4c7004b24d4578: test/TC_logger.rb depeneded on a specific directory where it was running on. This issues has been fixed. - Backported 87d145bd1f1a14a33f5f6fbc78b63a1952f1ca90 and 2df8c798aeb7f0e77735e893fd1370c2c6f15c4d: shogi_server/floodgate.rb: Generating next time around the new year day by reading configuration files did not work correctly. This issue has been fixed. 2012-12-28 Daigo Moriwaki * [shogi-server] - shogi_server/pairing.rb: + There was a bug in the logic avoiding human-human match. This issue has been fixed. + Improved the logic avoiding human-human match. Human-human matches will less likely happen. 2012-01-07 Daigo Moriwaki * [shogi-server] - Added shogi_server/compatible.rb, which implements compatible methods and allows Ruby 1.8.7 to run the server. - test/TC_floodgate.rb failed with Ruby 1.8.7. This issue has been fixed. - test/TC_uchifuzume.rb did not run with Ruby 1.8.7. This issue has been fixed. - test/TC_league.rb failed with Ruby 1.8.7. This issue has been fixed. * csa-file-filter,mk_game_results,mk_html,mk_rate: - Updated documents in the command files. Both Ruby 1.9.3 and 1.8.7 are supported. - Make their shebang consistent (/usr/bin/ruby1.9.1) * README: - Both Ruby 1.9.3 and 1.8.7 are supported. * Renewed year of copyright notice in each file. 2012-01-06 Daigo Moriwaki * [shogi-server] - test/TC_logger.rb depeneded on a specific directory where it was running on. This issues has been fixed. 2012-01-01 Daigo Moriwaki * [shogi-server] - shogi_server/floodgate.rb: Generating next time around the new year day by reading configuration files did not work correctly. This issue has been fixed. 2011-12-18 Daigo Moriwaki * [shogi-server] - shogi_server/board.rb, piece.rb: Refactoring to cache OU pieces, which was inspired by 81SquareShogi-server's change (74b24b88c843f1dd767412475b117481d1d5e8eb). - Added shogi-server-profile to take profile of shogi-server. * [mk_rate] [mk_game_results] - Supports Ruby 1.9.3. 2011-12-12 Daigo Moriwaki * [shogi-server] - Support Ruby 1.9.3. - Result of test/benchmark.rb - Environment: - CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ - RAM: 4GB - OS: Debian Squeeze - ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux] - ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux] - Server: ruby1.8 (or ruby1.9.1) ./shogi-server hoge 4000 - Clients: ruby1.8 (or ruby1.9.1) -d ./benchmark.rb csa/wdoor+floodgate-900-0+gps_normal+gps_l+20100507120007.csa 20 - Scores in seconds: (the smaller, the better) clients 1.8.7 1.9.3 server 1.8.7 20 sec 21 sec 1.9.3 26 sec 27 sec 2010-10-06 Daigo Moriwaki * [shogi-server] - mk_rate: the usage was not updated. Thanks to Hoki-san to report this issue. (Closes: #23358) 2010-09-18 Daigo Moriwaki * [shogi-server] - shogi_server/board.rb, game.rb: For hadicapped games, wrong initial positions were delivered to players and monitors. This issue has been fixed. (Closes: #23245) Thanks to HIDETCHI for reporting the issue. 2010-09-05 Daigo Moriwaki * [shogi-server] - shogi_server/login.rb: Enhanced the CSA Login mode. Logging in the server with the CSA mode, users are now allowed to specify a turn preference in an enhanced gamename string which looks like -