Skip to content

Releases: lithander/MinimalChessEngine

MinimalChess 0.6

29 Aug 22:59
Compare
Choose a tag to compare

MinimalChess is a simple UCI chess engine written in C#.

Version 0.6 uses an improved transposition table with two buckets and aging. It also adds late move reductions and deep futility pruning. Quiet moves are now sorted based on a simple history heuristic which has a nice synergy with LMR. The PST based evaluation is updated incrementally.

In total these changes allow MinimalChess to search much deeper (at the cost of accuracy) so that it gains about 200 ELO in playing strength over the previous version. The removal of the triangular PV table and other simplifications mean that the size of the codebase is about equal to the previous version. This makes this version not only the strongest but also the one with best strength/LOC ratio.

MinimalChess 0.5

30 Jun 23:15
1a32c58
Compare
Choose a tag to compare

MinimalChess is a simple UCI chess engine written in C#.

Version 0.5 adds a 13th tuned table for a mobility-based evaluation term, null-move pruning and a simple transposition table.

For this release I also changed the target framework to .NET 5.

With these changes MinimalChess gains about 350 ELO in playing strength over the previous version. The size of the codebase measured in lines of executable code (LOC) increased moderately from 610 LOC to 707 LOC. So this versions not only features the best playing strength it also has the best strength/LOC ratio.

MinimalChess 0.4

27 Apr 08:21
08baa2b
Compare
Choose a tag to compare

MinimalChess is a simple UCI chess engine written in C#.

Version 0.4 now uses tapered Piece-Square tables to evaluate positions. It took two weeks of tuning and testing until I finally managed to find values that could rival PeSTOs famous PSTs in strength.

Version 0.4 also introduces a killer heuristic and staged move generation. A new time control logic is spending the allocated budget smarter, especially in modes where there's an increment each move. The 'depth' and 'nodes' options are now supported in all time control modes.

These changes provide a considerable boost in playing strength to approximately 1900 ELO without making the code any less simple and minimal: Version 0.4 has seen a lot of refactoring and even lost a few lines of (executable) code compared with Version 0.3.

MinimalChess 0.3

08 Mar 21:37
Compare
Choose a tag to compare

MinimalChess is a barebones (minimal) implementation of a chess engine in C#.

Version 0.3 adds Move Ordering, Quiescence Search and replaces the material-only evaluation with Piece-Square Tables.
The new version gains about 500 ELO in playing strength over the previous version. It should now play at slightly above 1500 ELO.

Version 0.3 also introduces a rather unique feature: The PSTs are defined in separate files and can be selected via an UCI option. This allows the user to tweak the values or write their own tables from scratch and alter the playstyle of the engine considerably. No programming experience required.

MinimalChess 0.2

12 Feb 09:41
49a8d5a
Compare
Choose a tag to compare

MinimalChess is a bare-bones (minimal) implementation of a chess engine in C#.

Version 0.2 implements a larger subset of the UCI protocol including the most common time management options.

It uses iterative deepening search with alpha-beta pruning and a simple killer-move heuristic and evaluates a position by counting material.

The list of non-features is far larger.

  • No Bitboards
  • No Move-Undo
  • No Quiescence search
  • No Hash Tables
  • No Move Ordering
  • No PST's
  • [...]

This lack of sophistication makes it a good sparring partner for weak human players like myself and chess programmers who are just starting out. I hope it's fun to play against it. It doesn't intentionally blunder or suffer from bugs. It's just counting material a few plies ahead and if you take care to develop your pieces and maintain a sound position you can win against it even as a beginner.

MinimalChess 0.1

23 Jan 14:08
Compare
Choose a tag to compare
MinimalChess 0.1 Pre-release
Pre-release

This release captures the project's state as presented in the 4th video of my "Making of MinimalChessEngine" video series.

If you want to use the small (100KB) Portable package you need to have the .NET Core 3.1 Runtime installed.