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

Re: computer-go: Go Protocols



I just want to add that there is not a must to have the Go Modem protocol over a modem. GNU Go and CGoban uses it over standard io. That is on a UNIX machine the CGoban/GNU Go implementation should work on network as well as modem. On Windows it is not that simple. Because file io and network io and modem io are three diffrent things. But the main thing with the protocol does not have to be connected to the hardware.

Just because you set bits and stuff in the protocol does not matter. That is only a historical thing not something that makes it harder. The only thing is that it is not that well documented. And I would like a program that you could test all features against. Both as the creator(server) or the client. And it should be freeware etc etc etc. I know there were something available for a tournament earlier.

Jens Yllman

At 05:36 2001-01-05, David Fotland wrote:
At 04:10 PM 1/4/2001 +0100, you wrote:
Hi!

I'm relatively new to computer go (and go as well) and just started to
write an engine. Now the question of what protocol to use. I know two,
that both I'm not happy with:

a) Go Modem Protocol
I've translated the gmp.c to java and it works (more or less), I can
connect to cgoban. But my implementation seems somewhat unstable. I
inserted some debug-code. With debug-code it works, but I have an odd
feeling (something with timing seems to be wrong). Also I'd prefer to
setup my engine via the protocol, which isn't possible. With cgoban I
can't even test the undo-feature. An other drawback is, that it isn't
ascii based.
The protocol supports undo, so cgoban must not implement the full protocol.



b) NNGS/IGS-Protocol
I havn't internet connection at home, so I'd need my own server what I
think isn't worth the work. I havn't found any description of the
protocol, too.
The protocol is not documented :) It's ascii, but you have to reverse engineer
it yourself. I've written two clients, and it's not too hard to figure out. NNGS source
code for a server is available.


An other drawback of both of them is, that they aren't simple to use.
So I thought of creating my own protocol, but that has the drawback
that it will not used widely.
Only by you, I think :)


This in mind, I wonder if there are better protocols out there.
Properties I'd wish for a protocol are:

Server based  (Server starts and controles the engine(s)).
Ascii         (Easier to debug for humans, will give the chance of
               simulating an engine via telnet or stdin/stout)
Simple        (Why making complicated when not needed.)
Extendable    (If possible I'd like to start special features of the
               engine from the server rather than interact with the
               engine directly)

Do you know any, that suits this (or part of this)? I've seen, that
gnuchess uses a protocol, that looks like something I'd use (but
that's for chess ;-).
The modem protocol is very different from this since it had very
different objectives:

Peer to Peer: Two people playing over a modem with no other communication.
Low bandwidth for 1200 baud connections or lower
Error tolerant, since modem connections were very unreliable
Simple: it's about as simple as possible with the above constraints
Extendable: yes.

It was invented before the internet was available to people at home :)

The IGS protocol meets all of your criteria, I think. I don't understand why you
want to invent a server based protocol, but you don''t want to write a server :)


David Fotland