Skip to content

danielefdf/chen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

chen

A classical chess engine, with a full JavaFx graphical interface to play against the engine, or analyze a position and see how the engine is "thinking".

The engine can also communicate via UCI protocol with different GUIs.

The engine

The engine uses the main classical techniques:

  • minimax with alpha / beta pruning
  • quiescence search
  • iterative deepening
  • principal variation search
  • late move reduction
  • killer moves
  • history heuristic
  • transpositions table

Each of these aspects can be activated or not, and is configurable:

    public boolean alphaBetaPruning;
    public boolean delayedLegalityCheck;
    public boolean delayedMateCheck;
    public int sortedMovesNumber;
    public boolean searchCheckIncrement;
    public boolean quiescentPosSearch;
        public int qSearchAddedDepth;
        public boolean qChecksSearch;
    public boolean iterDeepeningSearch;
    public boolean principalVarSearch;
    public boolean lateMoveReduction;
        public int lateMoveSubtrDepth;
    public boolean killerHeuristic;
    public boolean historyHeuristic;
    public boolean transpositionsMap;

Currently the late move reduction is not active by default, because it didn't show improvements on search performance on this particular setting.

The GUI

It is possible to set up a match:

new game

  • Positions can also be loaded with a FEN string.

Or analyze a position:

new analysis

It is possible to configure every aspect of the engine:

configure engine

Any engine configuration can be saved and retrieved, as well as any game or analysis session.

load game

This repository is licensed under MIT (c) 2020 GitHub, Inc.