Belofte version 2.1.8
A promising chess program using the UCI or Winboard interface
About belofte

An overview and general introduction of the belofte chess program.

This is the about belofte file for belofte, a promising chess program released under GNU - GPL v2.0.

Introduction

Belofte is a promising chess program. Belofte is a Flemish word that can be translated as 'a Promise' or 'someone with potential'. In this context, the latter is the intended meaning. The most correct translation would be 'A promising chess program'. It is pronounced as 'b-euh-loft-euh'. The program is a perfect companion of beginning chess players.

Belofte is cross platform and requires a graphical user interface (GUI). The pogram can also be run on the command line. Most users will want to use a graphical user interface. See the supported programs section below.

The chess program is compatible with xboard and UCI (universal chess interface). This means, it can be used as a plug-in for almost all commercial and free chess programs. At this moment, it has been tested on Mac OS X, Windows, UNIX, Solaris, Linux and Android. Binaries are available in 32 and 64 bit versions on Mac OS, Windows, Linux, Android and Raspberry. The C++ (11) source code is also available if one would like to create a version for another platform.

Version 2 is a rewrite of the program from scratch done in in C++11.


Playing a game

Launching the program from the graphical user interface

Please note that the program is not intended to run clicking from a graphical user interface. On Windows, a command line will be presented, on all other platforms, the program will run in background needing to be killed manually. Please configure a UI as explained below.

The program interfaces according to the UCI protocol or the Xboard protocol *(also known as the CECP or Winboard protocol)*. It works fine as well with any interface implementing the UCI or Xboard protocol.

Supported programs

Virtually all chess interface programs will work out of the box, and this on all platforms. (Linux, Windows, Mac, iOS, Android).

  • Arena (linux/windows)
  • Xboard (linux/macos)
  • Winboard (windows)
  • Cute Chess (linux/macos/windows)
  • DroidFish (android)
  • BanksiaGui (linux/macos/windows)
  • Scid vs PC (windows/macos)
  • ChessX (linux/macos/windows)
  • Nibbler - untested (linux/macos/windows)
  • Schredder (windows/macos/ios/android/linux)
  • Chessbase, Fritz, Chessmaster, ... (windows)
  • PyChess (linux)
  • eBoard (linux)
  • Sigma chess: Mac OS X (pre 10.6)
  • Jin/Fixation (Mac OS X PPC)

This section is far from complete, it just gives some ideas about the possibilities. Please search the internet on xboard/winboard/uci compatible programs to get a full list. A good starting point can be this list, this list and this list.

Please refer to the user manual for more details on configuration options.

Launching the program on the command line

Please open a terminal or command prompt and launch the program. The program accepts different optional command line parameters as shown below:

  • Linux, BSD Unix, Mac OSX, Unix, Solaris Windows 10 with WSL or WSL-2.
./belofte [@script]
./belofte --help
./belofte --uci [@script]
./belofte --version
./belofte -xboard [@script]
  • Windows 95, 98, Me, Vista, 7, 8, 8.1, 10, 11

Replace ./belofte with belofte.exe.

  • Android, Arduino, ...

To be completed.

Typical game on the command line

After having started the program, issue the following commands:

belofte>uci
id name Belofte 2.1.8
id author Yves De Billoëz
... further option lines ...
uciok
>isready
readyok
>ucinewgame
>isready
readyok
>position startpos
>go depth 1
... wait for engine to play its move ...
belofte>quit

Configuring belofte

The UCI protocol has support for runtime configuration that can be activated through the UI.

Possible UCI configuration commands (default in bold):

  • alg Random|StaticEval|BruteForce|SearchIterativeBF| AB |ABFS|ABFH
  • evaltype PiecesOnly|StaticBoard| PositionalBoard

After reading eventual command line parameters, belofte will parse a file passed on the command line. If none is passed, Belofte will start reading a file consisting of its program name and a .rc suffix. This can be useful to read e.g. an opening book or to configure the algorithm.

e.g. One could rename belofte-2.1.8 into belofte-2.1.8-random and supply an rc-file with the name belofte-2.1.8-random.rc with the alg Random command in order to force this version to play with the ramdom protocol.

