Crafty UCI version

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

Roger Brown
Posts: 782
Joined: Wed Mar 08, 2006 9:22 pm

Re: Crafty UCI version

Post by Roger Brown »

syzygy wrote: I think there are a LOT fewer engines of interest that do not support UCI than there are GUIs that support only UCI.

(Are there any GUIs supporting winboard/xboard other than winboard/xboard and that are in somewhat active use?)
Hello Ronald,

Oddly enough, in this regard, free guis do a much better job of supporting both protocols than their commercial brethren:

Winboard
Arena
ChessGUI

Commercial guis that support both protocols include:

Chesspartner
Convekta guis


However, inevitably persons limit the discussion to the Chessbase gui which does not support Winboard properly. Wait for it...

I admit to being partial to Winboard and ChessGUI. Part of the reason for that is that the developers are relentless in terms of implementing features, they respond to their users and I have not found an engine that I cannot use and I have a few engines...

Adam Hair should be able to add to my partial list.

Graham Banks is a noted ChessGUI user. He can point out its strong points better than I.

Later.
Roger Brown
Posts: 782
Joined: Wed Mar 08, 2006 9:22 pm

Re: Crafty UCI version

Post by Roger Brown »

bob wrote:
BTW, "Dr. Hyatt?" :) We have known each other how long? Moderation, etc? Bob works better for me. :)

Bob

Hello Bob,

Years and years.

It annoys Miguel too...

:-)

Later.
User avatar
hgm
Posts: 28475
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Crafty UCI version

Post by hgm »

syzygy wrote:I think there are a LOT fewer engines of interest that do not support UCI than there are GUIs that support only UCI.
What is of interest is subjective. To 99% of people only Stockfish and Komodo are of interest, and converting Crafty will do nothing for them. Fact is that converting a single engine to UCI will only increase their ease of use on a hand full of GUIs, while adding WB support to a GUI will do the same for many hundreds of engines.

Of course much of the complaints that WB engines do not work as easily under UCI-only GUIs is just because of low-quality adapters. On WinBoard, which is WB-only, using UCI engines is just as easy as using WB engines.
Werewolf
Posts: 2084
Joined: Thu Sep 18, 2008 10:24 pm
Full name: Carl Bicknell

Re: Crafty UCI version

Post by Werewolf »

bob wrote:
Werewolf wrote:
I think this is a great idea and it's such a shame some people have landed on your thread just to bash your idea.
UCI has huge GUI advantages and to get Crafty into this format would be brilliant.
Can you specify these "huge GUI advantages"?

For example, what does UCI allow that xboard can't do?
It's not so much what UCI DOES as what the GUI does which only supports UCI.

Here's just one example: Fritz has a nice feature which allows Deep Position Analysis of a certain position, fully automated.

However, not supporting winboard, the all new singing and dancing Crafty 25.0 cannot be used...

:cry:
User avatar
hgm
Posts: 28475
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Crafty UCI version

Post by hgm »

Why doesn't it work under WB2UCI?
mvk
Posts: 589
Joined: Tue Jun 04, 2013 10:15 pm

Re: Crafty UCI version

Post by mvk »

Evert wrote:What "control" does a GUI using the UCI protocol take away that CECP does not?
I'm not claiming I have fully grasped the specs yet, but the following things affect server play that I think are hard in UCI:
1. Knowing the identity of the opponent. (I use this in the book move selection.)
2. Knowing the rating difference with the opponent. (I use this for resign and draw offers/accept. And I plan to use it in book move selection as Black.)
3. Knowing if the opponent has offered draw, so I can decide to accept it or not, depending on my conditions based on parameters such as ratings, time control and clocks.
4. Being able to offer draw. For this I want to know the clocks, the time controls, and the ratings.
5. Being able to resign on my own conditions. For example, never when the opponent is in time trouble, in fast games without increment, when there is a "technical win", or when the opponent is much lower rated.
6. Being able to claim draw only after 51 moves, instead of 50. Because quite a few online engines mess up here and throw a piece on move 50 and forget to claim draw. I want to win those games.
7. Knowing when the game has ended, so I can trigger post-processing.

I realise all such things don't impact people using the engine for analysis or playing themselves or running basement tournaments. It is mostly for online play, and I wouldn't mind to migrate this all into icsdrone for example.
[Account deleted]
syzygy
Posts: 5943
Joined: Tue Feb 28, 2012 11:56 pm

Re: Crafty UCI version

Post by syzygy »

mvk wrote:3. Knowing if the opponent has offered draw, so I can decide to accept it or not, depending on my conditions based on parameters such as ratings, time control and clocks.
4. Being able to offer draw. For this I want to know the clocks, the time controls, and the ratings.
5. Being able to resign on my own conditions. For example, never when the opponent is in time trouble, in fast games without increment, when there is a "technical win", or when the opponent is much lower rated.
6. Being able to claim draw only after 51 moves, instead of 50. Because quite a few online engines mess up here and throw a piece on move 50 and forget to claim draw. I want to win those games.
Too bad, UCI considers all of that a matter for the GUI.... :mrgreen: :mrgreen: :mrgreen:
mvk
Posts: 589
Joined: Tue Jun 04, 2013 10:15 pm

