davidjustice149 / Chess

development of a chess engine
0 stars 0 forks source link

Brainstorming #5

Open Seekinatangent opened 4 years ago

Seekinatangent commented 4 years ago

Gentlemen, as we may have more time on our hands I thought I'd resurrect this project. Speaking to Phil, he casually mentioned the programming in "Golang". In the tiniest bit of googling, I happened upon CounterGo, a chess engine written in Golang rated 83rd in the world:

https://github.com/ChizhovVadim/CounterGo

It uses the Universal Chess Interface (UCI), compatible with many programs, including Chessbase.

Is anybody interested and is this reasonable?

Seekinatangent commented 4 years ago

The first step is to Choose a Language. For a given language, we can probably find an example chess engine to steal the less interesting functions from. What follows is a list of major functions

Interface: UCI (probably). Very stealable. This function can probably be stolen from some nerd's hard work. It will be able to pull a position and send moves.

Legal Moves: Very Stealable. A question often arises about board representations. At this point, it appears to me that we can probably find a function that will return all the legal moves from a given position. From this context, we shouldn't REALLY have to worry about board representations across functions, save for what is passed into the evaluate function

Tree building: One of the two major functions that will need to be deeply considered. Any chess engine we analyze is sure to have a tree building function. To begin, we may be able to just use whatever pruning method is available on the reference engine, otherwise we can do some experimentation with other methods (including but not limited to alpha/beta pruning).

Evaluate: This is where the fun begins. Depending on how the board representation works, we may pass in a number of things into this function. What I invision as the most simple scenario is passing in a FEN represntation of the board. My fantasies involve everyone writing their own evaluate function and a tournament commenses!

Two Parting notes: 1)David mentioned the Monte Carlo Tree Search. I'm not exactly sure how it's implemented in a chess program but doing so MAY have the added benefit of removing the need for an evaluate function. 2)It may be possible to combine Tree Building and Evaluate functions in a neural network, but that sounds like a big-ol can o-worms!