Prompted by a few requests I had very recently with regards to the computer-Go framework I once started, plus some free time between a project I just finished and waiting for a visa to start my next, I have started on a project probably best described by the title of this message.

Whenever someone looked at my computer-Go framework they invariably where overwhelmed by what was there and didn't know where to begin. And I must say it probably hasn't helped that it's gotten rather intertwined with some of my personal experiments. So it's probably not surprising that it doesn't seem to have too many users.

So when Jim O'Flaherty approached me a few days ago about a framework to get new Go programmers started, I decided it may be a nice idea to do just that. A project that can be downloaded, and when instructions are followed a newcomer, someone who hasn't ever programmed Go before, can have a bot that plays random moves up and running in about ten minutes. As Jim pointed out, this potentially not only helps out beginners to get started, but may also provide an easy way for tournament managers to get a bot up and running in a standardized way without the developer needing to be present. (Well, as long as the bot is in Java of course. But other languages may follow this example.)

Maybe this is stretching things a bit and ten minutes isn't a whole lot for embarking on what is still one of the most challenging software engineering problems that exists. But I am someone who thinks that barriers are to be broken down and it should be made as easy as possible. I myself have little patience for open-source projects where it takes hours to download, compile and configure a project just to get started. More often than not I give up in frustration. I'm a "self-extracting-archive-that-installs-everything" type of guy. Otherwise I move on and look for something easier.

I think there are already two pieces of excellent software that help the Go programmer today. One is GoGui, which takes a boat-load of work on the front-end out of the hands of aspiring Go programmers. The other is CGOS, which I think is arguably the best platform for testing new ideas against real opponents.

But in between the two, connecting with your playing engine in an easy way is still a missing piece, so hopefully this is something I can fill in. There has been much discussion recently about Don's Java reference bot. I think there already exist several of them. Peter Drake has a solid reference implementation with Orego. My framework has one. And there are probably more out there. The problem with all of these is that they still don't really make it easy for someone to start their own.

So the last few days I've been busy making a kind of plug-in architecture. All you need to do is provide a JAR with a class that implements an interface of a handful methods and you're ready to put it on CGOS. Or you can use it in combination with GoGui, or twogtp. There are still some loose ends to tidy up before I'll make this public but it probably won't take long. You're still 100% free to design the playing engine any which way you like, but all the communication stuff will be completely take out of your hands.

Doing this I have had a few bumps in the road though. And no matter how invaluable I think CGOS is, there are a few (I hope constructive) criticism I'd like to make.

I have everything working nicely on my Mac OSX. But on Windows things are problematic. The cgosGTP-win application doesn't work at all. When going to a bit more trouble and tracking down the tclkitsh and using that instead, I see some erratic behaviour. Often it stops after putting out "Engine does not support time control commands". Even when it gets past that, I invariably get a broken pipe message as soon as a game starts. Although exactly the same application works fine on a Mac, I'm very willing to believe the problem is on my side. But the problem is I get no feed-back. Whatever error would be put out by my application is not shown on the console. Nor is there any other hint of what could be the matter, it just splurts out a whole lot of junk from some script. I believe it would be a big help if this was improved. Input by others who have experience with this on Windows would be greatly appreciated.

Since it takes some time for a new round to start, debugging quickly becomes a very time-consuming business. Before actually putting it out on CGOS, I always do some test-runs with GoGui and the related twogtp, but apparently this is no guarantee to success. So what I'd like to see is a CGOS-mockup implementation. A program that puts a bot through its paces to make sure it completely complies with CGOS before actually going online.

I want to stress again, I don't just want to throw some random criticism out there. I want to help improve things. So if I can help with the issues I just described above I'm more than willing to help work out a solution. And preferably I'd like to make sure that I'm going to be the last one having to deal with these issues.

Mark

_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to