Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mattesthaut/victoire
A UCI chess engine written in Zig.
https://github.com/mattesthaut/victoire
bitboard-chess-engine chess-engine uci-chess-engine ziglang
Last synced: about 1 month ago
JSON representation
A UCI chess engine written in Zig.
- Host: GitHub
- URL: https://github.com/mattesthaut/victoire
- Owner: MattEstHaut
- Created: 2024-04-07T21:03:58.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2024-04-13T00:17:45.000Z (9 months ago)
- Last Synced: 2024-11-28T09:44:02.906Z (about 1 month ago)
- Topics: bitboard-chess-engine, chess-engine, uci-chess-engine, ziglang
- Language: Zig
- Homepage:
- Size: 93.8 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Victoire ⚔️
**Victoire** is a [UCI](https://github.com/nomemory/uci-protocol-specification) chess engine written in [Zig](https://ziglang.org/). It uses **pruning** and **reduction** techniques to reduce the search space of the **principal variation search** (**PVS**). And several other methods to accelerate the search or enhance evaluation, such as the use of **transposition tables**, **quiescence search**, **tapered evaluation**...
## ⚡️ Quick start
First, download and install **Zig** from the [official website](https://ziglang.org/download/).
> **⚠️ Note**: version **`0.12.0`** is recommended.
Next, clone this repository and build the project using the command:
```bash
zig build -Doptimize=ReleaseFast
```You can now connect **Victoire** to a **GUI** such as [Cute Chess](https://github.com/cutechess/cutechess) or directly run the engine with the command:
```bash
zig-out/bin/Victoire
```## 🌟 Features
**Victoire** uses the [UCI](https://github.com/nomemory/uci-protocol-specification) protocol to communicate.
### 🎮 Available commands
The commands interpreted by the engine are listed below, more **UCI** protocol commands will be added in the future.
| **Commands** | **Description** | **Comments** |
|------------------|-----------------------|---------------------------------------------------|
| **`uci`** | | |
| **`ucinewgame`** | Initialize a new game | Reset transposition table |
| **`isready`** | | |
| **`position`** | Set the position | Support `fen`, `startpos` and `moves` |
| **`go`** | Start the search | See below for available options |
| **`go perft`** | Start the perft test | Usage: `go perft ` |
| **`stop`** | Stop the search | Stop ponder thread |
| **`setoption`** | Set an option | |
| **`quit`** | Quit the engine | Can be used at any time |**`go`** comand supports `movetime` (in ms), `depth` (in plies), `infinite`, `wtime`, `btime`, `winc`, `binc` and `movestogo`.
### ⚙️ Available options
Here is the list of currently available options. Use the command `setoption name value ` to change them.
| **Option** | **Type** | **Description** | **Comments** |
|-------------------|----------|----------------------------------|------------------------------------------|
| **`Hash`** | `spin` | Transposition table size (in MB) | Will only take effect after `ucinewgame` |
| **`Ponder`** | `check` | Enable pondering | Take effect after next `go` command |
| **`TimeControl`** | `check` | Enable time control | Take effect after next `go` command |### 📝 Example
```bash
uci # Prints available options and default values
setoption name Hash value 128
ucinewgame # Initialize a new gameposition startpos moves e2e4 e7e5
# Or position fen rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR b KQkq -go movetime 5000 depth 50 # Search for 5 seconds or 50 plies
```