Categorygithub.com/ChizhovVadim/CounterGo
repository
5.0.0+incompatible
Repository: https://github.com/chizhovvadim/countergo.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author

# README

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:

VersionGRLCCRL 40/15FastGM 60+0.6CEGT 40/4
4.03115310129352997
3.9306530752959
3.82994301228172887
3.72972297027842854
3.627572820
3.5290727182777
3.4288126792742
3.3284726472700
3.2283426242692
3.12784

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.