EubosChess
Moderators: Elijah, Igbo, timetraveller
-
- Global moderators
- Points: 6 232,00
- Forum Contributions
- Posts: 2134
- Joined: 01/11/2019, 14:27
- Status: Offline (Active 5 Hours, 24 Minutes ago)
- Topics: 349
- Reputation: 369
- Location: Biergarten
- Has thanked: 1885 times
- Been thanked: 4054 times
EubosChess
Author: Chris Bolt
v1.0.3
A basic Java chess engine, written for kicks. Uses jcpi for the UCI protocol parts. Kind of weak, doesn't evaluate for king safety, for example. Now uses transpostion hashing, but because it runs in the Java VM on a bog standard PC, doesn't search very deeply (around 100K Nodes/s, though this is actually quite hard to evaluate due to the hashing). This is my first chess engine, my first full Java project, my first open source contribution...
Current release version 1.0.3
You can get a binary from the bin folder, alongside a batch file for running Eubos from Arena.
You must have installed Java version 8 on the PC to use Eubos (get it from java.com)
To install Eubos as an engine in Area:
-Select Engines > Install New Engine
-In the file browser dialog that appears, change the drop down to *.bat
-Navigate to the Eubos binary location, select the StartEubos.bat
-Select UCI protocol to communicate with Eubos
-That's it!
Homepage
v1.0.3
A basic Java chess engine, written for kicks. Uses jcpi for the UCI protocol parts. Kind of weak, doesn't evaluate for king safety, for example. Now uses transpostion hashing, but because it runs in the Java VM on a bog standard PC, doesn't search very deeply (around 100K Nodes/s, though this is actually quite hard to evaluate due to the hashing). This is my first chess engine, my first full Java project, my first open source contribution...
Current release version 1.0.3
You can get a binary from the bin folder, alongside a batch file for running Eubos from Arena.
You must have installed Java version 8 on the PC to use Eubos (get it from java.com)
To install Eubos as an engine in Area:
-Select Engines > Install New Engine
-In the file browser dialog that appears, change the drop down to *.bat
-Navigate to the Eubos binary location, select the StartEubos.bat
-Select UCI protocol to communicate with Eubos
-That's it!
Homepage
-
- Global moderators
- Points: 6 232,00
- Forum Contributions
- Posts: 2134
- Joined: 01/11/2019, 14:27
- Status: Offline (Active 5 Hours, 24 Minutes ago)
- Topics: 349
- Reputation: 369
- Location: Biergarten
- Has thanked: 1885 times
- Been thanked: 4054 times
EubosChess
v1.0.5
-Though still slow, Eubos is now twice as fast as it was in v1.0.2.
-I have made a number of optimisations in the move list generation, hashing, perform and undo move functions, as well as reducing the number of times the costly isSquareAttacked routine is called.
Download
-Though still slow, Eubos is now twice as fast as it was in v1.0.2.
-I have made a number of optimisations in the move list generation, hashing, perform and undo move functions, as well as reducing the number of times the costly isSquareAttacked routine is called.
Download
-
- Global moderators
- Points: 6 232,00
- Forum Contributions
- Posts: 2134
- Joined: 01/11/2019, 14:27
- Status: Offline (Active 5 Hours, 24 Minutes ago)
- Topics: 349
- Reputation: 369
- Location: Biergarten
- Has thanked: 1885 times
- Been thanked: 4054 times
EubosChess
v1.0.7
Fixed a bug that would cause Eubos to send the best move found as whatever Move was found first at the current ply, in certain circumstances when the timed search was interrupted. This defect effectively meant it was searching for less time than was availlable, so it has produced a reasonable increase in strength.
Download
Fixed a bug that would cause Eubos to send the best move found as whatever Move was found first at the current ply, in certain circumstances when the timed search was interrupted. This defect effectively meant it was searching for less time than was availlable, so it has produced a reasonable increase in strength.
Download
-
- Global moderators
- Points: 6 232,00
- Forum Contributions
- Posts: 2134
- Joined: 01/11/2019, 14:27
- Status: Offline (Active 5 Hours, 24 Minutes ago)
- Topics: 349
- Reputation: 369
- Location: Biergarten
- Has thanked: 1885 times
- Been thanked: 4054 times
EubosChess
v1.1.0
As v1.0.9 but with an extra yield point in the main search thread and explicit garbage collection disabled. This improves VM scheduler latency and search throughput on both Heroku and on my test machines.
Download
As v1.0.9 but with an extra yield point in the main search thread and explicit garbage collection disabled. This improves VM scheduler latency and search throughput on both Heroku and on my test machines.
Download
-
- Global moderators
- Points: 6 232,00
- Forum Contributions
- Posts: 2134
- Joined: 01/11/2019, 14:27
- Status: Offline (Active 5 Hours, 24 Minutes ago)
- Topics: 349
- Reputation: 369
- Location: Biergarten
- Has thanked: 1885 times
- Been thanked: 4054 times
-
- Global moderators
- Points: 6 232,00
- Forum Contributions
- Posts: 2134
- Joined: 01/11/2019, 14:27
- Status: Offline (Active 5 Hours, 24 Minutes ago)
- Topics: 349
- Reputation: 369
- Location: Biergarten
- Has thanked: 1885 times
- Been thanked: 4054 times
EubosChess
v1.1.4
Now running nearly twice as fast as v1.0.6.
Bug fixes when scoring mate positions in the hash table; Eubos now finds deeper mating sequences, for example Mate-in-7+, reliably.
Download
Now running nearly twice as fast as v1.0.6.
Bug fixes when scoring mate positions in the hash table; Eubos now finds deeper mating sequences, for example Mate-in-7+, reliably.
Download
-
- Global moderators
- Points: 6 232,00
- Forum Contributions
- Posts: 2134
- Joined: 01/11/2019, 14:27
- Status: Offline (Active 5 Hours, 24 Minutes ago)
- Topics: 349
- Reputation: 369
- Location: Biergarten
- Has thanked: 1885 times
- Been thanked: 4054 times
EubosChess
v1.1.6
This release adds Killer moves to the move ordering. The most recent two quiet move refutations at each ply of the tree are used as Killers.
In this release I also optimised move generation and move ordering to deliver a significant improvement against perft benchmarks.
I also discovered and corrected a fairly serious defect which caused losing captures with check to be searched before winning captures.
Eubos now has a 56% win rate against Tarrash Toy Engine (ELO 1489). I estimate an ELO of 1500.
Download
This release adds Killer moves to the move ordering. The most recent two quiet move refutations at each ply of the tree are used as Killers.
In this release I also optimised move generation and move ordering to deliver a significant improvement against perft benchmarks.
I also discovered and corrected a fairly serious defect which caused losing captures with check to be searched before winning captures.
Eubos now has a 56% win rate against Tarrash Toy Engine (ELO 1489). I estimate an ELO of 1500.
Download
-
- Global moderators
- Points: 6 232,00
- Forum Contributions
- Posts: 2134
- Joined: 01/11/2019, 14:27
- Status: Offline (Active 5 Hours, 24 Minutes ago)
- Topics: 349
- Reputation: 369
- Location: Biergarten
- Has thanked: 1885 times
- Been thanked: 4054 times
EubosChess
v2.0
This is a major new Eubos release:
-The engine now supports multi-threaded execution
-The evaluation function is improved:
King safety now takes account of king placement on open lines, that are exploitable by the opponent
Piece mobility is improved following removal of a premature optimisation
-The quiescence search is improved:
It no longer searches checks, which caused a branch explosion issue, highlighted by multithreaded mode
A defect in setting the PAT score is corrected
Download
This is a major new Eubos release:
-The engine now supports multi-threaded execution
-The evaluation function is improved:
King safety now takes account of king placement on open lines, that are exploitable by the opponent
Piece mobility is improved following removal of a premature optimisation
-The quiescence search is improved:
It no longer searches checks, which caused a branch explosion issue, highlighted by multithreaded mode
A defect in setting the PAT score is corrected
Download
-
- Global moderators
- Points: 6 232,00
- Forum Contributions
- Posts: 2134
- Joined: 01/11/2019, 14:27
- Status: Offline (Active 5 Hours, 24 Minutes ago)
- Topics: 349
- Reputation: 369
- Location: Biergarten
- Has thanked: 1885 times
- Been thanked: 4054 times
EubosChess
v2.2
-Bug fix to fix a defect in backing up the best score to alpha in extended search.
-Revised the King Safety algorithm.
-Various small improvements to UCI info message sending and clock time management.
https://github.com/cjbolt/EubosChess/releases/tag/v2.2
-Bug fix to fix a defect in backing up the best score to alpha in extended search.
-Revised the King Safety algorithm.
-Various small improvements to UCI info message sending and clock time management.
https://github.com/cjbolt/EubosChess/releases/tag/v2.2
-
- Forum Contributions
- Points: 34 888,00
- Posts: 3216
- Joined: 01/01/2020, 8:40
- Status: Offline (Active 8 Hours, 33 Minutes ago)
- Topics: 400
- Reputation: 18630
- Location: Somewhere in time .
- Has thanked: 10415 times
- Been thanked: 18555 times
Re: EubosChess
v2.3
Thanks to the Author Chris Bolt cjbolt
A Java chess engine. Uses UCI protocol. Playable on lichess.
Homepage : https://github.com/cjbolt/EubosChess
Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.3
- Added Aspiration Windows to the search algorithm.
- Otherwise minor optimisations and refactoring.
Thanks to the Author Chris Bolt cjbolt
A Java chess engine. Uses UCI protocol. Playable on lichess.
Homepage : https://github.com/cjbolt/EubosChess
Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.3
- Added Aspiration Windows to the search algorithm.
- Otherwise minor optimisations and refactoring.
-
- Forum Contributions
- Points: 34 888,00
- Posts: 3216
- Joined: 01/01/2020, 8:40
- Status: Offline (Active 8 Hours, 33 Minutes ago)
- Topics: 400
- Reputation: 18630
- Location: Somewhere in time .
- Has thanked: 10415 times
- Been thanked: 18555 times
Re: EubosChess
v2.4
Thanks to the Author Chris Bolt cjbolt
Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.4
- Simplified the negamax search function and removed some specific code from older Eubos versions which was making the search inefficient.
- Refactored the isAttacked() and Piece mobility calculation functions to use dumb7Fill algorithm. This has also increased the efficiency of Eubos.
- Reworked Transposition table to cull least used 20% of Transpositions only after best move calculation is completed.
The evaluation function is unaltered since Eubos v2.2.
Thanks to the Author Chris Bolt cjbolt
Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.4
- Simplified the negamax search function and removed some specific code from older Eubos versions which was making the search inefficient.
- Refactored the isAttacked() and Piece mobility calculation functions to use dumb7Fill algorithm. This has also increased the efficiency of Eubos.
- Reworked Transposition table to cull least used 20% of Transpositions only after best move calculation is completed.
The evaluation function is unaltered since Eubos v2.2.
-
- Forum Contributions
- Points: 34 888,00
- Posts: 3216
- Joined: 01/01/2020, 8:40
- Status: Offline (Active 8 Hours, 33 Minutes ago)
- Topics: 400
- Reputation: 18630
- Location: Somewhere in time .
- Has thanked: 10415 times
- Been thanked: 18555 times
Re: EubosChess
V 2.5
Thanks to the Author Chris Bolt
Download : https://workupload.com/file/w7u8uG28uef
Eubos - a basic Java chess engine, written for kicks. Uses jcpi for the UCI protocol parts. Kind of weak, doesn't evaluate for king safety, for example. Now uses transpostion hashing, but because it runs in the Java VM on a bog standard PC, doesn't search very deeply (around 100K Nodes/s, though this is actually quite hard to evaluate due to the hashing).
Author: Chris Bolt Rating CEDR=2736
v.2.5
This is mainly a release focused on delivering optimisation of the move generation and transposition hashing:
Reworked 3-fold draw checker to use an array based implementation indexed by ply, as opposed to a hash map keyed by Zobrist hash, this is more efficient.
Reworked the transposition table to use a primitive open hash set using the fastutils Java package (that is the reason for the increase in the size of the Eubs.jar file). This allows a more efficient linked hash map implementation, where the full hash table can be utilised (previously the hash utilisation varied between 35% to 80% based on the Transposition ageing).
Reworked the MoveList generation so that static arrays are used instead of dynamically creating and destroying objects at each node of the search.
However there are a few algorithmic changes:
Dumb7Fill based King Safety evaluation (scored as per the previous algorithm)
Allow transposition hits that are drawing due to three-fold to cause refutations (previously they were re-searched)
To install Eubos as an engine in Arena:
1. Select Engines > Install New Engine
2. In the file browser dialog that appears, change the drop down to *.bat
3. Navigate to the Eubos binary location, select the Eubos.bat
4. Select UCI protocol to communicate with Eubos
5. That's it!
Thanks to the Author Chris Bolt
Download : https://workupload.com/file/w7u8uG28uef
Eubos - a basic Java chess engine, written for kicks. Uses jcpi for the UCI protocol parts. Kind of weak, doesn't evaluate for king safety, for example. Now uses transpostion hashing, but because it runs in the Java VM on a bog standard PC, doesn't search very deeply (around 100K Nodes/s, though this is actually quite hard to evaluate due to the hashing).
Author: Chris Bolt Rating CEDR=2736
v.2.5
This is mainly a release focused on delivering optimisation of the move generation and transposition hashing:
Reworked 3-fold draw checker to use an array based implementation indexed by ply, as opposed to a hash map keyed by Zobrist hash, this is more efficient.
Reworked the transposition table to use a primitive open hash set using the fastutils Java package (that is the reason for the increase in the size of the Eubs.jar file). This allows a more efficient linked hash map implementation, where the full hash table can be utilised (previously the hash utilisation varied between 35% to 80% based on the Transposition ageing).
Reworked the MoveList generation so that static arrays are used instead of dynamically creating and destroying objects at each node of the search.
However there are a few algorithmic changes:
Dumb7Fill based King Safety evaluation (scored as per the previous algorithm)
Allow transposition hits that are drawing due to three-fold to cause refutations (previously they were re-searched)
To install Eubos as an engine in Arena:
1. Select Engines > Install New Engine
2. In the file browser dialog that appears, change the drop down to *.bat
3. Navigate to the Eubos binary location, select the Eubos.bat
4. Select UCI protocol to communicate with Eubos
5. That's it!
-
- Forum Contributions
- Points: 34 888,00
- Posts: 3216
- Joined: 01/01/2020, 8:40
- Status: Offline (Active 8 Hours, 33 Minutes ago)
- Topics: 400
- Reputation: 18630
- Location: Somewhere in time .
- Has thanked: 10415 times
- Been thanked: 18555 times
Re: EubosChess
v2.6
Thanks to the Author Chris Bolt cjbolt
A Java chess engine. Uses UCI protocol. Playable on lichess .
Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.6
Homepage / Instructions : https://github.com/cjbolt/EubosChess
The release was pushed forward due to a defect in v2.5. If you tried to use Eubos on a multi-core system, by default it would run as multithreaded. I don't normally test this configuration, and as a result, I had missed that the refactor I did to remove dynamic allocation of Move Lists caused a crash when running with more than one search thread.
I have temporarily removed the capability to run configure or run multithreaded searches.
Apart from that, I have a couple of algorithmic improvements and optimisations:
- Material balance and piece square tables are now incrementally updated
- Lazy evaluation is employed in the opening and middlegame, though only beta refutations are checked at present
- The pseudo-legal move generation has been greatly optimised (yielding a 20% increase in speed!)
Thanks to the Author Chris Bolt cjbolt
A Java chess engine. Uses UCI protocol. Playable on lichess .
Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.6
Homepage / Instructions : https://github.com/cjbolt/EubosChess
The release was pushed forward due to a defect in v2.5. If you tried to use Eubos on a multi-core system, by default it would run as multithreaded. I don't normally test this configuration, and as a result, I had missed that the refactor I did to remove dynamic allocation of Move Lists caused a crash when running with more than one search thread.
I have temporarily removed the capability to run configure or run multithreaded searches.
Apart from that, I have a couple of algorithmic improvements and optimisations:
- Material balance and piece square tables are now incrementally updated
- Lazy evaluation is employed in the opening and middlegame, though only beta refutations are checked at present
- The pseudo-legal move generation has been greatly optimised (yielding a 20% increase in speed!)
-
- Forum Contributions
- Points: 34 888,00
- Posts: 3216
- Joined: 01/01/2020, 8:40
- Status: Offline (Active 8 Hours, 33 Minutes ago)
- Topics: 400
- Reputation: 18630
- Location: Somewhere in time .
- Has thanked: 10415 times
- Been thanked: 18555 times
Re: EubosChess
v2.7
Thanks to the Author Chris Bolt cjbolt
A Java chess engine. Uses UCI protocol. Playable on lichess.
Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.7
Homepage / Instructions : https://github.com/cjbolt/EubosChess
Additions :
- Tapered Eval
- Incremental updates for PST
- PST per game phase for Rooks, Pawns
Optimisation :
- Mainly to the Move List generation
Thanks to the Author Chris Bolt cjbolt
A Java chess engine. Uses UCI protocol. Playable on lichess.
Download : https://github.com/cjbolt/EubosChess/releases/tag/v2.7
Homepage / Instructions : https://github.com/cjbolt/EubosChess
Additions :
- Tapered Eval
- Incremental updates for PST
- PST per game phase for Rooks, Pawns
Optimisation :
- Mainly to the Move List generation
-
- Forum Contributions
- Points: 34 888,00
- Posts: 3216
- Joined: 01/01/2020, 8:40
- Status: Offline (Active 8 Hours, 33 Minutes ago)
- Topics: 400
- Reputation: 18630
- Location: Somewhere in time .
- Has thanked: 10415 times
- Been thanked: 18555 times
Re: EubosChess
v2.8
Thanks to the Author Chris Bolt cjbolt
Eubos chess is a multi-threaded Java chess engine. It was self-built and is playable online 24/7 via lichess (https://lichess.org/@/eubos - it is hosted on Heroku). It is rated around 1890 ELO against other engines, not humans (this is at blitz 2+1 time control, see http://ccrl.chessdom.com/ccrl/404/). It uses the UCI protocol.
Download : https://github.com/cjbolt/EubosChess/releases/tag/V2.8
This is mainly a bug fix release.
I found a subtle defect where the best move at a ply from the principal continuation could become corrupted. In practice, this meant that Eubos would sometimes search the naive best move from a static move order rather than the historical best move from the previous depth of the iterative deepening. If this happened to be a losing capture that caused an aspiration window fail, then this could cause a bad move to be returned from the search, if Eubos ran out of time.
I estimate that fixing this defect adds at least 30 Elo points to the engine's strength.
I have also implemented revisions to the move ordering and evaluation function. Most notably scoring passed pawns on game phase as well as rank, so they become more valuable when there is less material.
I also use progressive widening of aspiration windows in the search in version 2.8.
Full Changelog: v2.7...V2.8
Thanks to the Author Chris Bolt cjbolt
Eubos chess is a multi-threaded Java chess engine. It was self-built and is playable online 24/7 via lichess (https://lichess.org/@/eubos - it is hosted on Heroku). It is rated around 1890 ELO against other engines, not humans (this is at blitz 2+1 time control, see http://ccrl.chessdom.com/ccrl/404/). It uses the UCI protocol.
Download : https://github.com/cjbolt/EubosChess/releases/tag/V2.8
This is mainly a bug fix release.
I found a subtle defect where the best move at a ply from the principal continuation could become corrupted. In practice, this meant that Eubos would sometimes search the naive best move from a static move order rather than the historical best move from the previous depth of the iterative deepening. If this happened to be a losing capture that caused an aspiration window fail, then this could cause a bad move to be returned from the search, if Eubos ran out of time.
I estimate that fixing this defect adds at least 30 Elo points to the engine's strength.
I have also implemented revisions to the move ordering and evaluation function. Most notably scoring passed pawns on game phase as well as rank, so they become more valuable when there is less material.
I also use progressive widening of aspiration windows in the search in version 2.8.
Full Changelog: v2.7...V2.8