Difference between revisions of "Sliding Pieces"

From Chessprogramming wiki
Jump to: navigation, search
(Created page with "'''Home * Chess * Pieces * Sliding Pieces''' '''Sliding Pieces''' can move an indefinite number of squares along a horizontal, F...")
 
 
Line 3: Line 3:
 
'''Sliding Pieces''' can move an indefinite number of [[Squares|squares]] along a [[Ranks|horizontal]], [[Files|vertical]], or [[Diagonals|diagonal]] line until the edge of the board or another piece obstructs the [[Rays|ray]] of a line. This applies for [[Bishop|bishops]], [[Rook|rooks]] and [[Queen|queen]]. Sliding piece [[Move Generation|move generation]] is more extensive than generation of none sliding [[Knight|knight]], [[Pawn|pawn]] or [[King|king]] moves. With board arrays it requires a loop along the ray, scanning each square for emptiness to continue, or [[Occupancy|occupancy]] by own or opponent piece to break, combined with an off the board test to terminate the ray loop as well. However, such a loop may be designed in an efficient way generalized for all pieces as broached in [[Table-driven Move Generation]] and in [[Bruce Moreland|Bruce Moreland's]] ''Programming Topics'' <ref>[http://web.archive.org/web/20070715002634/www.brucemo.com/compchess/programming/movetable.htm Move Table move generation] from [[Bruce Moreland|Bruce Moreland's]] [http://web.archive.org/web/20070607231311/www.brucemo.com/compchess/programming/index.htm Programming Topics]</ref>. With [[Bitboards|bitboards]] one relies on the various techniques to [[Sliding Piece Attacks|generate attack sets]], which further requires [[Bitboard Serialization|serialization]] to finally [[Encoding Moves|encode moves]] in move generation.
 
'''Sliding Pieces''' can move an indefinite number of [[Squares|squares]] along a [[Ranks|horizontal]], [[Files|vertical]], or [[Diagonals|diagonal]] line until the edge of the board or another piece obstructs the [[Rays|ray]] of a line. This applies for [[Bishop|bishops]], [[Rook|rooks]] and [[Queen|queen]]. Sliding piece [[Move Generation|move generation]] is more extensive than generation of none sliding [[Knight|knight]], [[Pawn|pawn]] or [[King|king]] moves. With board arrays it requires a loop along the ray, scanning each square for emptiness to continue, or [[Occupancy|occupancy]] by own or opponent piece to break, combined with an off the board test to terminate the ray loop as well. However, such a loop may be designed in an efficient way generalized for all pieces as broached in [[Table-driven Move Generation]] and in [[Bruce Moreland|Bruce Moreland's]] ''Programming Topics'' <ref>[http://web.archive.org/web/20070715002634/www.brucemo.com/compchess/programming/movetable.htm Move Table move generation] from [[Bruce Moreland|Bruce Moreland's]] [http://web.archive.org/web/20070607231311/www.brucemo.com/compchess/programming/index.htm Programming Topics]</ref>. With [[Bitboards|bitboards]] one relies on the various techniques to [[Sliding Piece Attacks|generate attack sets]], which further requires [[Bitboard Serialization|serialization]] to finally [[Encoding Moves|encode moves]] in move generation.
  
The advantage of the bitboard method seems the cheaper generation of moves to certain subsets of squares, for instance [[Captures|captures]] in [[Quiescence Search|quiescence search]]. Despite [[Fritz Reul]] demonstrated dense and efficient [[Vector Attacks#NewArchitecture|blocking loops]] in [[Mailbox|mailbox]] based [[Board Representation|board representations]], and in conjunction with [[Pieces#DisjointPieceFlags|disjoint piece flags]] and [[Piece-Lists|piece-lists]] <ref>[[Fritz Reul|Fritz M.H. Reul]] ('''2009'''). ''New Architectures in Computer Chess'', Ph.D. Thesis, ''Chapter 2 Non-Bitboard Architectures'', [https://pure.uvt.nl/ws/files/1098572/Proefschrift_Fritz_Reul_170609.pdf pdf]</ref>.  
+
The advantage of the bitboard method seems the cheaper generation of moves to certain subsets of squares, for instance [[Captures|captures]] in [[Quiescence Search|quiescence search]]. Despite [[Fritz Reul]] demonstrated dense and efficient [[Vector Attacks#NewArchitecture|blocking loops]] in [[Mailbox|mailbox]] based [[Board Representation|board representations]], and in conjunction with [[Pieces#DisjointPieceFlags|disjoint piece flags]] and [[Piece-Lists|piece-lists]] <ref>[[Fritz Reul]] ('''2009'''). ''New Architectures in Computer Chess'', Ph.D. Thesis, ''Chapter 2 Non-Bitboard Architectures''</ref>.  
  
 
=See also=
 
=See also=

Latest revision as of 17:25, 7 May 2018

Home * Chess * Pieces * Sliding Pieces

Sliding Pieces can move an indefinite number of squares along a horizontal, vertical, or diagonal line until the edge of the board or another piece obstructs the ray of a line. This applies for bishops, rooks and queen. Sliding piece move generation is more extensive than generation of none sliding knight, pawn or king moves. With board arrays it requires a loop along the ray, scanning each square for emptiness to continue, or occupancy by own or opponent piece to break, combined with an off the board test to terminate the ray loop as well. However, such a loop may be designed in an efficient way generalized for all pieces as broached in Table-driven Move Generation and in Bruce Moreland's Programming Topics [1]. With bitboards one relies on the various techniques to generate attack sets, which further requires serialization to finally encode moves in move generation.

The advantage of the bitboard method seems the cheaper generation of moves to certain subsets of squares, for instance captures in quiescence search. Despite Fritz Reul demonstrated dense and efficient blocking loops in mailbox based board representations, and in conjunction with disjoint piece flags and piece-lists [2].

See also

References

  1. Move Table move generation from Bruce Moreland's Programming Topics
  2. Fritz Reul (2009). New Architectures in Computer Chess, Ph.D. Thesis, Chapter 2 Non-Bitboard Architectures

Up one Level