Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: How long to build your chess engine

Author: Tord Romstad

Date: 10:22:45 01/06/04

Go up one level in this thread


On January 06, 2004 at 11:03:06, Reinhard Scharnagl wrote:

>On January 06, 2004 at 10:40:57, martin fierz wrote:
>
>>On January 06, 2004 at 06:53:39, Reinhard Scharnagl wrote:
>
>>[snip]
>
>>>What I miss is a really modern (DLL based) protocol between an engine and a GUI,
>>>which consequently has a unic move encoding regardless whether normal chess,
>>>nocastle or fischerandom, additionally would be flexible to support 10x8 boards
>>>with more piece types, doing this with reduced intelligence by using engines
>>>themself as referee e.g. to decide whether moves are legal or not.
>
>>i did something like this for checkers - my winboard-inspired interface can use
>>engines which use other rules than the pre-coded american checkers (however,
>>only 8x8). in these cases it requires the engine to have an "islegal" function
>>which takes the move the user clicks on the board, and the engine tells the
>>interface whether it should accept that move or not.
>>
>>however, what you call "modern" - the dll - is not such a good idea IMO. i did
>>just that for my checkers interface, and i think the console output thing of
>>winboard/UCI is far superior. dlls are windows only. console programs run
>>everywhere. if i started doing this again, i'd use consoles now - but i guess
>>i'm stuck with the dll...
>
>there are similar technics as DLLs in Linux etc., but Linux is of no interest
>for me. Looking on the traffic statistics of my homesite:
>[http://www.rescon.de/Compu/fullchess1.html], there can be found only about 2%
>Linux and 1% Mac or Sun. Moreover Linux does not work correctly with my hardware
>and parallel installed Windows XP pro. So why should I also target other OSs
>already being here very exotic with my goals.

When designing a protocol, you shouldn't think only about your own goals.
The protocol is for the community, not just for you.  That there is something
similar to DLLs in Linux (I assume you are right about that, though I don't
even know what a DLL is) is not good enough.  I want to use exactly the
same code to compile my engine in MacOS, Linux and Windows.

Thanks to the fact that both of the two wide-spread protocols use console
IO, it is unimportant that Linux does not work on your hardware.  You could
still easily port your engine to Linux, by simply borrowing somebody's Linux
box and recompiling your sources.  My own situation is precisely a mirror
image of yours:  We have no Windows machines around here, only Macs and Linux
machines.  I haven't used a Windows machine since the days of Windows 3.0,
and am therefore almost 100% Windows-illiterate.  But despite this, thanks
to the wise choices of Tim Mann and Stefan Meyer-Kahlen, my engine now
runs on Windows machines.  Porting it was simply a matter of copying
my source code to a Windows machine and typing 'make' from the command
line.  If it were just marginally more complicated, it would never have
happened.

>COM moreover allows to specify events with the interface. That is, what makes
>that solution "modern". But may be, that somebody has a wonderful and better
>approach for a modern protocol. I would like to read from that then.

What is wrong with using console IO for the protocol?  I cannot see any
disadvantages at all.  It is portable, it works well over the network, and
it makes it trivial to port an engine to a new OS without having to
learn how the OS works.  In particular for non-technical people like
myself, it is extremely convenient.  I don't have the time nor desire
to learn any programming beyond basic console IO functions, especially
not for a foreign OS.

Tord




This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.