Skip to content

fmeynard/gochess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

139 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoChess

Go chess engine focused on:

  • legal move generation
  • make / unmake
  • attack detection
  • perft correctness and performance work

The project is not a full playing engine yet. Search, evaluation, self-play orchestration, and Lichess integration are planned but not implemented.

Layout

  • internal/board Mutable board state, move representation, make/unmake, Zobrist hashing.
  • internal/movegen Pseudo-legal move generation, legal filtering, checks, pins, and attack analysis.
  • internal/engine Engine orchestration and perft recursion.
  • cmd/perft.go Simple perft entrypoint.
  • cmd/benchperft/main.go Benchmark entrypoint used by scripts/bench-perft.sh.
  • cmd/uci/main.go UCI entrypoint for GUI integration and external engine tooling.
  • docs/ Architecture notes, benchmark history, and optimization notes.

Common Commands

Run tests:

go test ./...

Run the reference perft benchmark:

BENCH_DEPTH=7 BENCH_MODE=hot BENCH_WARMUP=1 BENCH_NO_PERFT_TRICKS=1 ./scripts/bench-perft.sh

Run a direct perft divide:

go run ./cmd/perft.go '8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 1' 7

Build the UCI binary:

mkdir -p ./bin
go build -o ./bin/gochess-uci ./cmd/uci

Documentation

Useful External Links

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors