[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [computer-go] How to play go with other programe?



Nick Wedd <nick@xxxxxxxxxxxxxxxxx> writes:

>>I think you are still missing the point that there is no hardware part to
>>invent here.
>
> I am not missing that point at all, it is what I thought I had been
> banging on about.  I see the lack of a hardware part as a fatal defect.
>

> Next August, I may be helping to run the computer Go event that will
> form part of the European Go Congress, in Prague.  Suppose I find:
>      An entrant with a Macintosh and a program running on it
>      An entrant with his own fast Windows PC and a program running on it
>      Six entrants with Windows programs
>      Eight Windows PCs provided by the sponsor
> and all the programs are able to support GTP.
>
> What do I do next?  Some kind of cable must be involved somewhere.  So
> let's assume that the sponsor's PCs are on a LAN, and I can add the
> other two computers to the LAN.  Then what?

I think you'd have to specify in more detail... twisted pair ethernet
/ coax ethernet ;  10Mb / 100Mb ; etc


You're right - "I support GTP" is not enough. But once the GTP bit
works, it should only take a little bit of extra work to make the GTP
work over any reliable stream connection.


For this situation, I'd guess it's up to the tournament organiser to
specify the protcol : tcp would seem an obvious choice. [Note that
I've never had to organise such a tournament]

I'd guess you're anticipating one program per computer. You'd have to
define whether the programs speak to each other directly, or whether
they each connect to a referee / match co-ordinator.

In the former case, you need to specify that each program can both
initiate the tcp connection or accept the connection - you can't play
two programs which can only accept() or only connect(). And of course
you need to mandate that the match parameters can be configured. What
if one of the programs refuses to accept the parameters the other is
sending - which one do you disqualify ?  What about psychological
techniques like buffer-overflow attacks !


For the latter (which sounds safer), you dictate whether the program
connects to your controller, or whether the controler connects to the
program. You'd have to specify whether port numbers are fixed or must
be configurable.


Then it's up to the programmer to make sure their engine can compete
in such a tournament. 


For unix, a trivial bit of glue like netcat can establish the
tcp connection (whether connect() or accept()), bind the socket to
stdin/stdout, then exec the engine.

On windows... well, I wouldn't go there. The simplest, though least
flexible way, is to teach the engine how do use winsock directly.
The problem with this is that the programmer may have to waste time
tweaking the comms code for each different tournament.


( You didn't say if the mac was mac=os 9 or unix. )


dd
-- 
Dave Denholm              <ddenholm@xxxxxxxxxxxxxxxxx>       http://www.esmertec.com
_______________________________________________
computer-go mailing list
computer-go@xxxxxxxxxxxxxxxxx
http://www.computer-go.org/mailman/listinfo/computer-go/