Skip to content

Commit e34affc

Browse files
committed
Update docs, config refs, and add app icon
- Renamed config docs: TournamentConfig.md and EngineDefConfig.md replace old file names in all references and links. - Major README overhaul: added Quick Start, Build from Source, console commands, log info, and clarified protocol support. - Updated GUI and docs to use new config doc names. - Set application icon via chessIcon.ico in WebGUI.csproj. - Improved language, formatting, and consistency throughout documentation.
1 parent 81ca3a7 commit e34affc

14 files changed

Lines changed: 146 additions & 73 deletions

ConsoleTools.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ dotnet run -c Release -- tournamentjson C:/Dev/Chess/Tournaments/my_tournament.j
5050
- Outputs PGN to the configured `PgnOutPath`
5151
- Displays live standings and results in the console
5252

53-
**Configuration:** See [Tournament.json.md](Tournament.json.md) for full configuration reference.
53+
**Configuration:** See [TournamentConfig.md](TournamentConfig.md) for full configuration reference.
5454

5555
---
5656

@@ -292,8 +292,8 @@ Help: Available commands are:
292292

293293
## Related Documentation
294294

295-
- [Tournament.json.md](Tournament.json.md) - Tournament configuration reference
296-
- [EngineDef.json.md](EngineDef.json.md) - Engine definition configuration
295+
- [TournamentConfig.md](TournamentConfig.md) - Tournament configuration reference
296+
- [EngineDefConfig.md](EngineDefConfig.md) - Engine definition configuration
297297
- [PuzzleConfig.md](PuzzleConfig.md) - Lichess puzzle test configuration
298298
- [EretConfig.md](EretConfig.md) - ERET puzzle test configuration
299299
- [SwissMode.md](SwissMode.md) - Swiss tournament mode details
File renamed without changes.
File renamed without changes.

README.md