#!/bin/env belofte.sh
# configuration script
echo Reading configuration script belofte-2.1.8-random.rc
alg Random

At runtime, after playing a move, one could undo the move and issue an alg BruteForce command to search again with the brute-force algorithm.

When compiling, it is possible to tweak how belofte works. Please refer to the compiling instructions.


Playing against other engines

Belofte can be tested against other engines. Please edit the test/engines.json file to include your engine. You can edit the test/tour-allversions.sh script to organise a tournament in between different engines. Make sure to extend the path in the script to include all engines you want to use. Use symbolic links if required.

cd test
./tour-allversions.sh
./tour-nextversion.sh -debug -concurrency 2
./tour-bottomlist.sh -concurrency 8

Following an ongoing match.

cd test
./watchtour.sh tour-nextversion

Belofte can be used with cutechess[-cli], BanksiaGui and Arena.

Testing positions, benchmarking, finding mates

Belofte supports epd to test a position. Launch epd pos, epd file commands with valid epd strings. Please refer to the documentation for more information.

cd test
./belofte.sh belofte bmi2 2.1.8
belofte>epd file epd/test.epd

Run benchmark against specific compile (GCC only):

cd test
./belofte.sh belofte popcnt 2.1.8 --bench

Run windows (32/64 bit) executable from linux through wine:

cd test
./belofte.sh wine 64 2.1.8 --version

Belofte also supports executing commands from a command file. Use exec to run a test.

cd test
./belofte.sh
belofte>@testcase/perft01.rc

One can also launch the program to run a script immediately.

cd test
./belofte.sh belofte next @testcase/test.rc

Strength

The current strength of Belofte is about 1210 elo at CCRL (2.1.3). Version 0.9.18/.20 should be the strongest version. Unfortunately, version 0.9.18 has some issues on windows and did not make it in the public elo lists.

Evolution of strength

The version has undergone some enhancements over the different versions. Some were not always correct. For a history of the different versions, and their reflection on the ELO obtained, please consult the list below.

Version CCRL Comment
2.1.3 1035 Alpha-Beta + Positional Evaluation
2.1.2 1027 Alpha-Beta Fail Soft + Static evaluation + QS
32 bit version tested (bad compile)
2.1.1 1007 Alpha-Beta + Positional evaluation + QS
2.1.0 1045 Alpha-Beta + Static evaluation + QS
2.0.8 798 Iterative BF + QS
2.0.6 BruteForce + QS
2.0.4 StaticEval + QS
2.0.0->2 Pure random player
Version Estimate Comment
0.9.13->20 1300 **Not stable**
0.9.12 1198 (CCRL: 1195) QS search fixed
0.9.10
0.9.6->8
0.9.3 989 (CCRL: 1045)
0.9.1 **Not stable**
0.9.0 692 (CCRL: 675)
0.2.8 950 (CCRL: 1195) (GURL-2: 751) (Freechess: 742)
0.2.7 1130
0.2.6 1190 Added opening book. (freechess: 6600 games)
0.2.5 1038
0.1 680

Rating lists

CCRL

CCRL Blitz Rating List - Custom engine selection
2583293 games played by 3089 programs, run by 22 testers
Ponder off, General books (up to 12 moves), 3-4-5 piece EGTB
Time control: From Jan 2020, equivalent to 2'+1" on an Intel i7-4770K. See the "about" page.
Computed on August 14, 2021 with Bayeselo based on 2'583'293 games
Tested by CCRL team, 2005-2021, http://ccrl.chessdom.com/ccrl/404/
Rank Engine Elo + - Score AvOp Games
1 Belofte 2.1.3 64-bit 1218 +26 -26 50.1% -2.0 526
Belofte 0.9.12 1195 +27 -28 40.7% +68.7 497
Belofte 0.9.3 64-bit 1043 +127 -95 91.6% -501.4 367
Belofte 2.1.0 64-bit 1043 +105 -95 42.8% +40.9 459
Belofte 2.1.2 1025 +121 -113 35.9% +104.1 524
Belofte 2.1.1 64-bit 1006 +140 -133 32.7% +140.6 639
Belofte 2.0.8 64-bit 797 +349 -341 15.3% +332.4 264
Belofte 0.9.0 674 +469 -464 53.6% -41.9 3237

