I would like to modify an existing open source chess engine and make it really fun to play for a casual human player. The engine I am thinking about does not need to be above 1800 ELO but it does need to have workable skill setting from 0 ELO to 1800, some style adjustments that make obvious differences in play and most important not to obviously play like a computer (it's mistakes to look somewhat human for someone who is not paying that much attention to that).
The one I know that is closer to my goal is PyChess. I would like to significantly improve on what they done.
Please tell me your thoughts on this.
Making an engine human like
Moderator: Ras
-
hgm
- Posts: 28426
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Making an engine human like
My guess is that it would help to use an engine with a very elaborate eval.
We once discussed here how to simulate a poor human player by wrecking the search of a strong engine. My proposal was to keep a list organized like a history table, which contains a flag for every possible move to indicate if you want to artificially skip ('overlook') this move, should it be possible, and randomly set the flags in the root (perhaps with a somewhat lower probability for (pseudo-)moves that are possible in the root) before starting a search.
We once discussed here how to simulate a poor human player by wrecking the search of a strong engine. My proposal was to keep a list organized like a history table, which contains a flag for every possible move to indicate if you want to artificially skip ('overlook') this move, should it be possible, and randomly set the flags in the root (perhaps with a somewhat lower probability for (pseudo-)moves that are possible in the root) before starting a search.
-
Gerard Taille
Re: Making an engine human like
Isn'it possible to build a program by keeping all its strategic strength but by limiting its tactical strength to a depth decided by the user of the program. For example at level 6 the program will be able to see any combination needing 6 plies but will be unable to detect a combination needing 7 plies.
That could be a good motivation for the opponent who knows that he can win by building a tactical trick arriving after the most logical moves from the program. BTW isn't it the main way for a master to win against a weaker player ?
That could be a good motivation for the opponent who knows that he can win by building a tactical trick arriving after the most logical moves from the program. BTW isn't it the main way for a master to win against a weaker player ?
-
hgm
- Posts: 28426
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Making an engine human like
The problem is that limiting depth gives very unhuman-like play. People do not have a horizon at a fixed distance. They either see a tactical element, like a fork, or they don't. And when they see it, they keep seeing it, no matter how how any ply the opponent can delay it. They tend to recogize if things are unavoidable.
-
bob
- Posts: 20943
- Joined: Mon Feb 27, 2006 7:30 pm
- Location: Birmingham, AL
Re: Making an engine human like
This is not an easy task. I added a "skill" command to crafty a couple of years ago, where you can use any level between 100 and 0, where 100 is "full strength" and 0 is as ugly as it can play. Skill 70 drops the Elo by about 200. Skill 50 drops it by another 200. You can see from that that this is a non-linear reduction...mihaiv wrote:I would like to modify an existing open source chess engine and make it really fun to play for a casual human player. The engine I am thinking about does not need to be above 1800 ELO but it does need to have workable skill setting from 0 ELO to 1800, some style adjustments that make obvious differences in play and most important not to obviously play like a computer (it's mistakes to look somewhat human for someone who is not paying that much attention to that).
The one I know that is closer to my goal is PyChess. I would like to significantly improve on what they done.
Please tell me your thoughts on this.
-
Ralph Stoesser
- Posts: 408
- Joined: Sat Mar 06, 2010 9:28 am
Re: Making an engine human like
I think it is not possible to trustworthy simulate human play without a concept of strategy and long term planning. Humans have a goal which they are trying to achieve (unless they are drunken). A weak player may have the goal to hunt the enemy queen whenever he can. A better player may have the goal to organize a king attack, but maybe he's too hasty in following the goal. A strong player may have the goal to carefully maneuver for small advantages. Often strong engines seem to follow a plan, but if you make them weak, the illusion of planned play will disappear.
-
Gerard Taille
Re: Making an engine human like
What about the following idea :
As soon as the program detects its position appears good for n moves you simply prune this branch assuming a cutoff for the program side.
The two main consequences I see are :
1) The program is unable to detect an opponent combination needing more than n moves
2) The program continue to be very good in strategy and maybe a little better than usual due to the time gained by the proposed pruning!
Isn't it suffisant to build a strong strategic program allowing it's opponent to win by finding a combination more or less complex ?
As soon as the program detects its position appears good for n moves you simply prune this branch assuming a cutoff for the program side.
The two main consequences I see are :
1) The program is unable to detect an opponent combination needing more than n moves
2) The program continue to be very good in strategy and maybe a little better than usual due to the time gained by the proposed pruning!
Isn't it suffisant to build a strong strategic program allowing it's opponent to win by finding a combination more or less complex ?