Your trusted source for computer chess information!

Myrddin

Download

Myrddin 0.83 (released 2/22/10, rated approximately 2000)
This package contains 32-bit and 64-bit executables.

Old versions

Myrddin 0.82 (released 9/26/09, rated approximately 1900-1950)
Myrddin Alpha 2 (released 5/26/09, rated approximately 1600-1700)
Myrddin Alpha 1 (released 3/9/09, rated approximately 1200-1300)


Release Notes

Myrddin 0.83 – 2/22/10

Myrddin is a winboard-compliant chess engine to a reasonable degree. It supports protover 1 primarily to support the Chessmaster interface, and also protover 2.

If you don't know what Winboard is, and you only just want to play against this engine, you can download Winboard-compliant interfaces here:

  • Winboard (the original, but not easy to set up)
  • Arena (very popular and supports both Winboard and UCI communication protocols)

Myrddin plays approximately 2000 ELO against chess engines, and probably 100-200 points higher against humans. This is an improvement of approximately 75 points compared to the previous release.

The following winboard commands are supported:

  • protover
  • xboard
  • new
  • go
  • ?
  • analyze
  • playother
  • setboard (also “loadfen”)
  • force
  • white/black
  • time
  • level
  • hard/easy
  • result
  • undo
  • post/nopost
  • exit
  • quit

Myrddin also supports the following non-winboard commands:

  • “eval” – returns a static evaluation of the current game position
  • “perft N” – standard perft algorithm to calculate the number of leaf nodes of depth N from the current position. Note that Myrddin will not respond to any input until the perft calculation is finished.

Winboard UI notes

– It is crucial that the winboard UI send the “time” command to the engine, as Myrddin does not have an internal clock.
– Post is ON by default, as opposed to the winboard protocol. This is just for debugging convenience and it appears that a lot of engines do it this way anyway.


General Notes

– Evaluation is rather simple: wood counting, piece square tables, pawn structure, VERY rudimentary king safety, rooks behind passers, and some knowledge about minor piece placement in relation to pawns. There's a long way to go here.
– Search is basic alpha/beta, with reasonable extensions and reductions.
– Three commandline parameters are now supported:

  • hash=N – “N” can be any number from 0-1024, and should be a power of 2 (Myrddin will round DOWN if the number is not a power of 2) – default=128
  • kibitz=0/1 – use “1” for online tournament play – default=0
  • logfile=0/1 – use “1” to create a logfile with every engine instance – default=0

– Max search depth is 50.
– The ProDeo opening book is used by kind permission of Ed Schröder.
– Draw claims from the opponent are not supported. Myrddin does, however, claim all draws by rule, as well as checkmate.
– There is enough winboard support to play games on ICS. But without support for “draw” I'm sure there are some scary loopholes and/or exploits.
– When the engine is in analysis mode, positive scores always favor White and negative scores always favor Black. When the engine is thinking or pondering, positive moves favor Myrddin.
– Depth is reported for only the main alpha/beta search; no extension depth of any type is reported. However, if you run Myrddin in console mode, you will see the maximum depth searched, which includes all extensions, reductions and quiescent search.
– Logfiles will be in the “logs” folder below the folder where you ran Myrddin. The output of the log is not very interesting – just PV output and communication reality-check stuff.


Tournament Highlights

ChessWar XIV

Myrddin's first official tournament was in the Promotional division of ChessWar XIV and was rated at 1655 over 11 rounds. Myrddin scored 6.5 points (+5 =3 -3) and placed 51st out of 212 engines rated between 1859 and 812. The median engine rating was 1499. To see the PGN of Myrddin's games and see some comments, read this journal. Much of the development between Alpha 1 and Alpha 2 occurred during this tournament.

OpenWar 6

Myrddin participated in OpenWar 6. This was a round-robin tournament with 92 engines. Myrddin finished in 68th place with 27 points (+22 =10 -59). Myrddin's best “legitimate” results were a win against Firefly (rated about 2050) and a draw against Timea (rated about 2150). It managed to get a win against one of the top 10 (Cippolino) thanks to a crash. It also got two draws against two very strong engines (DanaSah and N2) due to endgame blunders, and a win against another top engine (Tornado) due to a crash. Much of the development for version 0.82 occurred during this tournament, and the last few rounds were played with 0.82.