Re: Crafty UCI version

Post by mvk »

syzygy wrote:Too bad, UCI considers all of that a matter for the GUI.... :mrgreen: :mrgreen: :mrgreen:
It would be nice the if the "GUI" (or "UI" (or just "I" for that matter)) provided a separate plugin model for that. It makes sense to isolate the calculator, and that is what UCI does. But it makes no real sense to bundle the game player with the GUI, and that is also not a necessary consequence of isolating the engine. The "player" part could be handled by a plugin just like the engine, using its own protocol ("UPI"?:-)). These two functions are quite orthogonal. For example, there is (hardly) any chess-specific logic in this at all. Maybe I'll hack some plugin model like that to icsdrone. Additional functions handled by such plugin could be searching for games, joining tournaments, responding to shouts or chatting in channel 120...
[Account deleted]
kranium
Posts: 2130
Joined: Thu May 29, 2008 10:43 am

Re: Crafty UCI version

Post by kranium »

mvk wrote:
Evert wrote:What "control" does a GUI using the UCI protocol take away that CECP does not?
I'm not claiming I have fully grasped the specs yet, but the following things affect server play that I think are hard in UCI:
1. Knowing the identity of the opponent. (I use this in the book move selection.)
2. Knowing the rating difference with the opponent. (I use this for resign and draw offers/accept. And I plan to use it in book move selection as Black.)
3. Knowing if the opponent has offered draw, so I can decide to accept it or not, depending on my conditions based on parameters such as ratings, time control and clocks.
4. Being able to offer draw. For this I want to know the clocks, the time controls, and the ratings.
5. Being able to resign on my own conditions. For example, never when the opponent is in time trouble, in fast games without increment, when there is a "technical win", or when the opponent is much lower rated.
6. Being able to claim draw only after 51 moves, instead of 50. Because quite a few online engines mess up here and throw a piece on move 50 and forget to claim draw. I want to win those games.
7. Knowing when the game has ended, so I can trigger post-processing.

I realise all such things don't impact people using the engine for analysis or playing themselves or running basement tournaments. It is mostly for online play, and I wouldn't mind to migrate this all into icsdrone for example.
+1

WB definitely has some great features...
#2 would be especially useful IMO, as there's been a boatload of talk the last few years concerning contempt settings of top engines.
If this info was incorporated into a UCI option, it would be a trivial matter for the engine to automatically adjust it's 'contempt' value based on the rating of it's opponent.

The fact that a UCI engine doesn't need to maintain the 'state' of the game internally, but instead gets handed a list of moves at the start of each turn and has to play out the moves one by one to reach the current position seems unnatural.
It's cumbersome and inefficient (just take a look at the Log-Window in Arena sometime near the end of a 150-move bullet game!).
Ferdy
Posts: 4853
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Crafty UCI version

Post by Ferdy »

kranium wrote:
mvk wrote:
Evert wrote:What "control" does a GUI using the UCI protocol take away that CECP does not?
I'm not claiming I have fully grasped the specs yet, but the following things affect server play that I think are hard in UCI:
1. Knowing the identity of the opponent. (I use this in the book move selection.)
2. Knowing the rating difference with the opponent. (I use this for resign and draw offers/accept. And I plan to use it in book move selection as Black.)
3. Knowing if the opponent has offered draw, so I can decide to accept it or not, depending on my conditions based on parameters such as ratings, time control and clocks.
4. Being able to offer draw. For this I want to know the clocks, the time controls, and the ratings.
5. Being able to resign on my own conditions. For example, never when the opponent is in time trouble, in fast games without increment, when there is a "technical win", or when the opponent is much lower rated.
6. Being able to claim draw only after 51 moves, instead of 50. Because quite a few online engines mess up here and throw a piece on move 50 and forget to claim draw. I want to win those games.
7. Knowing when the game has ended, so I can trigger post-processing.

I realise all such things don't impact people using the engine for analysis or playing themselves or running basement tournaments. It is mostly for online play, and I wouldn't mind to migrate this all into icsdrone for example.
+1

WB definitely has some great features...
#2 would be especially useful IMO, as there's been a boatload of talk the last few years concerning contempt settings of top engines.
If this info was incorporated into a UCI option, it would be a trivial matter for the engine to automatically adjust it's 'contempt' value based on the rating of it's opponent.
I use this in Deuterium, adjusting contempt automatically, based on rating and/or type <computer|human> of opponent.

Code: Select all

* <id> = UCI_Opponent, type string
		   With this command the GUI can send the name, title, elo and if the engine is playing a human
		   or computer to the engine.
		   The format of the string has to be [GM|IM|FM|WGM|WIM|none] [<elo>|none] [computer|human] <name>
		   Examples:
		   "setoption name UCI_Opponent value GM 2800 human Gary Kasparov"
		   "setoption name UCI_Opponent value none none computer Shredder"