Skip to content

Releases: znxftw/rudim

Rudim v1.4 - Draw Checks & Transposition Tables

18 Dec 07:30
ec7bec8
Compare
Choose a tag to compare

Tournament Results @ 5+0, 1000 games (v1.4 vs v1.3) - Appx. 10 - 30 ELO gain

--------------------------------------------------
Elo: 11.82 +/- 15.79, nElo: 16.14 +/- 21.53
LOS: 92.91 %, DrawRatio: 36.80 %, PairsRatio: 1.16
Games: 1000, Wins: 301, Losses: 267, Draws: 432, Points: 517.0 (51.70 %)
Ptnml(0-2): [32, 114, 184, 128, 42], WL/DD Ratio: 0.94
--------------------------------------------------

Major Changes

  • Threefold Check to avoid drawing in winning positions
  • Fifty Move Rule Check to avoid drawing in winning positions
  • History heuristic added for alpha-update nodes
  • Transposition Table added (Current Fixed Size : 65536)

Minor Changes & Non-Solution Changes

  • Perft moved to program instead of test, allowing the binary to Perft
  • Minor optimizations to calculations, object allocation, array sizes etc.
  • Coverage Check added to pipeline, tests added for multiple scenarios to bring up coverage to ~85%
  • Pipeline runs 5+0.1 for 200 games tournament instead now. Better approximation of rating change with more games
  • Cleanup methods are now combined into Global.Reset() for easier resetting of state

What's Changed

Thanks to @rwbc for helping point out improvements
Windows build compiled by @rwbc

Full Changelog: v1.3...v1.4

Rudim v1.3 - Iterative Deepening & .NET 9

05 Dec 07:43
dfd78da
Compare
Choose a tag to compare

Major changes

  • Moved to .NET 9
  • Iterative Deepening Implemented
  • Time management improved - does not flag as frequently

Minor changes

  • Refactor for performance improvements
  • uci "stop"
  • uci "ucinewgame"
  • uci "go" is now non-blocking and can be interrupted by other uci commands ("stop" or another "go")
  • zobrist hashing implementation in place (not integrated to any transposition tables)
  • fix uci illegal output move - knight was abbreviated as "k" instead of "n" when promoting
  • update dependencies

Non-build changes:

  • pipeline now does a benchmark for memory allocated & time taken
  • pipeline now runs a tournament for current commit vs last stable release
  • publish workflow to generate binaries for releases

What's Changed

New Contributors

Full Changelog: v1.2...v1.3

Rudim v1.2 - Killer Heuristic & Performance

24 Feb 20:54
Compare
Choose a tag to compare

Changelog

  • Killer heuristic implemented
  • Moved to .NET 6
  • Refactored some implementations for performance and extensibility
    • Used struct for Bitboard
    • Used records for MoveType

Ideally with these improvements, Rudim should flag a lot less in games (even though it's very likely it will still take a bit of time in closed positions without any good captures / killer moves.

Other contributors : @prashantchoudhary

Rudim v1.1 - Performance & Hotfixes

07 Feb 20:10
Compare
Choose a tag to compare

Performance improvements and hotfixes to Rudim

  • Rudim was failing at evaluating some promotion positions with UCI. This has been fixed, and perft has been extended to advanced positions to catch any problems with move generation at that level
  • Performance improvements
    • Moved from saving/restoring entire BoardState to restoring only the irreversible portions of BoardState (Copy-Make) and calculate the reversible portions using UnmakeMove()
    • Added PieceMappings for faster lookup of GetPieceOn() used by the Move Ordering functions.
  • Moved tests to run in release mode for realistic feedback

For a comparison, v1.0 took on average (in debug mode) ~11 seconds for perft(5,startpos) whereas v1.1 takes 4-5 seconds.
Most of the major improvements according to the profiler have been tackled - further performance improvements would require multiple smaller changes in implementations, which will be addressed later.

Rudim v1.0 - Minimum Viable Product

06 Feb 09:29
Compare
Choose a tag to compare

v1.0 can play chess above average.
Might flag with depths >7 in long games. For instantaneous moves, depth 5-6 works well.