Hello,
I am a software developer and I have recently created a new chess engine called RuthChess. This engine incorporates some futuristic ideas, inspired by approaches like AlphaZero. It is written entirely in Rust. I will add a innovative evaluation system like NNUE. This engine forms the basis of the project.
I have tested the engine using CuteChess, and I estimate its average ELO to be around 2480–2520.
If you are interested in testing RuthChess and providing feedback, you can reach me at: emre11klk@gmail.com
GitHub repository (includes .exe for testing):
https://github.com/themreKalkan/RuthChess
Here is a sample PGN from a match against Stockfish 17.1:
[Event "?"]
[Site "?"]
[Date "2025.09.10"]
[Round "?"]
[White "RuthChess7.0.4"]
[Black "Stockfish 17.1"]
[Result "0-1"]
[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"]
[GameDuration "00:30:52"]
[GameEndTime "2025-09-10T20:53:59.440 Türkiye Standart Saati"]
[GameStartTime "2025-09-10T20:23:07.425 Türkiye Standart Saati"]
[PlyCount "86"]
[SetUp "1"]
[Termination "abandoned"]
[TimeControl "40/900"]
1. d4 {book} Nf6 {book} 2. Nf3 {book} d5 {book} 3. c4 {book} e6 {book}
4. Nc3 {book} c6 {book} 5. Bg5 {book} Be7 {book} 6. e3 {book} h6 {book}
7. Bxf6 {book} Bxf6 {book} 8. Be2 {book} O-O {book} 9. O-O {book} b6 {book}
10. cxd5 {book} exd5 {book} 11. Nd2 {+0.57/15 29s} Re8 {+0.02/39 90s}
12. Kh1 {+0.52/16 30s} Nd7 {+0.31/30 18s} 13. Bd3 {+0.52/15 31s}
Bb7 {+0.44/28 20s} 14. Qa4 {+0.62/15 29s} c5 {+0.61/31 18s}
15. Bb5 {+0.73/14 28s} Re7 {+0.73/30 18s} 16. Bd3 {+0.11/14 28s}
a6 {+1.30/29 12s} 17. Nf3 {+0.05/13 29s} b5 {+1.35/27 19s}
18. Qc2 {+0.23/14 29s} b4 {+1.42/26 23s} 19. Na4 {+0.23/15 28s}
c4 {+1.55/28 14s} 20. Bf5 {+0.33/14 28s} Bc6 {+1.61/31 23s}
21. Bh3 {+0.48/14 28s} a5 {+1.84/27 15s} 22. b3 {+0.50/13 29s}
Bxa4 {+2.69/27 16s} 23. bxa4 {+1.21/15 28s} g6 {+2.76/26 20s}
24. Bg4 {+1.47/15 29s} Re4 {+2.70/30 45s} 25. Bxd7 {+1.34/16 29s}
Qxd7 {+2.68/28 39s} 26. Ng1 {+1.25/16 28s} h5 {+2.72/28 24s}
27. Nf3 {+1.31/17 28s} Ree8 {+2.62/30 59s} 28. Rfe1 {+1.31/16 29s}
Rab8 {+2.62/38 48s} 29. Rec1 {+0.96/16 28s} Qe6 {+2.64/31 25s}
30. Kg1 {+1.06/15 28s} g5 {+2.72/28 35s} 31. Rf1 {+1.01/17 28s}
g4 {+2.81/30 25s} 32. Nd2 {+0.76/19 28s} Rb6 {+2.92/31 26s}
33. Rfe1 {+0.84/18 28s} h4 {+3.11/32 69s} 34. Rab1 {+0.72/15 27s}
Bg5 {+3.39/30 45s} 35. Kh1 {+0.79/15 28s} c3 {+3.61/30 37s}
36. Nb3 {+1.72/16 27s} g3 {+3.73/26 8.9s} 37. Nc5 {+1.04/15 27s}
Qg6 {+4.34/28 19s} 38. Qxg6+ {+0.62/17 27s} Rxg6 {+4.30/27 18s}
39. f4 {+0.60/21 27s} Bh6 {+4.47/27 22s} 40. Ra1 {+0.18/17 27s}
Bg7 {+4.69/29 17s} 41. Nd3 {+0.56/19 23s} Rge6 {+5.01/28 14s}
42. Ne5 {+0.67/17 23s} f6 {+5.07/29 13s} 43. Ng4 {0.00/21 23s}
Re4 {+5.68/28 17s, White disconnects} 0-1
Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas
Moderator: Ras
-
- Posts: 7
- Joined: Wed Sep 10, 2025 8:28 pm
- Full name: M. Emre Kalkan
-
- Posts: 1359
- Joined: Sun Jul 17, 2011 11:14 am
- Full name: Hannah Ravensloft
Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas
Your engine crashed in this game. That's something you should probably fix.Re4 {+5.68/28 17s, White disconnects} 0-1
tu ne cede malis, sed contra audentior ito
-
- Posts: 195
- Joined: Sun Oct 30, 2022 5:26 pm
- Full name: Conor Anstey
Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas
the sample PGN shows your engine crashing? ("White disconnects")
edit: too slow
edit: too slow
-
- Posts: 1359
- Joined: Sun Jul 17, 2011 11:14 am
- Full name: Hannah Ravensloft
Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas
Ciekce and I decided to do some code auditing; I'll let him post his findings.
Here's one case I spotted immediately: you're using the PSTs from the Simplified Evaluation Function, which are listed in rank 8..1 order (as if from White's point of view on a chessboard), however you are using A1=0 indexing, so you are indexing the PSTs upside down.
I also could not find a perft function in your code, only a single test bench asserting that there are 20 generated moves in the start position. From that it's not obvious to me that your move generator is correct.
Here's one case I spotted immediately: you're using the PSTs from the Simplified Evaluation Function, which are listed in rank 8..1 order (as if from White's point of view on a chessboard), however you are using A1=0 indexing, so you are indexing the PSTs upside down.
I also could not find a perft function in your code, only a single test bench asserting that there are 20 generated moves in the start position. From that it's not obvious to me that your move generator is correct.
tu ne cede malis, sed contra audentior ito
-
- Posts: 7
- Joined: Wed Sep 10, 2025 8:28 pm
- Full name: M. Emre Kalkan
Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas
I dont know why but at that position If I use Chessbase or direct terminal UCI commands it works. But It happens sometime in CuteChess. Maybe its not a crash symbol. Maybe kind of resign.ZirconiumX wrote: ↑Thu Sep 11, 2025 12:47 pmYour engine crashed in this game. That's something you should probably fix.Re4 {+5.68/28 17s, White disconnects} 0-1
-
- Posts: 7
- Joined: Wed Sep 10, 2025 8:28 pm
- Full name: M. Emre Kalkan
Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas
Yes I agree, too slow. I think "White Disconnects" not about the engine Its could be about my computer because I test it out with many different ways like UCI commands or ChessBase. Everything works great at that position. About slowness I am working on pruning codes. At the same node count Stockfish has two times more researched depth than me. I will fix it.
-
- Posts: 7
- Joined: Wed Sep 10, 2025 8:28 pm
- Full name: M. Emre Kalkan
Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas
You re right about perfts. I dont have a test but I tested it manually many many times 6 months ago. I am still using same codes. I will add perfts too. I am alone at this project, Its awful. But I didnt understand very well PST problem. I checked my code everything looks fine. Can you explain more detaily.ZirconiumX wrote: ↑Thu Sep 11, 2025 12:59 pm Ciekce and I decided to do some code auditing; I'll let him post his findings.
Here's one case I spotted immediately: you're using the PSTs from the Simplified Evaluation Function, which are listed in rank 8..1 order (as if from White's point of view on a chessboard), however you are using A1=0 indexing, so you are indexing the PSTs upside down.
I also could not find a perft function in your code, only a single test bench asserting that there are 20 generated moves in the start position. From that it's not obvious to me that your move generator is correct.
-
- Posts: 195
- Joined: Sun Oct 30, 2022 5:26 pm
- Full name: Conor Anstey
Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas
I meant I was too slow with replying, because I was sniped by one minute.EmreKalkan wrote: ↑Thu Sep 11, 2025 6:55 pm Yes I agree, too slow. I think "White Disconnects" not about the engine Its could be about my computer because I test it out with many different ways like UCI commands or ChessBase. Everything works great at that position. About slowness I am working on pruning codes. At the same node count Stockfish has two times more researched depth than me. I will fix it.
Time to depth is pretty irrelevant. A stronger engine will tend to have faster time to depth, but time to depth does not directly lead to greater strength, and you cannot compare depths across engines.
As a side note, "speed" with engines refers to nodes per second (nps), not time to depth.
No, disconnections in cutechess are your engine crashing.
-
- Posts: 7
- Joined: Wed Sep 10, 2025 8:28 pm
- Full name: M. Emre Kalkan
Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas
Ahh sorry my bad. I understand it different. You re right. But in many complex positions depth is stucks on 9 or 10. Maybe I need optimiziation. Thanks for replie. I had a big problem about NNUE now. Can you give some advice? Am I need to train my own NNUE model, I wrote a code for NNUE I am trying with stockfish NNUE's but I cant even get an evaluation. All the time its gives -394039... something like that.Ciekce wrote: ↑Thu Sep 11, 2025 7:11 pmI meant I was too slow with replying, because I was sniped by one minute.EmreKalkan wrote: ↑Thu Sep 11, 2025 6:55 pm Yes I agree, too slow. I think "White Disconnects" not about the engine Its could be about my computer because I test it out with many different ways like UCI commands or ChessBase. Everything works great at that position. About slowness I am working on pruning codes. At the same node count Stockfish has two times more researched depth than me. I will fix it.
Time to depth is pretty irrelevant. A stronger engine will tend to have faster time to depth, but time to depth does not directly lead to greater strength, and you cannot compare depths across engines.
As a side note, "speed" with engines refers to nodes per second (nps), not time to depth.
Edit: One more question. While I am testing my engine in cutechess sometimes my engine gives opposite color move. If I try that position with FEN on UCI or Chessbase it works great. Why is this happening?
-
- Posts: 4856
- Joined: Fri Apr 21, 2006 4:19 pm
- Location: IAȘI - the historical capital of MOLDOVA
- Full name: Silvian Rucsandescu
Re: Introducing RuthChess 7.0 – Rust-Based Engine with New Ideas
The engine is innovative, but very weak. Under 2000 Elo points in blitz 4'+2".EmreKalkan wrote: ↑Wed Sep 10, 2025 10:10 pm I have tested the engine using CuteChess, and I estimate its average ELO to be around 2480–2520.