So, you're sitting down for a few hours of chess programming. What tools are you using? What is your IDE/language obviously, but all the other stuff to!
What is your testing framework like? How do you test your program? What guis do you use?
Do you use off-the-shelf tools? Did you write any custom ones? What was your setup for creating and testing those?
Got the idea while watching ddugovic's stream vods and seeing the tools he was using. What do you use?
Tell me about your setup
Moderator: Ras
-
- Posts: 7
- Joined: Sun Jul 03, 2022 10:39 pm
- Full name: Rayleigh Langhoff
-
- Posts: 3230
- Joined: Wed Mar 10, 2010 10:18 pm
- Location: Hamburg, Germany
- Full name: Srdja Matovic
-
- Posts: 28353
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Tell me about your setup
I am using NotePad and gcc (under Cygwin) on Windows. Or FireFox, when I am programming in JavaScript. And gedit, git and gcc under Linux. For developing more complex projects I prefer to work under Linux. But for testing a Windows GUI front-end I need to be on Windows. I run engine games mostly on Windows. Always using WinBoard as GUI.
For debugging engines I usually include a few lines of code in them that would display critical information about the nodes along a selected branch of the tree. This allows me to always zoom in quickly on a problem reproducibly causing an obvious bad move (or hanging engine). If an engine uses tricky incremetal update of complex data structures (such as attack maps) I usually include code to calculate these structures from scratch, and compare it to the incrementally updated version, aborting the search when a difference occurs.
For debugging engines I usually include a few lines of code in them that would display critical information about the nodes along a selected branch of the tree. This allows me to always zoom in quickly on a problem reproducibly causing an obvious bad move (or hanging engine). If an engine uses tricky incremetal update of complex data structures (such as attack maps) I usually include code to calculate these structures from scratch, and compare it to the incrementally updated version, aborting the search when a difference occurs.
-
- Posts: 93
- Joined: Sun Aug 08, 2021 9:14 pm
- Full name: Kurt Peters
Re: Tell me about your setup
IDE I use is VS Code. The vast majority of my debugging is done in the browser (Firefox). If I need to debug something specific to UCI, then I'll run the debugger in VS Code. I wrote a test suite (that just calls my perft function for each perft position) to auto-run all the perft tests if I need to make sure I haven't broken something in my move functions.
For engine strength testing, I run the Cute Chess CLI (or the GUI if I need to be able to see something or capture a particular UCI input/output).
For engine strength testing, I run the Cute Chess CLI (or the GUI if I need to be able to see something or capture a particular UCI input/output).
-
- Posts: 87
- Joined: Thu Oct 07, 2021 12:48 am
- Location: Warsaw, Poland
- Full name: Michal Witanowski
Re: Tell me about your setup
I use Visual Studio 2022 on Windows and this is my main platform for development and testing. Occasionally, when working on Linux, I use VS Code with clang+CMake. I use C++ exclusively - both for the engine itself as well as all tools around it: unit tests, performance tests, network trainer, self-play data generator, etc.
For strength testing I use cute-chess-cli and sometimes c-chess-cli as it provides better engine log output. I have bunch of manually-edited batch files that I run over a night.
I very rarely use GUI but if I do, I mostly use Nibbler and very rarely Cute Chess. And to setup some test position ad-hoc I usually just use lichess and copy FEN over.
For strength testing I use cute-chess-cli and sometimes c-chess-cli as it provides better engine log output. I have bunch of manually-edited batch files that I run over a night.
I very rarely use GUI but if I do, I mostly use Nibbler and very rarely Cute Chess. And to setup some test position ad-hoc I usually just use lichess and copy FEN over.
Author of Caissa Chess Engine: https://github.com/Witek902/Caissa
-
- Posts: 29
- Joined: Thu Jun 09, 2022 5:09 am
- Full name: Clayton Ramsey
Re: Tell me about your setup
Text editor: VSCodium. It's a distribution of VS code without the closed-source Microsoft telemetry, and it's (in my anecdotal experience) a good deal more performant.
Language: Rust.
Testing: I have a suite of unit tests (about 120 total) that I use to verify the correctness of all parts of my engine. Since I use Rust, all I have to do to run them is `cargo test`. For testing Elo differences, I use the cutechess GUI.
I use perf and inferno-flamegraph to get performance data on some tests, and use that to guide my optimization efforts.
I make liberal use of the `debug_assert!` macro to verify the correctness of my program in testing.
Language: Rust.
Testing: I have a suite of unit tests (about 120 total) that I use to verify the correctness of all parts of my engine. Since I use Rust, all I have to do to run them is `cargo test`. For testing Elo differences, I use the cutechess GUI.
I use perf and inferno-flamegraph to get performance data on some tests, and use that to guide my optimization efforts.
I make liberal use of the `debug_assert!` macro to verify the correctness of my program in testing.
-
- Posts: 1957
- Joined: Tue Apr 19, 2016 6:08 am
- Location: U.S.A
- Full name: Andrew Grant
Re: Tell me about your setup
Notepad++, OpenBenchRayLeeIsmay wrote: ↑Sat Aug 20, 2022 3:16 pm So, you're sitting down for a few hours of chess programming. What tools are you using? What is your IDE/language obviously, but all the other stuff to!
What is your testing framework like? How do you test your program? What guis do you use?
Do you use off-the-shelf tools? Did you write any custom ones? What was your setup for creating and testing those?
Got the idea while watching ddugovic's stream vods and seeing the tools he was using. What do you use?

