Difference between revisions of "Leorik"
GerdIsenberg (talk | contribs) |
GerdIsenberg (talk | contribs) |
||
(One intermediate revision by the same user not shown) | |||
Line 9: | Line 9: | ||
=Leorik Attacks= | =Leorik Attacks= | ||
Leorik is a [[Bitboards|bitboard]] engine and applies an unique approach in determining [[Sliding Piece Attacks|sliding piece attacks]] based on [[On an empty Board#LineAttacks|line-wise attacks on the otherwise empty board]] (either pre-calculated or calculated on the fly). All bits below the slider's [[Origin Square|origin square]] [[General Setwise Operations#BitbySquare|bit]] are used to separate [[On an empty Board#PositiveRays|positive]] and [[On an empty Board#NegativeRays|negative]] [[Rays|rays]] to scan the nearest blocker (if any) accordingly. | Leorik is a [[Bitboards|bitboard]] engine and applies an unique approach in determining [[Sliding Piece Attacks|sliding piece attacks]] based on [[On an empty Board#LineAttacks|line-wise attacks on the otherwise empty board]] (either pre-calculated or calculated on the fly). All bits below the slider's [[Origin Square|origin square]] [[General Setwise Operations#BitbySquare|bit]] are used to separate [[On an empty Board#PositiveRays|positive]] and [[On an empty Board#NegativeRays|negative]] [[Rays|rays]] to scan the nearest blocker (if any) accordingly. | ||
− | Positive rays use the line occupancy, intersected with the bits not below to [[General Setwise Operations#LS1BSeparation|fill its LS1B]] (if any) down (MaskLow => bb ^ (bb - 1)). Negative Rays use the line occupancy, intersected with the bits below to fill its [[General Setwise Operations#TheMostSignificantOneBitMS1B|MS1B]] (if any) down (MaskHigh => 0x7FFFFFFFFFFFFFFFUL >> [[BitScan# | + | Positive rays use the line occupancy, intersected with the bits not below to [[General Setwise Operations#LS1BSeparation|fill its LS1B]] (if any) down (MaskLow => bb ^ (bb - 1)). Negative Rays use the line occupancy, intersected with the bits below to fill its [[General Setwise Operations#TheMostSignificantOneBitMS1B|MS1B]] (if any) down (MaskHigh => 0x7FFFFFFFFFFFFFFFUL >> [[BitScan#LeadingZeroCount|leadingZeroCount]](bb|1)). The [[General Setwise Operations#ExclusiveOr|symmetric difference]] of both down fills, restricted to the line-wise attacks on the otherwise empty board results in the sliding attack bitboard from that square on one particular line <ref>[https://github.com/lithander/Leorik/blob/master/Leorik.Core/Bitboard.cs Leorik/Bitboard.cs at master · lithander/Leorik · GitHub]</ref> <ref>[https://www.talkchess.com/forum3/viewtopic.php?f=7&t=79049&start=2 Re: Devlog of Leorik] by [[Thomas Jahn]], [[CCC]], January 04, 2022</ref>. |
=Selected Features= | =Selected Features= | ||
Line 44: | Line 44: | ||
=Forum Posts= | =Forum Posts= | ||
* [https://www.talkchess.com/forum3/viewtopic.php?f=7&t=79049 Devlog of Leorik] by [[Thomas Jahn]], [[CCC]], January 04, 2022 | * [https://www.talkchess.com/forum3/viewtopic.php?f=7&t=79049 Devlog of Leorik] by [[Thomas Jahn]], [[CCC]], January 04, 2022 | ||
+ | : [https://www.talkchess.com/forum3/viewtopic.php?f=7&t=79049&start=127 Re: Devlog of Leorik - A.k.a. how to tune high-quality PSTs from scratch (material values) in 20 seconds] by [[Thomas Jahn]], [[CCC]], March 28, 2022 » [[Automated Tuning]], [[Piece-Square Tables]] | ||
* [https://www.talkchess.com/forum3/viewtopic.php?f=7&t=79412&start=1 Re: Transposition tables are hard...] by [[Thomas Jahn]], [[CCC]], February 25, 2022 | * [https://www.talkchess.com/forum3/viewtopic.php?f=7&t=79412&start=1 Re: Transposition tables are hard...] by [[Thomas Jahn]], [[CCC]], February 25, 2022 | ||
Latest revision as of 21:02, 28 March 2022
Leorik,
an UCI compatible, didactic open source chess engine by Thomas Jahn, written in C#, and first published in January 2022 - its development reported in a CCC devlog [2].
Unshackled from the constraints of minimalism and simplicity, Leorik is the successor of Thomas Jahn's bare-bones chess engine MinimalChess [3], and as of Spring 2022, work in progress.
Contents
Leorik Attacks
Leorik is a bitboard engine and applies an unique approach in determining sliding piece attacks based on line-wise attacks on the otherwise empty board (either pre-calculated or calculated on the fly). All bits below the slider's origin square bit are used to separate positive and negative rays to scan the nearest blocker (if any) accordingly. Positive rays use the line occupancy, intersected with the bits not below to fill its LS1B (if any) down (MaskLow => bb ^ (bb - 1)). Negative Rays use the line occupancy, intersected with the bits below to fill its MS1B (if any) down (MaskHigh => 0x7FFFFFFFFFFFFFFFUL >> leadingZeroCount(bb|1)). The symmetric difference of both down fills, restricted to the line-wise attacks on the otherwise empty board results in the sliding attack bitboard from that square on one particular line [4] [5].
Selected Features
Board Representation
Search
- Iterative Deepening
- Negamax Alpha-Beta
- Principal Variation Search
- Transposition Table
- Move Ordering
- Selectivity
- Null Move Pruning (2.0)
- Late Move Reductions
- Futility Pruning (2.0)
Evaluation
See also
Forum Posts
- Devlog of Leorik by Thomas Jahn, CCC, January 04, 2022
- Re: Devlog of Leorik - A.k.a. how to tune high-quality PSTs from scratch (material values) in 20 seconds by Thomas Jahn, CCC, March 28, 2022 » Automated Tuning, Piece-Square Tables
- Re: Transposition tables are hard... by Thomas Jahn, CCC, February 25, 2022
External Links
Chess Engine
- GitHub - lithander/Leorik: Unshackled from the constraints of minimalism and simplicity Leorik is the successor to my bare-bones chess engine MinimalChess
- Leorik 1.0 64-bit in CCRL Blitz
Misc
References
- ↑ Re: Devlog of Leorik by Thomas Jahn, CCC, March 19, 2022
- ↑ Devlog of Leorik by Thomas Jahn, CCC, January 04, 2022
- ↑ Leorik/README.md at master · lithander/Leorik · GitHub
- ↑ Leorik/Bitboard.cs at master · lithander/Leorik · GitHub
- ↑ Re: Devlog of Leorik by Thomas Jahn, CCC, January 04, 2022
- ↑ Leorik/README.md at master · lithander/Leorik · GitHub