Since you’re here...

... we have a small favour to ask. More people, like you, are reading and supporting our blog: "Chess Engines Diary". And unlike many other sites and blogs, we made the choice to keep our articles open for all, regardless of where they live or what they can afford to pay.

We hope you will consider supporting us today. We need your support to continue to exist, because good entries are more and more work time. Every reader contribution, however big or small, is so valuable. Support "Chess Engines Diary" even a small amount– and it only takes a minute. Thank you.

============================== My email: jotes@go2.pl



Chess engine: Renegade 0.9.0


Renegade is a chess engine written in C++ using Visual Studio 2019. It values readability and simplicity, and uses the UCI protocol to communicate, making it easy to connect it to chess frontends. Under construction since October 7, 2022 and released publicly on January 15, 2023.  

The project can be compiled using Visual Studio 2019 with C++20 features enabled. The engine makes heavy use of `popcnt` and `lzcnt` instructions, thus only processors from 2013 or so are supported, but the calls to these instructions are wrapped in a custom function, and replacing them with something more compatible is relatively straightforward. Currently only Windows binaries are compiled, but in the future I would like to make them for Linux as well.

v.0.9.0:
Speed improvements
Implemented magic bitboard lookups for sliding pieces
Reduced memory allocations in several places, again
Optimized variable types
New evaluation terms
Rooks on open and semi-open files
Knight outposts
More aggressive pruning
Null move pruning search reduced by 3 if depth > 6 (kept at 2 otherwise)
Razoring at depth 1 with margin of 300 cp (instead of 400)
Futility pruning extended to depth 3 with margin of 300 cp
Overhauled transposition table
Based on std::vector (no more std::unordered_map)
Replacement policy: always if hash is different, otherwise if depth is greater or equal
Stores depth and best move
Size calculated dynamically based on Hash parameter
Use debug hashalloc to show hash information
Added Clear Hash option
Not yet optimized (uses 24 bytes per entry)
Move ordering changes
Now based on MVV-LVA instead of material difference
Trying PV moves early only on the PV line
Uses the best move from the transposition table
Collecting more search statistics
First move beta cutoff rate, transposition table hit rate
Statistics are organized in its own struct
Updated method for node counting
Now incremented on SearchRecursive() and SearchQuiescence() calls (instead on evaluation)
Inflates node counts by about 25%
Evaluations are still counted and can be displayed by toggling ExtendedOutput
Better compatibility
Defaulting to statically linked libraries (shouldn't require external dll's)
Providing an exe that should work on older processors (untested, and it seems slightly slower)
Minor changes
New commands: debug isdraw (shows whether the position is a draw), debug plys (show game ply count), ch (shorthand for Clear Hash)
Simplified search code
Bugfixes
No longer draws in winning positions due to threefold repetitions (hopefully)
Fixed and expanded drawn game evaluation
Regression testing results: (time control: 10s+0.1)

Score of Renegade 0.9.0 vs Renegade 0.8.1: 1472 - 200 - 328  [0.818] 2000
...      Renegade 0.9.0 playing White: 744 - 77 - 179  [0.834] 1000
...      Renegade 0.9.0 playing Black: 728 - 123 - 149  [0.802] 1000
...      White vs Black: 867 - 805 - 328  [0.515] 2000
Elo difference: 261.1 +/- 16.8, LOS: 100.0 %, DrawRatio: 16.4 %
General notes:

The plan was to speed up the engine, both in nps terms, and make the search more efficient by applying more aggressive pruning to combat the low search depth. Both of these worked, more or less.
I've added a exe that hopefully should work with older processors, but I'm unable to verify this. I would like to support a wider range of systems in general, but it's a bigger challenge than I thought.
Feel free to ping me if there's any issues.

Rating CEDR=2271 Author - Krisztian Peocz

Individual statistics: Renegade 0.7.0 - 148 games (+ 17,=  5,-126), 13.2%
Critter 1.6a                  :   6 (+  0,=  0,-  6),  0.0 %
Houdini 1.5a                  :   2 (+  0,=  0,-  2),  0.0 %
Delocto 0.61n                 :   1 (+  0,=  0,-  1),  0.0 %
ECE 20.1                      :   2 (+  0,=  0,-  2),  0.0 %
Fritz 17                      :   2 (+  0,=  0,-  2),  0.0 %
Jinx 1.0                      :   1 (+  0,=  0,-  1),  0.0 %
Hiarcs 15.5                   :   2 (+  0,=  0,-  2),  0.0 %
Coiled 1.1                    :   2 (+  0,=  0,-  2),  0.0 %
Fritz 18                      :   2 (+  0,=  0,-  2),  0.0 %
Lc0 0.29.0                    :   2 (+  0,=  0,-  2),  0.0 %
Raven 1.30                    :   2 (+  0,=  0,-  2),  0.0 %
Peacekeeper 1.1               :   3 (+  0,=  0,-  3),  0.0 %
Akimbo 0.1.1                  :   2 (+  0,=  0,-  2),  0.0 %
BlackCore 5.0                 :   4 (+  0,=  0,-  4),  0.0 %
Stockfish 20230114            :   6 (+  0,=  0,-  6),  0.0 %
4ku 1.1                       :   2 (+  2,=  0,-  0), 100.0 %
Igel 3.3.0                    :   8 (+  0,=  0,-  8),  0.0 %
Inanis 1.2.0                  :   8 (+  0,=  2,-  6), 12.5 %
Koivisto 9.0                  :   4 (+  0,=  0,-  4),  0.0 %
Polyfish 230115               :   6 (+  0,=  0,-  6),  0.0 %
Caissa 1.5                    :   8 (+  0,=  0,-  8),  0.0 %
CorChess 20230114             :   2 (+  0,=  0,-  2),  0.0 %
Charisma Saphir               :   6 (+  0,=  0,-  6),  0.0 %
ShashChess 27.2               :   6 (+  0,=  0,-  6),  0.0 %
Koivisto 9.0 Ipman            :   8 (+  0,=  0,-  8),  0.0 %
Frozenight 6.0.0              :  10 (+  0,=  0,- 10),  0.0 %
Jangine 2023-01-15            :   8 (+  4,=  2,-  2), 62.5 %
Mess 0.0.2                    :   7 (+  2,=  0,-  5), 28.6 %
Clovis II                     :   4 (+  0,=  0,-  4),  0.0 %
Durandal 0.1.1                :   3 (+  3,=  0,-  0), 100.0 %
Princhess 0.9.0               :   5 (+  1,=  1,-  3), 30.0 %
Wasabi 1.5.0                  :   2 (+  0,=  0,-  2),  0.0 %
Sturddle 1.27                 :   4 (+  0,=  0,-  4),  0.0 %
Zagreus 2.0.0 alpha-2         :   4 (+  4,=  0,-  0), 100.0 %
Durandal 0.1.2                :   1 (+  1,=  0,-  0), 100.0 %
Sting Black Hole 4            :   2 (+  0,=  0,-  2),  0.0 %
Rapcschess 2022-12-08         :   1 (+  0,=  0,-  1),  0.0 %

Renegade 0.9.0 download


Comments

Popular Posts