-
- Posts: 2696
- Joined: Tue Aug 30, 2016 8:19 pm
- Full name: Rasmus Althoff
Re: Tell me about your setup
C, Xed, GCC, GBD (commandline), c-chess-cli.
Rasmus Althoff
https://www.ct800.net
https://www.ct800.net
-
- Posts: 7
- Joined: Wed Jan 29, 2020 6:47 pm
- Full name: Chris Bolt
Re: Tell me about your setup
Because I wrote my engine in Java I decided to use Eclipse as my IDE. I develop on Windows and have found Eclipse to be pretty good apart from some occassional headaches with the eGit integration.
I make extensive use of JUnit unit tests, I have over 400 tests ranging from simple move generation checks to more complicated full engine execution from UCI commands (like KQk and KRk find mate-in-X type tests). I know I haven't quite got the right sweetspot with these tests (the coverage of the search algorithm is loose to say the least), but they have enabled me to catch regressions from time to time. of course they are no substitute for cold, hard Tournament testing in Arena.
My Engine has the capability to log quite a lot of debug output to files, so early on, I wrote a log file analyser to assemble statistics from a large number of logs. To be honest I have found that of questionable benefit, even when trying to tune parameters like lazy_eval thresholds etc.
I even developed verbose logging of alpha, beta, movelist, best move etc at each node visited(!). However once I got the speed of my engine beyond that of a tortoise, I gave up ever using this, as the output became unusable very quickly. (Notepad++ doesn't like GB text files, who would have thought it!)
I also use Heroku to host my engine, so I have a CLI environment for that, then there are various github repos.
Because my engine was my first open source project, I also experimented with Maven as a package manager to pull in dependencies. That has proven to be pretty useful as I moved to using some some nice container implementations for the hash table (fast-utils).
I develop and run everything on Windows, using Arena for testing so far, though I want to take a look at Banksia, as I am getting fed up with managing N concurrent Arena tournies on various PCs through RDP! Hopefully that will help me with that. I even resort to adding up tournament scores using a calculator. I really need to invest some effort in doing that smarter
I make extensive use of JUnit unit tests, I have over 400 tests ranging from simple move generation checks to more complicated full engine execution from UCI commands (like KQk and KRk find mate-in-X type tests). I know I haven't quite got the right sweetspot with these tests (the coverage of the search algorithm is loose to say the least), but they have enabled me to catch regressions from time to time. of course they are no substitute for cold, hard Tournament testing in Arena.
My Engine has the capability to log quite a lot of debug output to files, so early on, I wrote a log file analyser to assemble statistics from a large number of logs. To be honest I have found that of questionable benefit, even when trying to tune parameters like lazy_eval thresholds etc.
I even developed verbose logging of alpha, beta, movelist, best move etc at each node visited(!). However once I got the speed of my engine beyond that of a tortoise, I gave up ever using this, as the output became unusable very quickly. (Notepad++ doesn't like GB text files, who would have thought it!)
I also use Heroku to host my engine, so I have a CLI environment for that, then there are various github repos.
Because my engine was my first open source project, I also experimented with Maven as a package manager to pull in dependencies. That has proven to be pretty useful as I moved to using some some nice container implementations for the hash table (fast-utils).
I develop and run everything on Windows, using Arena for testing so far, though I want to take a look at Banksia, as I am getting fed up with managing N concurrent Arena tournies on various PCs through RDP! Hopefully that will help me with that. I even resort to adding up tournament scores using a calculator. I really need to invest some effort in doing that smarter

-
- Posts: 7
- Joined: Sun Jul 03, 2022 10:39 pm
- Full name: Rayleigh Langhoff
Re: Tell me about your setup
I'm a newbie so this may not be ideal.
I use visual studio 2022 for programming, I'm testing with cutechess gui to run tournaments. Usually I run it as a gauntlet (10s+0.01s) against 2 stable earlier versions along with TSCP to get an estimate of relative ELO. This is not ideal.
Being a newish programmer, I had a really hard time figuring out unit testing with C++ in visual studio. I'm actually considering starting over with Qt or a similar framework. I'd like to have (in a debug build) a simple gui for settings like doNull, which book to use, thresholds for LMR, etc. It would also make unit testing a lot easier since it's something I've only done on small scales in python before. Picture a dialog box next to the console which has comboboxes, spins, a perft button, etc.
Other tools are Notepad++ for reading examples and going through logs. I recently went back and am putting in debug_assert commands and finding a lot of bugs that somehow survived perft, that's part of the need to restart.
I've tried using BanksiaGui and it's really nice, I just haven't found documentation/tutorials that really works for me. Arena is great for playing against the engine, testing ad hoc positions, and watching games on longer time controls.
That's about it. I'm about to start over and probably start using some different tools along with Qt to simplify coding and testing, which was why I posted this thread. Thanks everyone for the responses!