Computer Chess Club Archives


Search

Terms

Messages

Subject: Fritz 5.32 WinBoard - Programmers report and implementation hints

Author: Heiko Mikala

Date: 17:13:47 12/13/98


Hi everybody!

I bought Fritz 5.32 yesterday and tried to make my program (Winboard-
engine) work inside of Fritz. I faced some problems and thought I should
share my experiences with you.

I read in C. Liebert's report, that some Winboard engines don't work inside
of Fritz, and I think I know some of the reasons why some engines work
and others don't.


Here is, what I found out:
--------------------------

First of all, Fritz uses the Winboard protocol quite differently than
Winboard itself does. Fritz sends a "new" command for every move your
program must make.
Then it sends "hard" "easy" "force" and then the sequence of moves of the
current game up to the point where the engine has to calculate a new move.
After this it sends a level command in the form "level 0 1:32 0" (!!!)
"post" "white/black" "go".
After your engine has finished calculating and output a move , Fritz (or
any other engine) is on move and after that there comes again the command-
sequence "new" "hard" "easy" "force" and so on.

Conclusion:
-----------

1. Your program must implement the "new" command correctly. Some of us
   relied on the "xreuse/reuse1/reuse2" feature of Winboard to start a
   completely new instance of the engine for every game. This doesn't work
   in Fritz, furthermore the "new" command is beeing sent for *every*
   move!
2. The force mode has to work correctly in your engine.
3. THIS IS IMPORTANT: I think this is the reason, why many engines don't
   work correctly in Fritz concerning time-management:
   Your engine has to implement not only the "level 0 1 0" form of the
   level command, but also the "level 0 0:42 0" form! This form is not
   being used by Winboard, but it is documented in the engine-inf file!
   I think that many programmers didn't implement this version of level
   command, because it's never sent by Winboard (just like me..), but
   Fritz uses this command to tell your engine how much time is left!
   It uses it instead of the "time" command, and it's logical that it
   uses it, because after a "new" command a "level" has to be set...
3. You don't have to implement the Winboard analyze command. You will be
   able to use Fritz analysis functions even if you don't implement
   Winboard analysis. Fritz will send similar commands as mentioned above,
   then send a "level 10 30000 0" and then "go". This let's your engine
   analyze the current board position for at least two days...
   Isn't it fun? Use your own engine for all analysis functions in Fritz!
4. You don't need an opening book. Using the above commands and the force
   mode, Fritz sends your engine opening moves taken from Fritz opening
   book (tree). This means, that you can utilize Fritz opening book, and
   that you can play matches between different engines using the same
   book. Find out, how good your engine is with a good book!

Some negative criticism:
------------------------

Although the above mentioned command sequences enable the use of Fritz
opening book for all engines, I don't really like the idea of sending
a "new" command for each move. "new" means that all the initialization
stuff of an engine is executed, including clearing of hash-tables, eval-
cache etc.

First of all this may be very time-consuming, especially in blitz games!

Secondly some engines (including my own) rely on not clearing the tables
between the moves. Some of us try to utilize the information that was
gathered in previous searches (especially when pondering is disabled),
and all of this is lost after a "new" was sent.


The positive things:
--------------------

Man, this is fun! This is so much fun!! It's really unbelievable, a dream
come true. I always hoped that Chessbase would make their engine-interface
public, so that I could be able to use the Fritz-interface. Now it's
possible!

You can play matches against other engines not only in the way it's
possible in Winboard, but you can run huge tournaments. Automatically!
And Fritz will generate a cross-table automatically. It can generate
Elo-lists, based on your tournaments. And, hey, you can match your own
engine against the strongest programs available! Not only other Winboard
engines, but Fritz, Junior, Nimzo, Hiarcs etc. No matter, if your engine
loses these matches (like my own one does ;-), you can learn a lot and
have much fun!

And you can use your own engine in all of the analyse functions that are
available in Fritz. Analyse the games of your just finished tournament
with your own engine! Fritz saves information about search depth and
evaluation for every move of a game, for every engine. So you can see,
where the important turning-points of a game were, and start analysing at
these points. See what your engine says, and then look at what Fritz
or Junior etc say.

There's so much more. Man, I'm happy ;-) This is heaven on earth for an
engine programmer :)


I'm looking forward to Genius 6.0! Another dream come true?


If you have problems making your engine work with Fritz, feel free to
ask me.


Greetings,

Heiko.



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.