Writing a checkers Engine

Discussion about development of draughts in the time of computer and Internet.
Post Reply
CheckersGuy
Posts: 17
Joined: Mon Oct 17, 2016 09:05
Real name: Robin Messemer

Writing a checkers Engine

Post by CheckersGuy » Tue Oct 18, 2016 21:26

Hey guys,
I am currently writing a checkers engine and have run into a problem. I am using quiescentSearch to not evaluate positions when there are still jumps available but my engine misevaluates some positions quite heavily because there is a forced sequence on the board it can not detect.
How did you guys come up with something like a threat detection ? How can I write my own threat detection ?
I got another question. Can one use null-move pruning and/or Late-Move-Reductions ? I implemented Null-Move-Pruning once but it didnt work well at all because it missed a lot of tactics/sequences.

Would appreciate any help/tips :D

Ed Gilbert
Posts: 748
Joined: Sat Apr 28, 2007 14:53
Real name: Ed Gilbert
Location: Morristown, NJ USA
Contact:

Re: Writing a checkers Engine

Post by Ed Gilbert » Tue Oct 18, 2016 23:02

CheckersGuy wrote:Hey guys,
I am currently writing a checkers engine and have run into a problem. I am using quiescentSearch to not evaluate positions when there are still jumps available but my engine misevaluates some positions quite heavily because there is a forced sequence on the board it can not detect.
I assume you mean you're having troubles with positions where the forced sequence is just beyond your search horizon. If it wasn't, then your quiescent search would extend the forced moves until a quiet position is reached, unless there is a problem with your move generator. Have you verified it using something like perft?

Some programs extend in qsearch by pitching a piece and then seeing if there is a recapture that gives a fail high. IIRC scan does something like that. In kingsrow I extend if the side opposite of the side to move would have a capture. But there are limits on it, else the tree can explode with too many extensions.

If you search deep enough, you can avoid most traps that are just beyond the horizon, because you will detect them on the next search when you are still many plies away from them, and usually a safe alternative exists at an interior node.
I got another question. Can one use null-move pruning and/or Late-Move-Reductions ? I implemented Null-Move-Pruning once but it didnt work well at all because it missed a lot of tactics/sequences.
I have never tried null move pruning, and AFAIK none of the draughts programs are using it.
LMR is commonly used and quite effective. There's a description of it here: http://chessprogramming.wikispaces.com/ ... Reductions

-- Ed

Post Reply