Skip to content

MoriartyProfessor/Gwaihir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

387 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gwaihir - UCI Compatible chess engine


Gwaihir is a strong (hopefully in the future) UCI compatible chess engine written in C++.

Features list

Board representation:

  • Move generation (with Magic Bitboards)
  • Constrution of position from FEN

Search:

  • Negamax
  • Alpha-Beta pruning
  • Move Ordering (Hash > MVV-LVA > Killer > History)
  • Iterative Deepening
  • Transposition tables (with Zobrist Hashing)
  • Quiescence search
  • Principled Variation search
  • Aspiration windows
  • SEE
  • Search Extensions Reductions
  • Late Move Reduction (LMR)
  • Null Move Pruning
  • Lazy SMP

Evaluation:

  • Material
  • Game-Phase dependent evaluation
  • Piece-Square Tables
  • Pawn Structure
  • Evaluation of Pieces
  • Evaluation Patterns
  • Mobility
  • Center Control
  • Connectivity
  • Trapped Pieces
  • King Safety
  • Space
  • Tempo
  • Evaluation/Pawn TT

Other game phases:

  • Opening book
  • Endgame tablebases

Miscellaneous:

  • UCI protocol implementation
  • Time control

Tests:

  • Perft Test

Current To-Do list

  • Engine could not mate in NBK vs K endgame (sigh...)
  • Figure out why are so few nodes searched if compiled with RelWithDebInfo
  • 50 move rule
  • MNPS drops significantly towards the endgame. Potential causes:
    • More TT hits, so nodes are not being counted.
    • History stack is getting too big.
  • Minor - don't make illegal move when getting mated
  • Minor - stop iterative deepening when there is a mate already

Improvements

  • Extensions and Reductions
  • NMP

Dependencies

Building

About

Gwaihir is a strong UCI compatible chess engine written in modern C++.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages