2 beginner questions

Code, algorithms, languages, construction...
Post Reply
INGEN
Posts: 1
Joined: Fri Feb 17, 2012 11:34 pm

2 beginner questions

Post by INGEN » Sat Feb 18, 2012 10:10 am

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

hyatt
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

Post by hyatt » Sat Feb 18, 2012 7:22 pm

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

User avatar
Uly
Posts: 838
Joined: Thu Jun 10, 2010 5:33 am

Re: 2 beginner questions

Post by Uly » Sat Feb 18, 2012 7:45 pm

INGEN wrote:2, And if i create an UCI engine is there any way to measure its ELO (performance) in a short time
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).

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.

Post Reply