Author: Robert Hyatt
Date: 08:50:12 03/30/01
Go up one level in this thread
On March 30, 2001 at 09:14:35, Vincent Diepeveen wrote: > >I have had bunches of problems implementing xboard/winboard protocol. >I'm not saying the protocol is bad, but basically winboard protocol is >a CONSOLE protocol. It works perfect for console engines. > >It has no error correction or whatever build in. Using this to communicate >between 2 machines would be a disaster without a proper way of shipping >commands. Remember, hardly anyone with 2 or more computers has a network, >even though it costs nothing nowadays. People simply can't install it! > >They can however put a nullmodem cable between 2 computers. No problems >there. > >The auto232 protocol is very easy, but it has of course serious flaws >if you look to it in a theoretic way. From practical viewpoint it's very >good for slow level matches. Winboard protocol would already fail here >as it would set both computers at the same level for example, where definitely >most persons have different speed computers! I play "odds" matches all the time. Nothing says you can not use winboard to talk between the engines, but let each engine do its own time-keeping and ignore the winboard time messages. Works fine. > >The basic idea of the auto232 protocol is that you just ship a move to it >and get moves from it. Also starting a search command. > >That's it. > >So the principles of it are VERY EASY. Winboard is just as easy, programming-wise.. > >The biggest part of the protocol is how it ships things to the other >computer. I DON'T DOUBT THERE ARE BIG IMPROVEMENTS POSSIBLE THERE. > >Especially under NT 4.0 i couldn't get the chrilly auto232 player to work! > >Note it said in header file: "auto232 for win95,98". > >So it's incompatible, it's a big pain in the ass for a lot of different >things, but it's very easy to get to work, even for a beginning programmer! > >The winboard protocol has more commands how to adress the ENGINE. > >Where here you need to adress the windows INTERFACE of course. you have shit >to do with the engine. You want a module that simply handles all things >for you! > >A big problem for winboard engines for example is if i put one on >computer A and one on computer B i have NO IDEA how to let them play >against each other without using an auto232 player!!!!!!!!!!!!!!!!!!!!! winboard /fcp crafty.exe /fh node1 /scp ncrafty.exe /sh node2 works perfectly, running 'crafty' on node1, ncrafty on node2. > >Auto232 handles right that. Auto232 is nothing more as a small file >that connects a computer A to a computer B. > >The command set to ship is of course very small but sufficient. >it ships the move basically, that's it. > >In DOS the auto232 player was even easier. Just write and read >from the parallel port!! That is a gross simplification. What about the timing issues? You can't send characters too quickly. I/O interrupts cause the thing to lock up. etc. > >So definitely auto232 is a bit outdated when looking to the possibilities >nowadays, but it works more than ok. It worked fine for crafty until I added tablebases. Then it started locking up when I probed. I added a delay facility. But it had to be tuned for each different machine. That is "easy"??? Not compared to winboard which has no timing problems to worry with. > >>Some of the auto232 ideas were definitely neat. Grabbing a chess move by >>watching video RAM. Sending it over an RS232C port. But Jesus, this can be >>done without making it highly sensitive to various timing issues. > >Without doubts the way in which both programs communicate can be done >better. Also the implementation of chrilly is eating loads of system time >at startup. My complete interface is parallellized by just that auto232 thread >(if it's a single cpu computer). > >Also i would like to have something that works in both win2000, NT, 98, ME >and 95. Linux is no big deal as crafty can be loaded as winboard engine >anyway. > >>I will certainly say one thing. Anybody that writes code with that many timing >>holes had better _never_ try to write a parallel chess engine. It will _never_ >>be debugged with those kinds of critical design flaws included. > >Here we agree completely. > >>Writing code to handle asynchronous events is not difficult. In fact, if I >>were trying to write a driver that misbehaves as badly as auto232, I really >>would not know where to start. It would be very hard for me to write code >>that fails or works depending on lots of random timing considerations. >> >>So conceptually, yes auto232 is great. But its implementation sucks with two >>straws. :) > >That's just implementation level and protocol level. The basic idea >is that you link a C file to your interface and you only cut'n paste in >WndProc() handler a few catches of auto232. > >So linking a C file and adding 10 lines of C code you can already start using >auto232 player. > >This basic concept should NEVER be changed. Of course recognizing more >commands would be cool, but the bottom line remains the same! > >On the other hand the winboard protocol is simply STEERING the engine, >which is a bad idea IMHO, as i get all kind of stupid commands which >are useless like 'hard' 'white' (though it is already white to move) >and all kind of silly commands. Like adjusting time a millisecond >though we have plenty of time left to play the game, why adjust time >already then? Even worse, why adjust time every move? If you don't adjust time after every move, you get timing inconsistencies. A program takes more time than it thinks. Otherwise we would not use _real_ chess clocks at computer chess matches, we would let each program keep up with its own time. > >then the weird ? command in winboard. i still wonder what it is doing. >is it forcing a move or is it asking for a move or is it stopping search? That says "move now". > >Further i miss also the current line. I always show every second a current >line of what diep is seraching now. I get that in the analysis popup. > >On the other hand if i debug winboard protocol using winboard.debug >from other engines, then after a while it is loaded with all kind of >nodes a second data! > >So there are flaws in both protocols obviously, both aren't bugfree nor >doing what we want to the full extend. > >Basic thing is that auto232 practically works perfectly. The Titanic "practically" was unsinkable too... > >Yet the few 'features' it has like shipping a save game command, >those are already commercially exploited! > >Then there are the weird chessbase commands. Well it's their right >to communicate between their engines all kind of secret information, >that's none of my business. > >But it gives me a bad feeling that when i play 2 chessbase interfaces >against each other that they share with each other secret information. > >Vincent That's another nice feature of winboard v2 protocol. You can control what you get and don't get, and what you can say or not say.
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.