Hi, i am new to chess programming and i have two important questions:
1, Which language is the best for implementating a chess engine (C# is comfortable but maybe not fast enough) ?
2, And if i create an UCI engine is there any way to measure its ELO (performance) in a short time, for example a chess server or tournament where it can fight other engines?
Thanks
2 beginner questions
-
- Posts: 1242
- Joined: Thu Jun 10, 2010 2:13 am
- Real Name: Bob Hyatt (Robert M. Hyatt)
- Location: University of Alabama at Birmingham
- Contact:
Re: 2 beginner questions
1. It is difficult to beat straight C. C++ will work but you have to be cautious about using real OO-type things, such as creating and destroying objects everywhere... I don't know how fast C# is. But speed is all-important, obviously.
2. Testing "quickly" is difficult. Playing on servers, you have no idea "what/who" you are really playing. Many claim to be some sort of original program, but are really just running some flavor of Houdini, a derivative of Robolito/friends. People lie about their hardware. So using a server as a test platform for improvements is completely hopeless...
2. Testing "quickly" is difficult. Playing on servers, you have no idea "what/who" you are really playing. Many claim to be some sort of original program, but are really just running some flavor of Houdini, a derivative of Robolito/friends. People lie about their hardware. So using a server as a test platform for improvements is completely hopeless...
Re: 2 beginner questions
It depends on the strength of the engine, you may want to play as many games as possible against engine that score around 50% against your engine, to improve against them, and switch them out periodically for better engines as your strength improves (this is an advice by Larry Kaufman that stopped testing against Rybka 3 because it became "too weak" for Komodo).INGEN wrote:2, And if i create an UCI engine is there any way to measure its ELO (performance) in a short time
It's not advised to test against engines that are too weak or two strong because the noise and randomness that you get are too high, for instance, if an engine beats 490-10 your engine in 500 games, making a change that gives you a 480-20 result may mean nothing because the extra 20 draws may be due to luck, while shifting from a 240-260 to a 260-240 result would be more meaningful (at least in the sense that the change could be positive and require more testing.)
You can test at hyper-speed (say, 1 second per game) and only slow down to see if the change holds at slower time controls.