Lines changed: 68 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![Join the Discord](https://img.shields.io/discord/1379064923744894987?label=Discord&logo=discord&style=flat)](https://discord.gg/tRMYTbk5TE)
44

5-
**EngineBattle** is a comprehensive tool designed for running tournaments, testing, analyzing, and comparing chess engines. It simplifies puzzle-based testing, detailed analysis, tournament management, and provides interactive visualizations, making it ideal for chess developers, researchers, and streamers.
5+
**EngineBattle** is a comprehensive tool for running tournaments, testing, analyzing, and comparing chess engines. It supports engines using the **UCI** and **Winboard/XBoard** protocols. With puzzle-based testing, detailed analysis, tournament management, and interactive visualizations, it is ideal for chess developers, researchers, and streamers.
66

77
![Tournament](WebGUI/wwwroot/Img/Tournament.png)
88
*Example: Tournament GUI — follow live games, standings, and results with interactive visualizations.*
@@ -40,7 +40,7 @@ EngineBattle supports four tournament formats configured via `TournamentMode` in
4040
- **Swiss:** Pairings are based on score each round, scaling well for larger fields.
4141
- **Swiss (odd players):** If the player count is odd, one engine receives a bye each round (worth 1 point) and byes are not repeated when possible.
4242

43-
See [Tournament.json.md](Tournament.json.md) for configuration details, plus [SwissMode.md](SwissMode.md) and [CupMode.md](CupMode.md) for mode-specific notes.
43+
See [TournamentConfig.md](TournamentConfig.md) for configuration details, plus [SwissMode.md](SwissMode.md) and [CupMode.md](CupMode.md) for mode-specific notes.
4444

4545

4646
### 🔍 Analysis Mode
@@ -69,7 +69,7 @@ See [Tournament.json.md](Tournament.json.md) for configuration details, plus [Sw
6969

7070
### 💻 Console Mode
7171

72-
- **Basic Console Mode:** Minimalist console mode designed for quicker time controls and node-testing, supporting parallel execution of multiple games for quick benchmarking.
72+
- **Basic Console Mode:** Minimalist console mode designed for quicker time controls and node-testing, supporting parallel execution of multiple games for quick benchmarking. Console mode requires building from source (see [Build from Source](#-build-from-source) section).
7373
- **Puzzle Testing in Console Mode:** Easily run automated engine tests on chess puzzles directly from the console. Configure puzzle sources, formats, and test parameters using the [PuzzleConfig.md](PuzzleConfig.md) file for flexible and reproducible puzzle-based benchmarking. Results can later be viewed and analyzed in the GUI by loading the generated .epd file for puzzle visualization (accessible via Tools > Test Canvas in the GUI menu).
7474

7575
### 🎥 Streaming and Community Features
@@ -79,50 +79,83 @@ See [Tournament.json.md](Tournament.json.md) for configuration details, plus [Sw
7979

8080
---
8181

82-
## ⚠️ Limitations
82+
## 📦 Quick Start
8383

84-
- **UCI Engines Only:** EngineBattle exclusively supports chess engines using the Universal Chess Interface (UCI). Older or alternative protocols are not supported.
84+
Pre-built binaries are available from [GitHub Releases](https://github.com/lepned/EngineBattle/releases).
85+
86+
### 1. Download
87+
88+
Choose a variant:
89+
90+
| Variant | Size | .NET Runtime Required? |
91+
|---------|------|----------------------|
92+
| **Self-contained** | ~58 MB | No — everything is bundled |
93+
| **Framework-dependent** | ~16 MB | Yes — install [.NET 10 Runtime](https://dotnet.microsoft.com/download/dotnet/10.0) first |
94+
95+
Available platforms: **win-x64**, **linux-x64**, **osx-x64**, **osx-arm64**
96+
97+
### 2. Run
98+
99+
Extract the zip and run:
100+
101+
- **Windows:** `EngineBattle.exe`
102+
- **Linux / macOS:** `./EngineBattle`
103+
104+
Your browser opens automatically. If not, navigate to the localhost URL shown in the console.
105+
106+
### 3. First Run
107+
108+
A blank `tournament.json` is auto-created next to the executable on first startup. See [Configuration](#configuration) below to set up your engines.
85109

86110
---
87111

88-
## ✨ Purpose and Goals
112+
## 🛠 Build from Source
89113

90-
EngineBattle streamlines the process of testing, evaluating, and showcasing chess engines, offering powerful tools and intuitive interfaces designed for chess engine developers, enthusiasts, researchers, and streamers. Its primary focus is on creating enjoyable, interactive, and community-friendly engine tournaments and puzzle-based testing environments.
114+
For developers who want to modify the code, use the CLI console commands, or run the latest unreleased changes.
91115

92-
Enjoy the powerful capabilities of EngineBattle and enhance your chess engine experience today!
116+
### Prerequisites
93117

118+
[.NET 10.0 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) or later.
94119

120+
### Clone and Run
95121

96-
## Prerequisites
122+
```bash
123+
git clone https://github.com/lepned/EngineBattle.git
124+
cd EngineBattle/WebGUI
125+
dotnet run -c release
126+
```
97127

98-
To run the program, you will need to have .NET 10.0 or later installed. You can download it from the official [.NET website](https://dotnet.microsoft.com/download/dotnet/10.0).
128+
A console application should now run with a link to the localhost URL. Ctrl + click on the link to open the URL in the browser. To keep your local copy updated:
99129

100-
## Installation
130+
```bash
131+
git pull origin main
132+
```
101133

102-
1. Create a folder where the code is to be installed (e.g., `Chess` folder).
103-
2. Open Terminal and change the directory to the folder you just created.
104-
3. Run the following git command to clone the repository:
105-
` git clone https://github.com/lepned/EngineBattle.git `
106-
4. Change the directory to the `WebGUI` folder inside the newly created `EngineBattle` folder:
107-
` cd EngineBattle/WebGUI `
108-
109-
5. Run the following dotnet command to start the application:
110-
` dotnet run -c release `
134+
### Console Commands (source builds only)
111135

112-
A console application should now run with a link to the localhost URL. Ctrl + click on the link to open the URL in the browser (most testing is done in Edge browser). You should now be able to see the web GUI in the browser.
113-
To keep your local copy of this repo updated, navigate to the `EngineBattle` folder in the console and run:
136+
The Console project provides CLI commands not included in the release binaries:
114137

115-
` git pull origin main `
138+
```bash
139+
cd Console
140+
dotnet run -c release -- tournamentjson <fullPathToTournament.json>
141+
dotnet run -c release -- puzzlejson <fullPathToPuzzleConfig.json>
142+
dotnet run -c release -- eretjson <fullPathToEretConfig.json>
143+
dotnet run -c release -- analyze <engine> [fen] [options]
144+
dotnet run -c release -- compare <engine1> <engine2> [options]
145+
dotnet run -c release -- tune <fullPathToTunerConfig.json>
146+
```
147+
148+
---
116149

117150
## Configuration
118151

119152
Before you can do much with the GUI, you need to configure all the engines you want to use. Follow these steps to configure `EngineSetup`:
120153

121-
1. Edit the `tournament.json` file located under the `wwwroot` folder in `WebGUI` - [Link to Tournament.json](Tournament.json.md).
122-
- The tournament.json file will be automatically created and placed in the `wwwroot` folder on first startup if it doesn't already exist.
123-
- If the tournament.json file is not present (for unknown reasons), you can create one by copying the `Tournament.json` file from the link above and pasting it into the `wwwroot` folder.
154+
1. Edit the `tournament.json` file - [Tournament Configuration Reference](TournamentConfig.md).
155+
- **Release binaries:** `tournament.json` is auto-created next to the executable on first startup.
156+
- **Source builds:** `tournament.json` is located in the `WebGUI/wwwroot` folder and is auto-created on first startup if it doesn't exist.
124157
2. Create and define the folder where all `engineDefs` are located. Set the path to this folder under the key: `EngineDefFolder`.
125-
3. Every engine needs an `EngineDef.json` file - [Link to EngineDef.json](EngineDef.json.md) / [Link to LC0Def.json](LC0Def.json.md). Make a copy, configure each engine as you wish, and save it with a proper name like `SFDef.json` for Stockfish.
158+
3. Every engine needs an `EngineDef.json` file - [Engine Configuration Reference](EngineDefConfig.md) / [LC0 Configuration Reference](LC0Config.md). Make a copy, configure each engine as you wish, and save it with a proper name like `SFDef.json` for Stockfish.
126159
4. Add all your `EngineDef.json` files that will be part of the tournament under the key: `EngineDefList`. See below for an example of how to do this.
127160
```
128161
"EngineSetup": {
@@ -159,9 +192,13 @@ After you have created and configured a `tournament.json` file on your computer,
159192
160193
The `wwwroot` folder includes a selection of images used by the program, located in the Img subfolder. To add new images for engines you include in tournaments, simply place them in the `Img` folder as .png or .jpg files if the image does not already exist there. This allows you to customize the visual representation of each engine in your tournaments.
161194
195+
### Logs
196+
197+
Log files are written to a `logs/` folder in the current working directory. Logs use daily rolling files with a 10 MB size limit per file.
198+
162199
## Running a Tournament
163200
164-
Use your browsers built-in zoom function to adjust the GUI size to your preference. For streaming, its recommended to set the zoom level to 80% or 90%, depending on your screen resolution and size.
201+
Use your browser's built-in zoom function to adjust the GUI size to your preference. For streaming, it's recommended to set the zoom level to 80% or 90%, depending on your screen resolution and size.
165202
Press F11 to enter full-screen mode — this is also recommended for the best streaming experience.
166203
167204
To operate a tournament, you only need two keys:
@@ -258,7 +295,7 @@ Each `ResultReason` has a corresponding explanation that provides more details a
258295
259296
## Analysis Mode
260297
261-
The analysis mode provides a user-friendly interface for analyzing chess positions and optionally comparing engine evaluations side by side.
298+
The analysis mode provides a user-friendly interface for analyzing chess positions and optionally comparing engine evaluations side by side.
262299
263300
Analysis mode uses a `AnalyzeConfig.json` file - [Link to AnalyzeConfig.json](AnalyzeConfig.md) - to pick engines in order from top to bottom, so the first engine in the list will be picked for single analysis and the first two engines will be picked for dual analysis.
264301
@@ -310,7 +347,6 @@ This application uses the following libraries, which are licensed under their re
310347
- **CommandLineParser** - [MIT License](https://github.com/commandlineparser/commandline/blob/master/License.md)
311348
- **Fathom** - [MIT License](https://github.com/basil00/Fathom/blob/master/LICENSE)
312349
- **Toolbelt.Blazor.HotKeys2** - [Mozilla Public License 2.0](https://github.com/jsakamoto/Toolbelt.Blazor.HotKeys/blob/master/LICENSE)
313-
- **CliWrap** - [MIT License](https://github.com/Tyrrrz/CliWrap/blob/master/License.txt)
314-
- **chessboardjs** - [MIT License](https://github.com/oakmac/chessboardjs/blob/master/LICENSE.md)
350+
- **CliWrap** - [MIT License](https://github.com/Tyrrrz/CliWrap/blob/master/License.txt)
351+
- **chessboardjs** - [MIT License](https://github.com/oakmac/chessboardjs/blob/master/LICENSE.md)
315352
- **plotly.js** - [MIT License](https://github.com/plotly/plotly.js/blob/master/LICENSE)
316-
File renamed without changes.

WebGUI/Components/App.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<link href="_content/MudBlazor/MudBlazor.min.css" rel="stylesheet" />
1212
<link href="/css/chessboard2.min.css" rel="stylesheet" />
1313
<link href="css/site_v1.17.css" rel="stylesheet" />
14-
<link href="EngineBattle.WebGUI.styles.css" rel="stylesheet" />
14+
<link href="EngineBattle.styles.css" rel="stylesheet" />
1515
<link rel="icon" type="image/x-icon" href="Img/chessIcon.png" />
1616
<HeadOutlet @rendermode="@(new InteractiveServerRenderMode(prerender: false))" />
1717

WebGUI/Components/Pages/EngineDefOverview.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<PageTitle>EngineDef.json</PageTitle>
99

1010
<MudContainer>
11-
<WebGUI.Components.Layout.ExperimentalLayout.MarkDigComponent FileName="EngineDef.json.md" />
11+
<WebGUI.Components.Layout.ExperimentalLayout.MarkDigComponent FileName="EngineDefConfig.md" />
1212
</MudContainer>
1313
<style>
1414
body {

WebGUI/Components/Pages/TournamentSetup.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<PageTitle>Tournament setup</PageTitle>
66

77
<MudContainer>
8-
<WebGUI.Components.Layout.ExperimentalLayout.MarkDigComponent FileName="Tournament.json.md" />
8+
<WebGUI.Components.Layout.ExperimentalLayout.MarkDigComponent FileName="TournamentConfig.md" />
99
</MudContainer>
1010
<style>
1111
body {

WebGUI/WebGUI.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22
<PropertyGroup>
33
<TargetFramework>net10.0</TargetFramework>
4-
<AssemblyName>EngineBattle.WebGUI</AssemblyName>
4+
<AssemblyName>EngineBattle</AssemblyName>
55
<ImplicitUsings>enable</ImplicitUsings>
6+
<ApplicationIcon>chessIcon.ico</ApplicationIcon>
67
</PropertyGroup>
78
<ItemGroup>
89
<PackageReference Include="Markdig" Version="0.41.1" />

WebGUI/chessIcon.ico

178 KB
Binary file not shown.

0 commit comments

Comments
 (0)