<tt>##chessprogramming</tt>

To get its current rating in the irc:libera.chat ##chessprogramming channel, type the following command: !rating belofte 40/4

CCRL www.rwbc-chess.de

http://www.rwbc-chess.de/Ratings/Ratings.htm
Version 0.2.8: position 1207
CCRL Blitz Rating List - Custom engine selection
2205595 games played by 2595 programs, run by 22 testers
Ponder off, General books (up to 12 moves), 3-4-5 piece EGTB
Time control: From Jan 2020, equivalent to 2'+1" on an Intel i7-4770K. See the "about" page.
Computed on March 7, 2020 with Bayeselo based on 2'205'595 games
Tested by CCRL team, 2005-2020, http://ccrl.chessdom.com/ccrl/404/
Rank Engine Elo + - Score AvOp Games
1 Belofte 0.9.12 1205 +28 -28 42.0% +58.5 460
Belofte 0.9.3 64-bit 988 +162 -132 93.3% -497.3 360
Belofte 0.9.0 691 +433 -428 53.6% -42.7 3237

freechess.org

Finger of Belofte(C):
rating RD win loss draw total best
Blitz 742 50.9 11 70 0 81 827 (30-Nov-2004)
Lightning 1164 305.0 0 2 0 2
Total time online: 14 hrs, 11 mins
% of life online: 13.0 (since Sun Nov 28, 01:43 CET 2004)
Timeseal : Off
1: I am a computer, running on a Dual G4 1.25 Ghz
2: I am not strong though, rated around 700 elo but improving
3: You can find more on www.internetcontact.be/~macchess
4: I do not have opening books, no endgame knowledge, no nothing....
5: I play regular chess. Other variants will be added later.
6: I will not play against abusers.... and only rated games. For now.

Beware of Elo levels

There are as many elo levels as peer groups. Elo levels can be compared to IQ. They give a relative indication how persons compare to each other but they cannot be used to compare a person of group A to a person of group B. FIDE elo at the 1900 range is comparable to USCF in the 2000 range, and FIDE 2500 is comparable to USCF 2650. The score obtained for a program should more or less be the average of all different tests, but is no absolute indication. For each test set, the elo level for a 50% and 100% score is given, together with the standard deviation. When scoring less than 50%, the results should no longer be representative.

Project structure

  • doc contains all the documentation;
  • src contains the source code and include files;
  • dist contains subfolders per platform where the compiled binaries will be found;
  • project contains the makefile and subfolder for each project environment;
  • test contains different test scripts.

Platform specific notes

MacOS

Compiled with incomplete support for C++11. Compiled with #define INCOMPLETE_C11.

Mac OS Apple silicon (M1, M1 pro/max)

Untested.

Mac OS x86 32

The latest supported version is 10.5. Binary available as 0.2 till 0.2.8 and >2.0.1.

Mac OS X (before Tiger 10.0, 10.1, 10.2, 10.3)

Minimum requirement is a G3 with 32 MB ram plus the requirements of X11.

Mac OS PPC

Versions 0.2 till 0.2.8 are the only binaries available. The latest supported version is 10.5 through a universal binary.

Android

When compiling for Android, xboard mode is disabled and an implicit uci command is issued upon program start. Compiled with #define BELOFTE_UCIMODE. Version 2.0.8 and higher available for both ARM and x86 in both 32 and 64 bit.

Windows

No Unicode supported. Compiled with #define BELOFTE_NOUNICODE and #define _WIN32 (also for 64 bit).

Windows 3.11

Version 0.2 till 0.2.8. Higher versions have not been tested. Make sure you have Win 32 installed.

Linux PPC

The latest version for which the source code has been tested is version 0.2.8.

Raspberry/Arduino

Untested.

Solaris

Version 0.2.2 is the only binary available. SPARC only. Compile with #define __LITTLE_ENDIAN__.

HPUX

Version 0.2.2 is the only binary available. Itanium only. Compile with #define __LITTLE_ENDIAN__.

Other platforms

Version 0.2.8 used to run in the past on freechess. Missing platforms are: DOS, Windows CE, Windows PE, Palm, iOS.

eof