WBEC Ridderkerk 17

Version 0.82f (unreleased and slightly better than 0.82) participated in the 5th Division of WBEC Ridderkerk 17. There were 84 engines in this division, and the divisionwas broken down into three groups of 28 engines each, each group having a double round-robin tournament. As expected, Myrddin finished in the middle of the pack, in 14th place with 31.5 points out of 54 games (+28 =7 -19).

ChessWar XV

Version 0.82f also participated in the Promotional division of ChessWar XV. This tournament was very similar to Myrddin's first tournament, ChessWar XIV, except there are even more engines (242!). Because Myrddin was at least 300 points stronger than it was eight months previous, it finished in 9th place with 8.0 points (+7 =2 -2). This was a good enough performance to promote to the next division, Myrddin's first promotion. Myrddin now has a bit of a reputation as a very lucky engine, as it got a free point when GnuChess (a typically very stable engine) crashed in a Mate in 3 position. Without that crash, Myrddin would have finished about 20 places lower and would not have promoted.

OpenWar 7

Myrddin is participating in OpenWar 7. This is a round-robin tournament with 76 engines. I'm hoping that Myrddin will place around 55th. But currently Myrddin is in 64th place after 55 rounds, with only 14.5 points (+9 =11 -35). Myrddin's best results so far are draws against the 11th place engine, WaDuuttie, and the 20th place engine, Rotor. Both of these engines are rated 2500+. Its best win is against the 44th place engine, Sungorus, rated 2300+.


Test Suite Results

All tests are run on the 64-bit version on an AMD 9650 Quad 2.3GHz machine (although Myrddin does not support multiple CPUs). All results are for version 0.83. Running all of the below tests takes approximately 16 hours. In the future I will reduce the time on most of these test suites to 10s per move.

WAC (Win at Chess)

300 positions at 10s per position. Almost exclusively tactical positions, many leading to mate. Myrddin finds 283 correct moves (94%) within the time limit. This suite can be found here.

Undermining

100 positions at 1m per position (although the author recommends anywhere between 10s and 7m per position). All positions are pawn moves that “undermine” the opponent's position. 53 correct moves found within the time limit. This test, as well as the next seven in this list, are somewhat unique in the correct moves are given 10 points and each position has several sub-optimal moves that get partial score. Myrddin's total score is 623 out of 1000. You can download this test suite here.

Knight Outposts/Repositioning/Centralization

100 positions at 1m per position. Similar to the Undermining suite. All positions are knight moves. 49 correct moves found within the time limit, and a total score of 639 out of 1000. You can download this test suite here.

Square Vacancy

100 positions at 1m per position. Most moves are Rook or Queen moves to try to gain board control. 51 correct moves found within the time limit, and a total score of 627 out of 1000. You can download this test suite here.

Bishop vs. Knight

100 positions at 1m per position. Test to determine knowledge about whether Bishops or Knights are stronger, typically resulting in a capture of one to retain the other. 63 correct moves found within the time limit, and a total score of 724 out of 1000. You can download this test suite here.

Open Files and Diagonals

100 positions at 1m per position. All sliding piece moves to gain control of a file or diagonal. 52 correct moves found within the time limit, and a total score of 614 out of 1000. You can download this test suite here.

Recapturing

100 positions at 1m per position. Using the correct piece to recapture, plus requiring some understanding of mobility. 55 correct moves found within the time limit, and a total score of 756 out of 1000 (Myrddin got a lot of “partial credit” here, as many of the alternate capturing moves can give close to full credit). You can download this test suite here.

Offer of Simplification

100 positions at 1m per position. Tests understanding that simplifying the position by trading material (or, at least, offering to do so) is the best way to proceed. 43 correct moves found within the time limit, and a total score of 561 out of 1000. You can download this test suite here.

Advancement of ABC Pawns

100 positions at 1m per position. Positions in which advancing an a, b or c pawn is best. 38 correct moves found within the time limit, and a total score of 466 out of 1000. You can download this test suite here.

Advancement of FGH Pawns

100 positions at 1m per position. Positions in which advancing an f, g or h pawn is best. 40 correct moves found within the time limit, and a total score of 530 out of 1000. You can download this test suite here.

O'Kelly

176 positions at 10s per position. Combinative middlegame and endgame suite. Myrddin finds 100 positions (57%) within the time limit. You can download this test suite here.

