GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Chess Programming Wiki
  • All pages
  • Other namespaces
  • Categories
  • Credits

This view

  • Original page
  • New address

GeezerVison is showing chessprogramming.org — Board Representation - Chess Programming Wiki

Board Representation

Home * Board Representation

Paul Klee - Überschach, 1937Paul Klee - Überschach, 1937 A chess program needs an internal board representation to maintain chess positions for its search, evaluation and game-play. Beside modelizing the chessboard with its piece-placement, some additional information is required to fully specify a chess position, such as side to move, castling rights, possible en passant target square and the number of reversible moves to keep track on the fifty-move rule.

To begin with, we further elaborate on the pure data structures to represent the board and its piece-placement. There are piece centric and square centric representations as well as hybrid solutions.

Contents
  1. Piece Centric
  2. Square Centric
  3. Hybrid Solutions
  4. Move Generation
  5. Make and Unmake
  6. See Also
  7. Publications
  8. Forum Posts
    1. 1999
    2. 2000 ...
    3. 2010 ...
  9. External Links
  10. References

Piece Centric

A piece centric representation keeps lists, arrays or sets of all pieces still on the board - with the associated information which square they occupy. A popular piece centric representative is the set-wise bitboard-approach. One 64-bit word for each piece type, where one-bits associate their occupancy.

  • Piece-Lists
  • Piece-Sets
  • Bitboards

Square Centric

The square centric representation implements the inverse association - is a square empty or is it occupied by a particular piece? The most popular square centric representations, mailbox or it's 0x88-enhancements - are basically arrays of direct piece-codes including the empty square and probably out of board codes. Hybrid solutions may further refer piece-list entries.

  • Mailbox
    • 8x8 Board
    • 10x12 Board
    • Vector Attacks

0x88

Hybrid Solutions

While different algorithms and tasks inside a chess program might prefer one of these associations, it is quite common to use redundant board representations with elements of both. Bitboard approaches often keep a 8x8 board to determine a piece by square, while square centric board array approaches typically keep piece-lists and/or piece-sets to avoid scanning the board for move generation purposes.

Move Generation

With a board representation, one big consideration is the generation of moves. This is essential to the game playing aspect of a chess program, and it must be completely correct. Writing a good move generator is often the first basic step of creating a chess program.

  • Move Generation
  • Perft

Make and Unmake

  • Incremental Updates
  • Copy-Make
  • Make Move
  • Unmake Move
  • Bitboard Update By Move

See Also

  • Array of Nibbles
  • Attack and Defend Maps
  • Chess Position
    • Extended Position Description (EPD)
    • Forsyth-Edwards Notation (FEN)
  • Chinese Chess Board Representation
  • Graphics Programming
  • Quad-Bitboards

Publications

  • Claude Shannon (1949). Programming a Computer for Playing Chess. pdf from The Computer History Museum
  • Alex Bell (1972). Games Playing with Computers. Allen & Unwin, ISBN-13: 978-0080212227
  • Dan Spracklen, Kathe Spracklen (1978). First Steps in Computer Chess Programming. BYTE, Vol. 3, No. 10, pdf from The Computer History Museum
  • Vladan Vučković (2008). The Compact Chessboard Representation. ICGA Journal, Vol. 31, No. 3 » Array of Nibbles
  • Vladan Vučković (2012). An Alternative Efficient Chessboard Representation based on 4-Bit Piece Coding. Yugoslav Journal of Operations Research, Vol. 22, No. 1, pdf

Forum Posts

1999

  • Datastructures in computer chess by Gustav Grundin, rgcc, May 11, 1999
  • How do you represent chess boards in your chess programms by Brian Nielsen, CCC, September 22, 1999
  • Re: How do you represent chess boards in your chess programms by Sven Reichard, CCC, September 29, 1999

2000 ...

  • Differences between 0x88 ,10x12 and Bitboards!? by Axel Grüttner, CCC, November 19, 2002
  • Fruit's Board Representation? by Steve Maughan, Winboard Programming Forum, April 27, 2005
  • Board representation : 0x88 or 10x12 ? by Philippe, Winboard Forum, March 02, 2006
  • Yet another new bitboard move generation method by Zach Wegner, Winboard Forum, September 22, 2006 » Titboards

Re: Yet another new bitboard move generation method by Harm Geert Muller, Winboard Forum, October 01, 2006 1

  • Board Types in '08 by Joshua Shriver, CCC, June 28, 2008

2010 ...

  • I'm Puzzled - Storing Piece Info & Magic Move Gen... by Steve Maughan, CCC, March 27, 2013
  • Table-less bitboards (bitrays?) by Harm Geert Muller, CCC, June 18, 2013
  • Best Board Representation for 32bit CPUs by net, Winboard Forum, July 14, 2013
  • Some questions from a beginner by Tim Hagen, CCC, March 30, 2016
  • best board representation for variants (javascript) ? by Mahmoud Uthman, CCC, December 10, 2017 » JavaScript, Chess Variants
  • CCR board representation by Maksim Korzh, CCC, November 25, 2018 » Array of Nibbles

External Links

  • Board representation (chess) from Wikipedia
  • Chapter 3: Board Games - 3.1 CHESS from Alex Bell (1972). Games Playing with Computers. Allen & Unwin, ISBN-13: 978-0080212227
  • Chess board representations by Robert Hyatt
  • Board representations | Lecture notes by David Eppstein, April 8, 1997
  • Chess Programming - The Chess Board by Thomas Petzke
  • Representation of Chess Game - Computer Architecture and Languages Laboratory, University of Maribor

References

Up one Level


  1. Re: multi-dimensional piece/square tables by Tony P., CCC, January 28, 2020↩︎

Categories: Paul Klee

What links here

Contributors: GerdIsenberg.

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.