BitOChess
UI Version 0.6.5
Introduction
I’ve been a life-long chess fan and intrigued by chess engines and artifical-intelligence. Recently I began implementing a console based simple chess engine based on some ideas to let a program evaluate positions with no or minimal human pre-sets. Traditional chess-engines are programmed for certain positions with different set of values and evaluation functions. These have been fine tuned over many years with trial and error and testing against humans and other engines. Recently came along Alpha-Zero a new type of neural-networks based engine that took a different approach based on modern AI. I’d like to see what kind of game my engine would play based on my ideas of learning and evaluation of a position. I’m not expecting that it would beat any modern chess-engine but I’d like to see if it can play more human-like or more intelligent way then traditional chess-engines. The basic idea of my engine is that it should learn from the most basic set of rules and also eventually retain memory of the learned information. So it’s similar to the A.I. approach but without neural networks.
Features / Status
I started out with a small console based interface first but I quickly realized that with a little more work I can get a much nicer UI. Since I’m familiar with SDL/Allegro I decided to go with SDL. The interface is only needed to ease in testing features and playing. The current engine has the following features
- SDL2/ImGui for the UI
- C++11 for the chess-engine and graphics
- Engine can be linked as C++ library
- Full unit testing with GoogleTest
- Benchmarks
- Small graphical UI using the library for playing/testing
- Cross-platform (Linux, Windows, OSX, IOS, Android)
- The engine is currently at level 0 meaning it knows the rules and can play based on them but at the lowest level. It searches one move deep.
- UI can save/load FEN position
- Find first mate to arbitrary depth (not optimized)
- Find all mates to arbitrary depth
- Speech synthesis via Flite
- Adjustable piece movement speed
Missing
- En-passant isn’t yet implemented
- No 50 move rules
- No 150 move rule
- Windows/Android/Macos releases so far, Iphone in progess…
Look in my releases section for releases.
Planned for the Beta release
-
Speech synthesis via AWS Polly for text to speech. This is in addition to the built in Flite speech synthesizer
-
The AWS Polly text-to-speech is much nicer, however it’s a payed service. The initial trial will be free but paying users will need to sign up for aws to use these features
-
Transcription via pocketSphinx offline works okay but it’s inaccurate so far. I may need to restrict and train it to key commands
-
Transcrption service online probably via AWS transcribe for handling spoken commands and blind-fold playing. The initial trial will be free but paying users will need to sign up for ASW to use these features
-
Alternate offline transcription solution such as mobile-phone dictation to be explored.
-
UI to switch properly for mobile phone layout. Buttons are too small
-
Engine “memory” to be downladed or generated. Then all the engine levels should be selectable.