Skip to content

ChizhovVadim/CounterGo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

Counter

русский

Counter is a chess engine.

  • free
  • open source
  • support for different OS (Linux, macOS, Windows)
  • multi threading support
  • UCI protocol support. You can use any chess GUI interface that supports UCI protocol

Strength

Chess Rating lists:

Version GRL CCRL 40/15 FastGM 60+0.6 CEGT 40/4
4.0 3115 3101 2935 2997
3.9 3065 3075 2959
3.8 2994 3012 2817 2887
3.7 2972 2970 2784 2854
3.6 2757 2820
3.5 2907 2718 2777
3.4 2881 2679 2742
3.3 2847 2647 2700
3.2 2834 2624 2692
3.1 2784

TCEC

Counter is participating in TCEC tournament.

Technical description

Currently Counter is an alpha beta engine with Hand Crafted Eval. Counter uses bitboards for board representation and Magic bitboards for move generation. Multithreading implemented with LazySMP method. Counter written in the go programming language. I think programming should be fun. And C/C++ is not funny at all.

How to write chess engine

Level0

  • able to generate legal moves and select random move
  • implement uci protocol
  • unit test for move generator

Level1 (only exact search methods)

  • PESTO eval
  • Iterative deepening
  • alphabeta, QS(good captures and check escapes)
  • Transposition table
  • Internal iterative deepening
  • move order: trans move, good captures, killers, bad captures and history
  • repeat detect
  • Aspiration window
  • PVS in root
  • simple time manager
  • mate distance pruning

Level2 (simple methods with maximum ELO increase)

  • NMP R=4+d/6, null move case in repeat detect
  • LMR R~log(d)log(m). In ideal case without lmr research, search tree will growth linear
  • Leaf prunings (reverse futility pruning, Late move pruning, SEE pruning)
  • Singular extension, check extension
  • eval (Material, King safety, passed pawns, threats, PSQT, mobility). Texel tuning
  • LazySMP

Level3 (complex methods or methods with low ELO increase)

  • complicated time manager
  • NNUE eval
  • endgame TB
  • PVS
  • performance (increment staged move generator, store static eval in TT or cache static eval, pawn hash table in eval, other optimizations)
  • Probcut
  • ...

References


Counter Copyright (c) Vadim Chizhov. All rights reserved.