Eigenmann Endgame Test

100 positions at 1m per position. Myrddin does not do very well at this suite, getting only 16 correct moves within the time limit. You can download this test suite here.

IQ 8.1

182 positions at 10s per position. Challenging tactical suite. Myrddin finds 97 positions (53%) within the time limit. You can download this test suite here.

Personal Test Positions

For a list of (hopefully) interesting test positions that I have accumulated during the development of Myrddin, go here.


FULL DISCLOSURE

The move generation code was “heavily borrowed” from the Chessmaster UI, but I feel that this is not “cloning” as I worked on that title for many years. Also, the code has been improved a fair bit, and is now about 30% faster than the original code.


Version/Change List

Version 0.80 (Alpha 1) (3/9/09)

Initial Release, rated approximately 1200-1300

Version 0.81 (Alpha 2) (5/26/09)

– Reduced move generation time by ~21% (perft 6 on initial position went from 57 to 44 seconds on P4-3.0)
– Search now pings the input command handler every 8K nodes (about 1/30-1/50 second, depending on position and hardware), so applicable commands can now be entered during search/analysis
– Search will allocate extra thinking time when it gets noticeable drop in score
– Evaluation improvements – pawn structure, open and semi-open files for rooks, rooks behind passers, king safety
– Added MVV/LVA and PV Move Ordering
– Added Killer and History move ordering heuristics
– Added Null Move reductions
– Added Late Move reductions
– Added Opening Book (ProDeo – Thanks, Ed!)
– Added pondering, so “hard” and “easy” commands are now supported
– “analyze”, ”?” and “result” commands are now supported
– “level” command is now fully supported for all time control types
– Added check for dirty pawn structure before evaluation
– Search can be interrupted due to time management considerations
– Added Hash Tables, with a fixed size of 128MB
– Maximum search depth increased from 20 to 30
– Fixed a bug with evaluating castling moves
– Fixed a bug determining which King piece table to use
– Can now generate capturing moves only so quiescent search has less moves to sort/deal with
– Quiescent moves are added to PV
– Added code for pushing lone King towards edge of board
– Added material and 50-move draw detection
– Fixed a bug in the “undo” and “remove” commands
– Fixed some bugs in the 3-fold repetition detection
– Fixed a stupid bug that caused me to check for user input WAY too often – many thanks to Bob Hyatt for pointing me in the right direction
– Significant code cleanup

Version 0.82 (9/25/09)

– Removed “Alpha” designation from version number
– Commandline parameters are now supported
– Increased max search depth to 50
– Reduced move generation time by ~15% (perft 6 of initial position on a P4-3.0 went from 44s to 38s)
– Now claiming checkmates, 50-move draws and 3-fold repetition draws
– Plays a move after completing a depth 3 search if there is only one legal reply
– Will not play a move if in the middle of resolving a fail low or fail high at the root
– Will never use more than 1/4 of remaining time
– Greatly improved time management for bullet games. Version 0.81 could lose as many as 20% of its games on time at 2 minutes per game. Version 0.82 now only loses about 1% of its games on time at 1 minute per game, and only very rarely will lose a game on time at other time controls. Many thanks to Lars Hallerstrom (The Mad Tester!) for all of his assistance in helping determine if my “fixes” actually improved anything. Myrddin should never lose on time in games with increments.
– Quiescence search now only searches recaptures after depth 1
– Added promotions to Quiescence search
– Added aspiration window
– Improved Late Move Reductions parameters
– Fixed a bug in the Principal Variation search
– Pondering is now OFF by default
– Evaluation adjustments:

  • bishops and knights are scored at 310 centipawns, as Myrddin was susceptible to trading two pieces for rook+pawn
  • increased penalty for doubled/tripled pawns
  • for doubled/tripled pawns, added further penalty if they are blocked
  • added larger bonus for passed pawn on the 7th
  • adjusted bishop piece tables to encourage occupation of long(er) diagonals
  • modified the lone king piece table to give larger penalites as the king goes towards the edge/corner

