Making an engine human like

Discussion of chess software programming and technical issues.

Moderator: Ras

mihaiv

Making an engine human like

Post by mihaiv »

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.
User avatar
hgm
Posts: 28426
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Making an engine human like

Post by hgm »

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.
Gerard Taille

Re: Making an engine human like

Post by Gerard Taille »

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 ?
User avatar
hgm
Posts: 28426
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Making an engine human like

Post by hgm »

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

Post by bob »

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.
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...
Ralph Stoesser
Posts: 408
Joined: Sat Mar 06, 2010 9:28 am

Re: Making an engine human like

Post by Ralph Stoesser »

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

Post by Gerard Taille »

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 ?