Damage GUI

Discussion about development of draughts in the time of computer and Internet.
BertTuyt
Posts: 1303
Joined: Wed Sep 01, 2004 19:42

Re: Damage GUI

Post by BertTuyt » Mon Aug 29, 2016 13:57

Thats what I do testing the Engine :)

Bert

Krzysztof Grzelak
Posts: 705
Joined: Thu Jun 20, 2013 17:16
Real name: Krzysztof Grzelak

Re: Damage GUI

Post by Krzysztof Grzelak » Mon Aug 29, 2016 14:20

It's just write that it is a bad record of the party.

Joost Buijs
Posts: 317
Joined: Wed May 04, 2016 11:45
Real name: Joost Buijs

Re: Damage GUI

Post by Joost Buijs » Mon Aug 29, 2016 17:02

BertTuyt wrote:In the meantime Im working on a simple Engine based upon the (limited) Hub protocol.
It is named Dwarf (for obvious reasons).
Where can I find a description or draft about the Hub protocol? In another thread I also read something about UDI, a UCI look alike.
Since I'm new to the Draughts experience it is all very unclear to me, there is DXP and Guide (documented) and Hub (UDI?) sans documentation I guess.
I don't want to spend time implementing all these, maybe it is time for a well defined and documented standard based on UCI for instance?

BertTuyt
Posts: 1303
Joined: Wed Sep 01, 2004 19:42

Re: Damage GUI

Post by BertTuyt » Mon Aug 29, 2016 17:38

Joost, so far Guide and DXP are the only one who are documented.

I only started with Hub (an UCI derivate which I called UDI-ish), to connect via pipes the Scan Engine with my GUI.
As this was relatively easy, I started with the Dwarf activity.
Basically if I would start from scratch I would not go along a Guide route, but make a choice for something very easy (even a subset of UCI), using the wording of Rein, less is more.

I will try to put the minimal requirement for the Hub (or whatever name you want to give it) in a next post.

Bert

Joost Buijs
Posts: 317
Joined: Wed May 04, 2016 11:45
Real name: Joost Buijs

Re: Damage GUI

Post by Joost Buijs » Mon Aug 29, 2016 19:25

BertTuyt wrote:Joost, so far Guide and DXP are the only one who are documented.

I only started with Hub (an UCI derivate which I called UDI-ish), to connect via pipes the Scan Engine with my GUI.
As this was relatively easy, I started with the Dwarf activity.
Basically if I would start from scratch I would not go along a Guide route, but make a choice for something very easy (even a subset of UCI), using the wording of Rein, less is more.

I will try to put the minimal requirement for the Hub (or whatever name you want to give it) in a next post.

Bert
Bert,

A subset of UCI would do very well, in my chess-engine I use a subset of UCI and this is more then enough to play games or run
tournaments. It is not very useful to implement something like this if there is no GUI that supports this.
At the moment I think it would be wise (for me) to get my engine running in console mode and to implement another protocol (besides DXP) somewhere later in time.
Most people over here have > 25 years experience with draughts, besides the program I wrote back in 1992 I have no experience with draughts at all, so it is going to take a lot of time before my program plays at an acceptable level.

Joost

Rein Halbersma
Posts: 1625
Joined: Wed Apr 14, 2004 16:04
Contact:

Re: Damage GUI

Post by Rein Halbersma » Mon Aug 29, 2016 19:55

BertTuyt wrote:Joost, so far Guide and DXP are the only one who are documented.

I only started with Hub (an UCI derivate which I called UDI-ish), to connect via pipes the Scan Engine with my GUI.
As this was relatively easy, I started with the Dwarf activity.
Basically if I would start from scratch I would not go along a Guide route, but make a choice for something very easy (even a subset of UCI), using the wording of Rein, less is more.

I will try to put the minimal requirement for the Hub (or whatever name you want to give it) in a next post.

Bert
Hi Bert, interesting development! Just to be clear: it's gonna be a text-mode protocol right? No more socket fiddling? Rein

BertTuyt
Posts: 1303
Joined: Wed Sep 01, 2004 19:42

Re: Damage GUI

Post by BertTuyt » Mon Aug 29, 2016 21:01

Rein , it is extremely simple.

The 3 most important Hub commands from GUI to Engine are level, pos and go.
Output commands info (Search) and move.
See for example the Engine code for the move output (still in embryonic phase, only squares from and to, no captures) but selfexplaining.

Bert

Code: Select all

bool Hub_Move(void)
{
	DWORD dPFrom, dPTo;
	BITBOARD bbCapture, bbFrom, bbTo;

	if (iIDXBestMove == -1) return(false);

	if (bTurn == true) {
		bbCapture = pTDepth->bbField[BB_BLACKPIECE] ^ pMoveStack[iIDXBestMove].bbField[BB_BLACKPIECE];
		bbFrom = pTDepth->bbField[BB_WHITEPIECE] & ~pMoveStack[iIDXBestMove].bbField[BB_WHITEPIECE];
		bbTo = ~pTDepth->bbField[BB_WHITEPIECE] & pMoveStack[iIDXBestMove].bbField[BB_WHITEPIECE];
	} else {
		bbCapture = pTDepth->bbField[BB_WHITEPIECE] ^ pMoveStack[iIDXBestMove].bbField[BB_WHITEPIECE];
		bbFrom = pTDepth->bbField[BB_BLACKPIECE] & ~pMoveStack[iIDXBestMove].bbField[BB_BLACKPIECE];
		bbTo = ~pTDepth->bbField[BB_BLACKPIECE] & pMoveStack[iIDXBestMove].bbField[BB_BLACKPIECE];
	}

	int iXCapture = (int)POPCNT64(bbCapture);

	BITSCANFORWARD64(&dPFrom, bbFrom);
	BITSCANFORWARD64(&dPTo, bbTo);

	int iPFrom = iCINEX[dPFrom];
	int iPTo = iCINEX[dPTo];

	std::cout << "move " << iPFrom << "-" << iPTo << std::endl;

	return (true);
}