– Added knowledge of knight outposts (in enemy territory, supported by pawn, cannot be attacked by enemy pawn)
– Piece and wood counting are now done incrementally
– Fixed a bug in which the 50-move counter could be set to zero if the move being pondered was a zeroing move and the opponent did not play that move
– Fixed a bug in which the engine would go into an endless loop if it reached (max_search_depth + 1) during pondering or analysis
– Fixed a bug in which the engine would go into an endless loop if there were no legal moves during analysis
– Fixed a bug in the evaluation of Black doubled/tripled pawns
– Added code to handle KPvK endings
– Added code to recognize various material draws, such as KNNvK
– Added code to recognize insufficient mating material for materially winning side (e.g. KNNvKP or KBvKP)
– Added code for rook pawn and wrong colored bishop against lone king in promoting corner (from a loss to Sorgenkind in OpenWar)
– Now only adding en passant square to hash signature if en passant capture is possible
– Added ”?” and ”!” comments to PV output for fail lows and fail highs
– Logfiles are now created in a “logs” folder below the Myrddin executable program, as requested by Lars

Version 0.83 (2/22/10)

– Only search to depth 1 when there is only one legal move and pondering is off
– No longer clearing the hash table before starting a depth 1 search
– Improved hash replacement strategy
– If a search depth was reduced by late-move reductions, and that search improves alpha, now researching at proper depth
– Reductions are now less aggressively implemented
– Adjusted the second aspiration window from 300 to 110 centipawns
– Doubled (or worse) passed pawns after the leading pawn no longer get the passed pawn bonus
– Will now play a move in a checkmating line as soon as it is confirmed to be optimal
– Removed “Result” from checkmate reporting
– Rook and minor vs rook (with no pawns) is now hard-coded as a draw – should be safe in 99.99% of cases
– Re-removed bad king safety code
– Now using piece square table for knight outposts, rather than a hard-coded bonus
– Modified piece square table for kings in opening and middlegame
– Added penalty for having no pawns, to help avoid trading down into pawnless endgames (e.g. rook vs. minor)
– Sending the '.' command during analysis no longer restarts the analysis from depth 1. The '.' command is still not implemented, though.
– Fixed a bug in which most hash moves were not getting placed at the beginning of the move order
– Fixed a bug evaluating Black doubled and passed pawns
– Fixed a bug in which the initial position was not being checked for draw by repetition
– Fixed a bug maintaining wood tables when unmaking a promotion move
– Fixed an asymmetrical problem in the bishop piece square table
– Fixed a problem with determining if a rook or queen was behind a passed pawn
– Fixed a problem with calculating the pawn shield of a king on column h, or a king not on his home row
– fixed a bug updating the board signature after making a null move when en passant was possible
– king+rook vs. king+minor is now being scored as a draw

Expectations for Next Release

In approximate order of priority:
– better pruning/reductions
– piece lists
– improve king safety eval
– SEE
– Tablebases (Gaviota?)
– mobility
– bitboards (magicmoves?)
– come up with better way to define changes from opening/middlegame/endgame
– outposts and escape routes
– draw claims – sending and receiving
– edit mode (primarily for supporting the Chessmaster GUI)
– Ping


Thanks and Contact Info

Many thanks to the following brilliant people who helped/guided me (either directly or indirectly) in countless ways with their work:

  • Ron Murawski – Horizon and LOTS of helpful comments and suggestions, plus guidance in my first trips in 64-bit land
  • Dann Corbit – optimization and general suggestions
  • Lars Hallerström - The Mad Tester! Also very helpful (and strong) recommendations regarding time management
  • Dr. Robert Hyatt – Crafty
  • Ed Schröder and Jeroen Noomen – ProDeo Opening Book
  • Bruce Moreland – Gerbil
  • Chris Tatham – Numpty and testing assistance (and great analysis of testing results)
  • Tom Kerrigan – TSCP
  • Vladimir Medvedev – Greko
  • Pham Hong Nguyen – Firstchess
  • Yves Debilloez – Belofte
  • And finally, the Chessmaster Development Team, comprised of lots of brilliant people, but mostly Johan de Koning (programmer of The King engine), Don Laabs (programmer of many of Chessmaster's low-level chess UI routines), James Stoddard (programmer of Chessmaster Live, the winboard UI support, and most of Chessmaster's game-handling routines) and Dave Cobb (programmer of Chessmaster's opening book editor and many other support features).

Please send bug reports and general suggestions/comments to JVMerlino@aol.com.

Thanks for playing!

John Merlino


Personal Tools