Changes

Jump to: navigation, search

Bitfoot

4,096 bytes added, 16:05, 18 May 2018
Created page with "'''Home * Engines * Bitfoot''' '''Bitfoot''',<br/> a version of Clubfoot, the UCI open source chess engine written by Shaw..."
'''[[Main Page|Home]] * [[Engines]] * Bitfoot'''

'''Bitfoot''',<br/>
a version of [[Clubfoot]], the [[UCI]] [[Open Source Engines|open source chess engine]] written by [[Shawn Chidester]] in [[Cpp|C++]], that uses [[Bitboards|bitboards]] <ref>[https://github.com/zd3nik/Bitfoot/blob/master/README.md Bitfoot/README.md at master · zd3nik/Bitfoot · GitHub]</ref>. The [[Search|search]] mechanics of this engine are identical to those used in Clubfoot. The differences are [[Board Representation|board representation]], [[Move Generation|move generation]], and [[Evaluation|positional evaluation]]. Bitfoot uses bitboard for board representaion, Clubfoot uses [[0x88]] board representation. Move generation is strongly tied to board representation so move generation between the two engines is implicitly different. Positional evaluation in Bitfoot takes advantage of the capabilities enabled by using bitboards. So Bitfoot's positional evaluation is much more advanced than Clubfoot's. That being said, Bitfoot's positional evaluation is still relatively dump compared to many of today's top engines.
<span id="ABBitboards"></span>
=A/B Bitboards=
Bitfoot applies an own technique to determine [[Sliding Piece Attacks|sliding piece attacks]] dubbed '''A/B Bitboards''' or Above/Below Bitboards <ref>[https://github.com/zd3nik/Bitfoot/blob/master/README.md#ab-bitboards A/B Bitboards from Bitfoot/README.md at master · zd3nik/Bitfoot · GitHub]</ref>. Similar to the [[Classical Approach|classical approach]], it works ray-wise and uses pre-calculated [[On an empty Board#RayAttacks|ray-attacks]] for each of the eight [[Rays#RayDirections|ray-directions]] and each of the 64 [[Squares|squares]]. It has to distinguish between [[On an empty Board#PositiveRays|positive]] and [[On an empty Board#NegativeRays|negative]] directions, because it has to [[General Setwise Operations#LS1BIsolation|isolate]] or [[BitScan|bitscan]] the first blocker (if any) from the ray-attack intersection with the [[Occupancy|occupancy]] in different orders. The exclusion of squares behind the first blocker works by intersection with its appropriate [[General Setwise Operations#LS1BSeparation|below or above separation]]. This is how the routines look like conform to the [[Classical Approach|classical approach]] prototype:

<pre>
U64 rayAttacks[8][64];

U64 getPositiveRayAttacks(U64 occupied, enumDir dir8, enumSquare square) {
U64 x = rayAttacks[dir8][square] & occupied;
x = x & -x; // LSB (if any)
return x | (rayAttacks[dir8][square] & (x-1)); // BELOW
}

U64 getNegativeRayAttacks(U64 occupied, enumDir dir8, enumSquare square) {
U64 x = rayAttacks[dir8][square] & occupied;
x = x ? C64(1) << bitScanReverse(x) : C64(0); // MSB (if any)
return x | (rayAttacks[dir8][square] & (x^-x)); // ABOVE
}
</pre>
There are further versions of the routines leaving distinct sets of attacked blocker (and possible [[Captures|capture]] targets) or attacked empty squares, target of [[Quiet Moves|quiet moves]].

=See also=
* [[Clubfoot]]

=Forum Posts=
* [http://www.talkchess.com/forum/viewtopic.php?t=56625 Introducing Bitfoot] by [[Shawn Chidester]], [[CCC]], June 08, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=57536 New Clubfoot and Bitfoot release builds available] by [[Shawn Chidester]], [[CCC]], September 07, 2015

=External Links=
* [https://github.com/zd3nik/Bitfoot zd3nik/Bitfoot · GitHub]
* [https://en.wikipedia.org/wiki/Brecker_Brothers Brecker Brothers] - Above and Below, [https://en.wikipedia.org/wiki/Barcelona Barcelona], 1992, [https://en.wikipedia.org/wiki/YouTube YouTube] Video
: [[Videos#MichaelBrecker|Michael Brecker]], [[Videos#RandyBrecker|Randy Brecker]], [[Videos#MikeStern|Mike Stern]], [[Videos#DennisChambers|Dennis Chambers]], [https://en.wikipedia.org/wiki/George_Whitty George Whitty], [https://en.wikipedia.org/wiki/James_Genus James Genus]
: {{#evu:https://www.youtube.com/watch?v=MdtjIw7Of-E|alignment=left|valignment=top}}

=References=
<references />

'''[[Engines|Up one Level]]'''
[[Category:Engine]][[Category:Open Source]][[Category:UCI]]

Navigation menu