BertTuyt
Posts: 1303
Joined: Wed Sep 01, 2004 19:42

Re: Damage GUI

Post by BertTuyt » Mon Aug 29, 2016 22:34

Herewith the Dwarf Sources:

https://www.dropbox.com/sh/uv2d2kauvjyg ... 7x1La?dl=0

Here only the Hub commands pos, depth and go are implemented.

Here the folder with the GUI , just start the GUI and Dwarf will be activated.

To play a match against Dwarf (example Dwarf plays black, Oppponents Player-Engine), Levels Fixed Depth (example 12 or whatever), and you just start...

https://www.dropbox.com/sh/4f0fk89rwqrk ... auoea?dl=0

Any questions, comments welcomed.

Bert

Joost Buijs
Posts: 317
Joined: Wed May 04, 2016 11:45
Real name: Joost Buijs

Re: Damage GUI

Post by Joost Buijs » Tue Aug 30, 2016 08:41

Hi Bert,

I looked very briefly at your code and most of it seems easy to implement, unlike UCI you reflect every command back to the GUI is this needed? Is your GUI waiting for this?

It would also be nice to have an option to display search information like: search-depth, used-time, score, PV, nodes and nodes/sec.
UCI uses separate commands for this, something simple like "info string" does the job as well.

At the moment the search() in my engine is basically as simple as the one in the Dwarf program, it seems better to me to extend my search() before I start implementing your protocol.
This means I still have to add PVS with iterative deepening and SMP, this will take some days (if I have time to work on it).

Hopefully I can give you a more substantiated response by the end of the week.

Joost

BertTuyt
Posts: 1303
Joined: Wed Sep 01, 2004 19:42

Re: Damage GUI

Post by BertTuyt » Tue Aug 30, 2016 21:33

Joost a quick reply, message reflection is not required.
I implemented this as a debugging purpose to secure (and check) that the Engine received the message from the GUI.

Bert

Yves
Posts: 27
Joined: Sat Feb 20, 2016 14:00

Re: Damage GUI

Post by Yves » Fri Sep 02, 2016 19:03

BertTuyt wrote:Herewith the Dwarf Sources:

https://www.dropbox.com/sh/uv2d2kauvjyg ... 7x1La?dl=0

Here only the Hub commands pos, depth and go are implemented.

Here the folder with the GUI , just start the GUI and Dwarf will be activated.

To play a match against Dwarf (example Dwarf plays black, Oppponents Player-Engine), Levels Fixed Depth (example 12 or whatever), and you just start...

https://www.dropbox.com/sh/4f0fk89rwqrk ... auoea?dl=0

Any questions, comments welcomed.

Bert
:D
Attachments
Games Dwarf.pdn
Hi Bert
Here the games played Dwarf against Dragon, Flits, Horizon 43,
Kingsrow, Mobydam, Scan, Tornado and Truus in DXP. He plays fast.
I have not seen the database appear in the Damage window.
Yves
(13.56 KiB) Downloaded 148 times

BertTuyt
Posts: 1303
Joined: Wed Sep 01, 2004 19:42

Re: Damage GUI

Post by BertTuyt » Fri Sep 02, 2016 23:40

Yves, thanks for testing.
Bascically Dwarf is a demo Engine to demonstrate how to connect via Hub towards the Damage GUI.
So the good news is that also DXP works, but with respect to strength it will loose against all known competitors.
Which is also not a problem :)

Bert

Yves
Posts: 27
Joined: Sat Feb 20, 2016 14:00

Re: Damage GUI

Post by Yves » Fri Sep 16, 2016 19:04

:) :)
BertTuyt wrote:Yves, thanks for testing.
Bascically Dwarf is a demo Engine to demonstrate how to connect via Hub towards the Damage GUI.
So the good news is that also DXP works, but with respect to strength it will loose against all known competitors.
Which is also not a problem :)

Bert
Attachments
Image.jpg
Hi Bert
Thank you tell me if this importance when launching Damage 2016 and Horizon displays if the defaults highlighted in the image.
Yves
Image.jpg (111.86 KiB) Viewed 5086 times

BertTuyt
Posts: 1303
Joined: Wed Sep 01, 2004 19:42

Re: Damage GUI

Post by BertTuyt » Sat Sep 17, 2016 10:51

It indicates that the program is enabled to use the Opening DB (which is not included) and the Endgame DB.

Bert

Yves
Posts: 27
Joined: Sat Feb 20, 2016 14:00

Re: Damage GUI

Post by Yves » Sun Sep 18, 2016 11:25

Hi Bert
Thank you for all you do for the game of draughts community.
Until Dwarf progresses, I play Damage Damage 2016 and the 4.0 engine.
Dxp connection works well with all but the games are long.
Yves :D

Post Reply