Introduction
In Part one, we mentioned that by sharing common protocols you
can import engines to different interfaces. In this issue we will
examine in greater detail the history of the main protocols ,the
differences between the two protocols and what it means to the user. We
will then end with a small discussion of the types of adaptors available
that allow you to adapt one
type of engine into another. On top of all this theory and history, a graphical guide to the use of Winboard engines in Winboard,Arena,Scid and Chessmaster
is also available. Similarly, the use of UCI engines in Fritz and Arena
will be covered. But first let us begin our discussion with the
dominant chess engine protocol today - the Winboard protocol.
The King of the Hill
As mentioned in part 1, the Winboard protocol1
is one of the two main open chess communication protocols in use today.
The Winboard protocol was first "born" (more by accident than design) in Sept
93, and has grown from strength to strength since then.
The formal name of the protocol is actually "Chess Engine Communication Protocol" (as titled in the protocol document)
, however today it is more commonly known as the Xboard or Winboard
engine communication protocol or even shorter Xboard/Winboard protocol.
The name "Winboard" in the protocol, of course comes from the
fact that the idea and support for the protocol first came from
Winboard which is one of the most popular chess playing clients at
freechess.org. Similary chess engines that support the Winboard
protocol or known as Winboard compatible engines or Winboard engines.
Today there are almost 200
released Chess engines with Winboard support as well as dozens of free and commercial interfaces (e.g
databases,FICS clients,PGN readers) that support Winboard engines.
Below is a sample of some interfaces that support Winboard engines.
The Winboard protocol comes in 2 "favours", Protocol I and
Protocol II (released in Dec 2000 and supported in Winboard 4.2.1 and
up). A small incremental change, Protocol II supports a few additional
features including the use of SAN (standard algebraic notation) ,
Ping Pong commands, use of setboard instead of edit etc.
From the point of the user though, the differences are not
very important, as the protocol is designed to be backward compatible
and most interfaces that support Winboard protocol II will run
engines that support protocol I as well2.
In terms of engines that support Protocol II, the numbers are
still small (though growing) compared to protocol I. Some examples of
Chess engines that support protocol I as well as II are
Crafty,Comet,Yace,Sjeng etc. Generally such engines support protocol I
as well, so they should work fine in interfaces with only Protocol I
support3 .
As of March 2003, discussion has being going on about
implementing Protocol III for almost 2 years. Among the proposed changes
include the ability to define secondary time controls. Unfortunately
this has not being implemented in Winboard (the interface) itself, but
many others interfaces like Chessmaster and Arena have gone ahead to
support secondary time controls.
A not so brief history of Winboard and Chess engines
Warning : This section is a
recounting of the history of Winboard and the protocol, for those who are not interested,
you can skip to the next section without missing much. In
fact, this is a rehash of a much longer article on history of Chess engines protocol. A timeline of the
events below is also available.
Despite the importance of the Winboard protocol today, the birth
of the Winboard protocol was purely accident. Back then, Winboard like most programs of
the time was designed as a interface for only one engine , in this
case GNUChess. However several programmers noticed that Winboard and
GNUchess were separate programs and several people thought of the idea
of connecting their own chess programs in place of GNU Chess. One of the
first to do so was Shay Bushinsky (co-author of Junior, WCCC 2002, WMCCC
multiprocessor 2001 winner and other awards), in November 1994. He
emailed Tim Mann questions on how to do it, and it was from these
questions that an ad-hoc engine protocol was created. The current Chess engine
protocol (which sets out the "language" all chess engines must
"speak" to talk to Winboard) is the direct descendent of that
first email answer.
Why would programmers of other chess engines want to use Winboard?
One of the reasons was convenience. To many programmers the
challenge of coding a chess program lay in tinkering around with the
Chess playing Algorithms to get the strongest possible program. In
contrast, the other parts of a chess program that involved building a
interface to interact with the user (draw a chessboard, update the
board, response to user input) was boring but seen as a necessary
evil. Untill Winboard came along that is. Now all they had to do was to
concentrate on the chess playing portion and Winboard would provide the
rest!
Another reason was that by that time Winboard had already implemented
support for Internet Chess Servers (ICS).
In 1993,The Chess engine helper used in Winboard to run chess engines
known as zippy, began life has a bot that merely shouted zippy the
pinhead quotes. As Tim Mann recounts4 this was in retaliation for a bot ,
Norm which shouted Norm Peterson lines from the "Cheers" TV show.
Eventually Zippy was adapted to allow GNUchess to play online. This
development made it attractive to create Winboard engines since this
created a easy way for chess programmers to subject their chess
creations to the stiff online competition against unpredictable human chessplayers.
The last and perhaps most important reason why Chess programmers wanted
to join the "Winboard family" was that as more and more Chess engines
supported the standard, the number of engines one could test against in
Winboard increased. In particular, one of the first to do so was Crafty
which was acknowledged as the leading freeware chess program.
Winboard made it easy for budding Chess programmers and testers to
run automated matches against other Winboard engines to gauge the
strength of their creations. With a few clicks, you could leave your
computer unattended, and let 2 Winboard engines bash each other up,
come back a few hours later and look at the results. This was far
superior to the alternative of manual testing of course.
Crafty and Comet battle it out
on Winboard automatically.
Much to the amazement of the author of Winboard, the momentum of
the "Winboard movement" quickly snowballed thanks to the efforts
of several enthusiasts and pioneers like Frank Quisinsky and Djordje
Vidanovic (who probably started the first Winboard related sites for
engines testing) who popularised Winboard among users and programmers
alike. Being Winboard made pitting chess engines against each other
easy, many users began to run "tournaments" and publishing their
results, trying to figure out which engine was the strongest. Crafty
was probably the first free Chess engine that supported winboard in '96
and by Jan '97 there were some 17 known free engines that supported the
protocol, 50 by June 2000 , the 100 engine mark was breached somewhere
in June 2001 and there are over 170 (almost all free) by year end
2002.
Once the number of free Winboard engines had reached a critical mass,
other commercial programs began to see the advantage of leveraging on
this phenomena, and they too made their interfaces Winboard compatible. By Feb 2000, pioneer commercial
software like Chess Assistant, Chessbase ,Chess Vision among other interfaces had already
began to support Winboard engines. The Winboard protocol's greatest
success was in Nov 2002, when even Chessmaster , the world's best
selling software began to support Winboard engines. At one stroke,
millions of users around the world was introduced to the use of Winboard
engines. The Winboard era had arrived.
Below is a graph (drawn from the work of Gunther
Simon) showing the increase in number of free Winboard engines
through the years up to the end of 2002.
Graph
charting the number of Winboard engines over the years
The Problem with adaptors
While many other interfaces managed to support Winboard engines without
any major problems, it was unfortunate that the very first commercial
software to do so ran into huge controversies. In Dec 1998, Fritz 5.32 was
released with great excitement. It was the first chessbase program to
support Winboard engines. Fritz 5 and earlier version was already known
for it's support of other Chessbase programs like Hiaracs,Junior and
Nimzo (using another closed and private communication protocol -
chessbase protocol) and it was expected that the addition of
Winboard support would usher in a period of unprecedented automated
testing among professional and amateur programs.
This excitement was tempered somewhat by the knowledge that the use of
Chess engines was strictly one way. Through the use of a "Winboard
adaptor" you could use Winboard engines in Fritz 5.32 but there was no
equal avant adaptor that could allow you to adapt Fritz 5 engine to be
used in Winboard. Still, the opportunity to test Winboard engines
against Fritz engines was an exciting one.
Unfortunately, within a month of the release of Fritz 5.32, a huge
outcry erupt in both the Computer Chess Club and
rec.games.chess.computer5. Testers found that the Winboard adaptor was
designed very badly and gravely weakened the Winboard engines.
The technical details are somewhat complicated, in essence the
chessbase gui sends a "new" command each turn to the engine, which makes
the engine think that there is a new game. It will then resend all the
moves for the game up to that point. This goes against the established
protocol and for good reason since this resending of moves
weakens the adapted engine as it loses all the information
stored in the hash tables up to then. There are other serious flaws as
well, but this was the major sticking point.
Despite years of debate, no one really knows why Chessbase has refused
to fix this problem . Some speculated darkly about conspiracies to
weaken the performance of free Engines to make their own commercial
engines look better in comparison others defended Chessbase by pointing
out that the engines were not weakened in analysis of positions , which
was the main purpose of allowing Winboard engines to run in Fritz, i.e
to allow a second opinion and it was not anticipated that users would
try to run engine versus engine matches.
Whatever the reason ,this all became moot, when in Jan 2002, Chessbase
while reorganising their webpages , quietly dropped offering the
Winboard adaptor for download without any explanation. At the same time,
rumours began circulating that with Stefan Meyer-Kahlen (author of
Shredder and Universal Chess Interface Protocol) joining the chess team,
Chessbase would begin to support the Universal Chess Interface (UCI)
instead. This duly happened in Feb 2002, with a update for Fritz 7.
This is hardly the end of the Winboard protocol of course, but Winboard now has a new rival.
Enough theory, show me how!
Okay, so you are not interested in all that history and theory. You
want to learn how to use Winboard engines. You can find the
instructions here in Using Winboard engines - a graphical guide.
This section has gone on long enough already and space restrictions do
not permit me to elaborate more on other significant events in Winboard
history. Next, we will cover UCI engines.
1.
Purists would no doubt insist that the correct name of the protocol is
the xboard protocol or at least the Winboard/xboard protocol and accuse
this site of being too "Windows specific". Technically they are right,
since xboard, the unix brother of Winboard was first. But today the
popularity of Winboard far eclipses that of xboard, and I shall adopt
the convention of calling the protocol the Winboard protocol. It's just
a name anyway.
2. As of writing March 2003, there are some
teething problems in Arena with regards to supporting some Protocol 1
engines. In Winboard, sending the -protover 1 command will force
Winboard strictly into Protocol 1 mode if necessary.
3.The only chess engines which I'm aware
of which supports only Protocol 2 but not 1 are chess engines Mint and
King of Kings (versions older than 2.0). Such chess engines might fail
to work in Chess interfaces with only protocol I support.
4. Drawn from Frank Quisinsky's interview with Tim Mann
5 Rec.games.chess.computer thread entitled
Fritz 5.32. How disruptive to other engines?
|