
An unusual UCI chess engine - omnivorist
For some time now I have been fascinated by the idea of a chess engine with an unusual evaluation function - at least I imagine it is unusual, I&#x27;m not an expert chess programmer and am not particularly familiar with the field. 
Most chess engines employ a tree-searching strategy with an evaluation function applied at the leaf nodes. It is the evaluation function that interests me primarily. Most evaluation functions embody some form of &#x27;chess knowledge&#x27; such as pawn structure, placement of pieces on the board etc. My idea is for an evaluation function that scores a position purely on the number of legal moves available. By adopting such a simple function I would hope to be able to explore the tree a little more deeply than other engines. 
I have never written a chess engine before and I based my work on the Vice engine which is described in detail on Youtube. My engine - provisionally called Moby (for mobility) is written in C++ and the first implementation is running. Right now it plays a reasonable game but would be no match for the competition. At present it is only searching to depth 5 or 6 as it presently doesn&#x27;t detect duplicate moves. Adding this in should make a difference I imagine. 
I&#x27;d love to hear from anyone who has considered something similar or who might find this post interesting. 
If my engine gets stronger I might release it so that it can be ranked alongside similar engines.
======
gus_massa
> _By adopting such a simple function I would hope to be able to explore the
> tree a little more deeply than other engines._

I think you will explore the tree more _widely_ , not more _deeply_. Many
engines trim the tree very aggressively to make a mode depth analysis.

~~~
omnivorist
Thanks for your comment. The answer is that I am still hoping to trim the tree
like other engines. The simplicity of my engine lies solely in the evaluation
function. What I hope to save in CPU cycles on the evaluation might enable me
to go deeper on the tree. That's the idea at least.

~~~
gus_massa
Have you look at the method used by DeepBlue or Alpha(Chess)Zero? IIRC they
use a simple evaluation function and a lot of brute force ...

