Dear programmers! I found a serious error in your work. Check out this game of Brazilian draughts.
playstrategy.org/GRG5klAb/p2
Move number 11. The bot can save the checker, but he does not see it, because he needs to look at three moves!!!
I figured out what the problem is. You forgot about the existence of the most important term in any kind of checkers. This word is exchange. This is the basis of the game that you forgot about. It's like saying to a cyclist: ride a bike without one wheel! It's like saying to a skater: go ice skating without one skate!
Let's deal with this term. What it is? On the first move, we give up the checker. On the second move, the opponent takes it. On the third move, we take the opponent's checker. Thus, both players lost one each and the number of checkers on the board remained the same. What is the calculation depth? The answer is three moves, and you have created a bot that can see two moves. That is, the bot does not know what an exchange is.
I advise you, dear and wise programmers, to remake the bot, allow it to see for three moves.
AI for all games is here!
No one needed your input, @marahonov_dima , because we don't need any solved games. All people deserve to have a fun against AI, and to create an AI which can beat any human being, is like committing a crime against all humanity.
And, what's more important, "exchange" is not the key of any draughts' variant, and I will not reveal what is more important.
@kalnap! You are contradicting yourself. If you want to create a bot for fun, then only the rules of the game and the ability to randomly choose a move need to be programmed into it.
What did you do when creating the bot? Answer: you taught the bot to see for two moves. And also you taught the bot to pick up unprotected parts. That is, you did everything possible to make the bot play stronger and beat the human. And this is contrary to your desire for entertainment.
I don't see any fun in a game in which a bot makes presents, puts his checkers under attack and is not able to make an elementary exchange.
The change I was talking about will not affect the strength of the bot's game in any way. This is just a small bug fix. In order for the bot to beat a person, you need to lay a whole hundred features of the game.
By the way, I love this bot. It is much more interesting to have fun with it than with another bot that randomly chooses a move.
@kalnap
I understand you, if my opinion is of no interest to anyone, then I will no longer write anything. End of conversation.
Thanks for the interesting discussion about the bots. You are right the bot would be stronger if it was to look more moves ahead. We do plan to support stronger bots in the future, so watch out for them (the current bots just use an algorithm (with some randomness) and don't 'learn' so not a true AI as such). The idea is to have a range of bots so that users can play against what they wish.
Our bots don't currently finish an evaluation of the position after a quiet move (keep playing until no captures), therefore for the x-based look ahead ones you can always find a position that can trick it. This might be something we add in the future.
Hi @marahonov_dima and @kalnap
As detailed in today's announcement (playstrategy.org/blog/Y6SXMxEAAJPeJP_M/end-of-year-2022-medley-arena) there is now a new bot @PS-Greedy-Four-Move that can play all of the Draughts variants. This bot looks four moves deep, so is hopefully a bit more of a challenge.
We'd be interested to hear how you, and our other Draughts players find the difficulty of this bot in comparison to the Two-Move bot across all variants.
@statmatt This bot is somewhere between 20% and 30% stronger, however, it does suffer from similar issues. I don't know the evaluation function behind it, however, it seems to me that it was programmed in likeness of chess, where early advancement of pawn can be useful for gaining space advantage. However, there is no analogue of advanced Caro-Kann or French in draughts, and there is only two squares where it can be justified in some draughts variants: on 8x8 board, it is c5 for white or f4 for black (in alphanumeric notation); on 10x10 board, it is square 24 for white or square 27 for black.
The only exception is antidraughts which are played according to different playing style where any advancement of draughtsman can be justified by moving opponent to "damned" squares (for example, on 8x8 board, c3 and h2 are damned squares for black, and, similarly, h6 and a7 are damned squares for white).
So, the largest improvement is done into antidraughts. For example, in regular variants, I noticed cases where bot didn't recognize equalizing 2 move tactics. As well, there were cases where bot recognized my threats but defended in the worst manner, allowing me to gain material advantage by less obvious tactics.
It is hard to assign some reasonable ELO to this bot according to site rating system, but, for comparison purposes, as I can compete in official tournaments as FMJD 1915, I would assign this bot FMJD `1100 in International draughts, because any player who is coached for 3 months (regardless of his or her age), should be able to beat this bot at least in 65% cases.
Will PS 4 Move join draughts and oware evens instead in the future?
@statmatt , @Jheps
As for evaluation function, I would suggest you to look into github.com/rhalbersma/kestog/blob/master/KestoG_1_4.cpp (search for variable eval) which gives enough good evaluation for all backwards jumping variants on 8x8 board (originally, "Russian", but evaluation principles in Pool and Brazilian are same). While the evaluation is only approximative, that engine is enough tough to beat.
@CHlivelylemon nope PS-Greedy-Four-move is just to play against in random games for now
@kalnap thanks the current eval we have is very simple, we are looking at adding a much better draughts ai in the future ( more similar to lidraughts)