Belofte - Todo
This file references belofte version 0.9.1 from 19/06/2017 on,
belofte last updated: 27/06/2017
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'.
Please refer to License,
About, Manual or
Things to do
This list is what we call, a TODO list. This list is to be
completed will all comments in the source code. Often, you will find
comments in the form of TODO: in the source code.
Bugs can also be found on sourceforge in the issuetracker.
- Validate the commands given based on their parameters. If a
certain command requires a numeric parameter, check that this parameter
is present before executing the command.
- Do not execute a command if not in the correct protover. If protover
2 is active, commands only present in protover 4 should not
- Test with other ICS servers.
- Create makefile, autoconf, ... for compilation.
- Include list of games Belofte played for information.
- Reuse instance.
- San moveentry.
- Other chess variants. Lightning/blitz and standard play.
Chess 960, ...
- Implement UCI protocol.
- Level command is not implemented. Will be implemented as part
of the iterative deepening process.
- Debug logging is not implemented.
- Double-clickig on Linux is creating a loop creating a huge
log file. No indication nor window to the user. Needs to be killed of by
the kill command.
Platform specific improvements
Netbeans compilation on Linux x64
- The compile target is x86, using x86_64 should be used.
- The compilation generates project instead of belofte.
- The source does not cater for the aberrant CR LF
termination. Probably some errors could arise.
- Recompilation with Visual C++ will probably break.
Mac OS X
- Debugging is currently not possible in netbeans. Needs
configuration of the debugger by signing it so it can attach
to a process. (Sandboxing issue!)
- Cross compilation with fat binaries for PPC / x86 has not been
- Compilation for 32 bit targets on 64 bit linux is not working.
- The move generation process could scan for duplicate positions, now
this is done in the reading of the opening book. As this leads to
very large files, this change is welcome.
- Keep the score of the pieces dynamically while applying
moves. Do not evaluate positions when the piece evaluation shows
a very large difference to the score of the current position.
(Meaningless unless the complete score is close to a alpha or beta
Position evaluation improvements
- The piece evaluation should be somewhat relative to the total
weight of pieces on the board.
- See if a bishop can be placed on a diagonal with a king, queen or
- See if a rook can be placed on a line or row with a queen.
- See if a rook can be placed on a row of the king. (line is
- Corrections in the static attack calculation.
- 2 pawns on line 3 with distance 4 bonus.
- Move generation is a bit sluggish. For king and knight,
precalculated positions can be used.
- Implementation of transposition tables. Most probably by
using Zobrist keys.
- Reduce the number of parameters on functions by splitting
generic functions in specialised functions. e.g. promotion flag
or queiscience flag.
- Sometimes, an illegal move is detected. Especially castling
is done sometimes illegally.
- Threefold position repetition is not recognised.
- 50 moves rule is not recognised.
- After some hours of playing, a sudden termination can occur
during auto saving of games to the pgn file.
- On Mac OS X, when running in background in another account,
the application may hook up the X11 environment when the processor is