Files
brchess/STATUS.org
2023-07-14 21:46:10 +02:00

2.9 KiB

Misc

Done or partially done

Text interface

  • basic commands like "init", "fen xxxx", "depth n", "search", "pvs", etc…

Dual 0x88 / bitboard representations

A pseudo-legal move generator

  • Does not check for some invalid moves (especially king-pinned pieces moves, which could be very expensive). I believe some programs do not do it too, and prefer to see invalid positions at next ply (TODO).
  • Still with 0x88 board (needs to be rewritten with bitboards).

Very expensive pieces and moves list

  • They should be converted into arrays, to allow fast duplication for move_do(), the function which actually makes a move.

A basic eval function

  • preferred squares for pieces
  • mobility

"Move Search" funstions

Basic negamax search function
Principal Variation Search (PVS) function
  • Alpha-beta pruning
  • Basic moves pre-ordering It makes the PVS/alpha-beta pruning quite decent (for depth 6 on start pos, 1,196 secs/125,799 Knodes vs 14 secs/ 1,575 Knodes)
  • Both make search at a fixed depth (still no quiescence search at terminal nodes).

Missing

All Chess rules

  • Mate/Pat detection (!) Not trivial, as using pseudo-valid moves implies mate/pat detection is late
  • Special rules like 50 moves/position repetition

Actual game management

  • Play a move, ask engine to play a move
  • A standard interface for usual software (like SCID) Probably xboard first, as it looks simpler than UCI.

Search improvement

  • Book-keeping of moves during search (did not decide the method).
  • Positions hashing / transposition detection

Next steps planned

Replace the current interface with a basic xboard one

  1. Check which commands are necessary/mandatory.
  2. This will allow easy testing with common software

Mate/Pat detection

In Search, detect King capture

In Search, do something when no move available