
Damage GUI
Damage GUI
Joost, I started a new thread, to discuss the Damage GUI, as Perft() might not be the right location, and it could help also others.
First of all, Im not sure I posted the most recent Damage GUI, so you could help me , if you could share which link you used.
I will than also install Damage on my notebook (so also a fresh install), and from there I can support you in your questions.
I very must appreciate your involvement in using the Damage GUI, as I mainly used it so far as a testbed for my own program, so it might not be self-explaining and buggy.
So your remarks will certainly help me in making the GUI a better tool for who is interested in Computer Draughts and doesnt want to code a GUI him/herself, so can focus on Engine development.
Bert
First of all, Im not sure I posted the most recent Damage GUI, so you could help me , if you could share which link you used.
I will than also install Damage on my notebook (so also a fresh install), and from there I can support you in your questions.
I very must appreciate your involvement in using the Damage GUI, as I mainly used it so far as a testbed for my own program, so it might not be self-explaining and buggy.
So your remarks will certainly help me in making the GUI a better tool for who is interested in Computer Draughts and doesnt want to code a GUI him/herself, so can focus on Engine development.
Bert
-
- Posts: 1368
- Joined: Thu Jun 20, 2013 17:16
- Real name: Krzysztof Grzelak
Re: Damage GUI
Then please share it Bert.BertTuyt wrote:Joost, I started a new thread, to discuss the Damage GUI, as Perft() might not be the right location, and it could help also others.
First of all, Im not sure I posted the most recent Damage GUI, so you could help me , if you could share which link you used.
I will than also install Damage on my notebook (so also a fresh install), and from there I can support you in your questions.
I very must appreciate your involvement in using the Damage GUI, as I mainly used it so far as a testbed for my own program, so it might not be self-explaining and buggy.
So your remarks will certainly help me in making the GUI a better tool for who is interested in Computer Draughts and doesnt want to code a GUI him/herself, so can focus on Engine development.
Bert
-
- Posts: 474
- Joined: Wed May 04, 2016 11:45
- Real name: Joost Buijs
Re: Damage GUI
Hi Bert,BertTuyt wrote:Joost, I started a new thread, to discuss the Damage GUI, as Perft() might not be the right location, and it could help also others.
First of all, Im not sure I posted the most recent Damage GUI, so you could help me , if you could share which link you used.
I will than also install Damage on my notebook (so also a fresh install), and from there I can support you in your questions.
I very must appreciate your involvement in using the Damage GUI, as I mainly used it so far as a testbed for my own program, so it might not be self-explaining and buggy.
So your remarks will certainly help me in making the GUI a better tool for who is interested in Computer Draughts and doesnt want to code a GUI him/herself, so can focus on Engine development.
Bert
The version of the Damage GUI came from one of your dropbox links:
https://www.dropbox.com/sh/u1nekyp94kjz ... bZbka?dl=0
Writing a GUI takes a lot of time, It would be very convenient if I could use your GUI as you suggested some time ago.
At the moment my engine new is still very basic, very simple non-smp search() and a blank evaluation function.
Before I continue with improvement the engine I want to have a means of testing game-play against other engines, I know with DXP you can have engines match each other without any GUI at all but it would be nice if there is a way to observe the games graphically when they are being played.
I'm halfway with my DXP implementation, hopefully I can finish it this weekend, this gives me an easy means of examining the data your GUI sends. At the moment it is just a black box for me and I have no clue what all the DXP options in your GUI actually do.
Joost
Re: Damage GUI
Joost,
I uploaded the recent Version of the Damage GUI (version 0.93 , June 2016) in the Damage 2015 Scan Dropbox folder (the link you provided).
When you start the Damage GUI, the Engine as defined in Damage2016.ini will be loaded.
One has 2 protocols, Guide and Hub. Guide is used by the Damage Engine. Hub is a very embryonic protocol used the connect Scan towards the GUI. If you want I can sent you the modified Scan sources , where you can see what you need to change to make this possible (it is really very simple, as one need to modify only a few lines). Basically I would go for a Hub-like implementation as this is relatively straightforward.
You can see that the Engine also has been activated when the Engine name appears in the Engine Window.
To play a Normal game against (in this case ) Scan:
* Set the appropriate level, think (but need to check) that I only implemented Levels Normal Game, for example 75 Moves in 5 minutes
* Set Opponents to Player - Engine, when you want to play as White against Scan, or Engine - Player, when you want to play with Black.
* You can input your move by dragging (clicking right mouse button) the piece you want to move. Basically this is dependant on the Settings, See Tools Options , Move Settings)
As the Hub protocol was included in the Damage GUI in an ad hoc like way, you can nomally not see the Engine response (you see the move from Scan on the Draughts Board and on/in in the Game Window). You can change this by setting Display Guide Messages. Right click in the Engine Window (on the right side of the GUI), and a pop up Menu appears, Then click Settings, and checkmark Display Guide Messages. If you maintain this setting you will also see the startup sequence of the Scan engine the next time you start the GUI.
If this al works for you, I will do some tests on my notebook if the DXP also works here.
Bert
I uploaded the recent Version of the Damage GUI (version 0.93 , June 2016) in the Damage 2015 Scan Dropbox folder (the link you provided).
When you start the Damage GUI, the Engine as defined in Damage2016.ini will be loaded.
One has 2 protocols, Guide and Hub. Guide is used by the Damage Engine. Hub is a very embryonic protocol used the connect Scan towards the GUI. If you want I can sent you the modified Scan sources , where you can see what you need to change to make this possible (it is really very simple, as one need to modify only a few lines). Basically I would go for a Hub-like implementation as this is relatively straightforward.
You can see that the Engine also has been activated when the Engine name appears in the Engine Window.
To play a Normal game against (in this case ) Scan:
* Set the appropriate level, think (but need to check) that I only implemented Levels Normal Game, for example 75 Moves in 5 minutes
* Set Opponents to Player - Engine, when you want to play as White against Scan, or Engine - Player, when you want to play with Black.
* You can input your move by dragging (clicking right mouse button) the piece you want to move. Basically this is dependant on the Settings, See Tools Options , Move Settings)
As the Hub protocol was included in the Damage GUI in an ad hoc like way, you can nomally not see the Engine response (you see the move from Scan on the Draughts Board and on/in in the Game Window). You can change this by setting Display Guide Messages. Right click in the Engine Window (on the right side of the GUI), and a pop up Menu appears, Then click Settings, and checkmark Display Guide Messages. If you maintain this setting you will also see the startup sequence of the Scan engine the next time you start the GUI.
If this al works for you, I will do some tests on my notebook if the DXP also works here.
Bert
-
- Posts: 474
- Joined: Wed May 04, 2016 11:45
- Real name: Joost Buijs
Re: Damage GUI
Bert,
Thanks!
At the moment I would like to connect my engine to your GUI with the DXP protocol because that is the protocol I'm working on right now.
It is not clear to me how to do this because I have no idea what the various buttons in the DXP menu are doing.
Hopefully today I will get my implementation of DXP running (if my wife lets me), this will give me a means of examining more clearly what your GUI sends and when I have questions about this I hope you want to answer them.
There is one question I already have about DXP in general, how do you account for transmission times and latency? At times there can be huge latencies especially via IP.
I can imagine when playing a match via DXP one engine may think the opponent is out of time while the other may think think he still has time enough.
For chess they developed utilities like 'timestamp' and 'timeseal', but for draughts there doesn't seem to be such a thing yet.
Joost
Thanks!
At the moment I would like to connect my engine to your GUI with the DXP protocol because that is the protocol I'm working on right now.
It is not clear to me how to do this because I have no idea what the various buttons in the DXP menu are doing.
Hopefully today I will get my implementation of DXP running (if my wife lets me), this will give me a means of examining more clearly what your GUI sends and when I have questions about this I hope you want to answer them.
There is one question I already have about DXP in general, how do you account for transmission times and latency? At times there can be huge latencies especially via IP.
I can imagine when playing a match via DXP one engine may think the opponent is out of time while the other may think think he still has time enough.
For chess they developed utilities like 'timestamp' and 'timeseal', but for draughts there doesn't seem to be such a thing yet.
Joost
Re: Damage GUI
Joost, the purpose of the (6) DXP Menu Buttons are (altough Im not sure i have tested all in detail).
Make: Makes a DXP connection, the GUI takes care , the Engine is connected towards the GUI via GUIDE or HUB. Only a Connection is made, no Match is started. You can see if the connection was succesful via the DXP Info Window (see Info Button Description below).
Wait: The GUI waits till an external Engion (which is not connected to the GUI) Makes a connection.
Run: Start a DXP Match. Basically the DXP Match start is/should be independant on the Engine who created the connection. But Im not sure if I have implemented the option that an External Engine can start the DXP Match (so need to test that).
Terminate: Should terminate the DXP Connection.
Info: Toggles the DXP Info Window
Options: Sets the DXP Options
In my case I didnt check the opponents time, so the the DXP Match continues when the opponent is out of time.
Bert
Make: Makes a DXP connection, the GUI takes care , the Engine is connected towards the GUI via GUIDE or HUB. Only a Connection is made, no Match is started. You can see if the connection was succesful via the DXP Info Window (see Info Button Description below).
Wait: The GUI waits till an external Engion (which is not connected to the GUI) Makes a connection.
Run: Start a DXP Match. Basically the DXP Match start is/should be independant on the Engine who created the connection. But Im not sure if I have implemented the option that an External Engine can start the DXP Match (so need to test that).
Terminate: Should terminate the DXP Connection.
Info: Toggles the DXP Info Window
Options: Sets the DXP Options
In my case I didnt check the opponents time, so the the DXP Match continues when the opponent is out of time.
Bert
-
- Posts: 474
- Joined: Wed May 04, 2016 11:45
- Real name: Joost Buijs
Re: Damage GUI
Bert,
Thanks for the info!
I guess I have to take a look at GUIDE and HUB as well. It was my impression that the DXP protocol alone besides playing a match already has all functionality to have an engine play with the GUI.
This is all very new for me, two months ago I started with a bitboard move-generator using magics and I made an EGDB generator because this seems essential, I didn't have much time to look at protocols yet.
The program I wrote in 1992 was pure command-line oriented, since I'm not a draughts player I had great difficulties in entering the right coordinates, especially with blitz this was very difficult.
When I have something working at a very basic level I will get back to you.
Joost
Thanks for the info!
I guess I have to take a look at GUIDE and HUB as well. It was my impression that the DXP protocol alone besides playing a match already has all functionality to have an engine play with the GUI.
This is all very new for me, two months ago I started with a bitboard move-generator using magics and I made an EGDB generator because this seems essential, I didn't have much time to look at protocols yet.
The program I wrote in 1992 was pure command-line oriented, since I'm not a draughts player I had great difficulties in entering the right coordinates, especially with blitz this was very difficult.
When I have something working at a very basic level I will get back to you.
Joost
Re: Damage GUI
Joost, to implement the Hub protocol (which isnt an official protocol, just a simple Q&D way in connecting Scan towards my GUI) is extremely simple.
I will post the SCAN Visual Studio project in a Dropbox folder later, and forward you the link.
You will easily recognize that implementation is really straightforward.
Bert
I will post the SCAN Visual Studio project in a Dropbox folder later, and forward you the link.
You will easily recognize that implementation is really straightforward.
Bert
-
- Posts: 474
- Joined: Wed May 04, 2016 11:45
- Real name: Joost Buijs
Re: Damage GUI
Thanks!
My DXP implementation is almost finished, after this I will take a look at the hub protocol.
As I understand it, it is a very simple protocol made by Fabien to connect his engine to a Java GUI.
I still have a lot of other things to do, I have a basic search with quiescence but I still have to do things like hashing, smp, iterative deepening, pondering and time controls.
Most of these things can be done very quickly because they won't differ much from my chess engine, some things need to be done in another way though.
My evaluation function is ready, all structural scores are still zero at the moment, I have to tune them by self-play with logistic regression.
At the moment the search runs very fast, ~20 mnps on a single core, I'm afraid that it will slowdown considerably after I have added hashing, it might be better to disable hashing in quiescence this is something I still have to find out.
The plan is to have something that can play a game by the next Dutch tournament later this year.
Joost
-
- Posts: 474
- Joined: Wed May 04, 2016 11:45
- Real name: Joost Buijs
Re: Damage GUI
Is the Guide document version 0.5 from may 2004 the last one? Or are there changes since that time?
This is the last one I could find, and I don't want to scan through all threads to find out if there is a newer version somewhere.
Thanks!
Joost
This is the last one I could find, and I don't want to scan through all threads to find out if there is a newer version somewhere.
Thanks!
Joost
Re: Damage GUI
Joost, this is unfortunately the recent and last one.
Not sure what Michel and I , in the end, did implement in Damage and Dragon (as others didnt use it), and certainly we have crippled the standard with proprietary extentions.
But some basics will work.
Bert
Not sure what Michel and I , in the end, did implement in Damage and Dragon (as others didnt use it), and certainly we have crippled the standard with proprietary extentions.
But some basics will work.
Bert
-
- Posts: 474
- Joined: Wed May 04, 2016 11:45
- Real name: Joost Buijs
Re: Damage GUI
Bert, I will give it a try.
When I encounter things I don't understand I'll let you know.
It will take some time because my engine is not ready to play yet, hopefully I will get it up and running late september.
Joost
When I encounter things I don't understand I'll let you know.
It will take some time because my engine is not ready to play yet, hopefully I will get it up and running late september.
Joost
Re: Damage GUI
In the meantime Im working on a simple Engine based upon the (limited) Hub protocol.
It is named Dwarf (for obvious reasons).
The Engine is based upon the MoveGenerator() as discussed in this forum, a plain Alpha-Beta Search and an Evaluation based upon material (only).
For the Thread Input I copied/pasted the Thread.cpp and Thread.h from Scan (for ethics , see the Clone conflict discussion
)
There are a few bugs in the implementation, but I expect to post sources and Engine this weekend.
For testing purposes it is already included in the Damage 2015 Scan Dropbox folder.
Bert
It is named Dwarf (for obvious reasons).
The Engine is based upon the MoveGenerator() as discussed in this forum, a plain Alpha-Beta Search and an Evaluation based upon material (only).
For the Thread Input I copied/pasted the Thread.cpp and Thread.h from Scan (for ethics , see the Clone conflict discussion

There are a few bugs in the implementation, but I expect to post sources and Engine this weekend.
For testing purposes it is already included in the Damage 2015 Scan Dropbox folder.
Bert
-
- Posts: 1368
- Joined: Thu Jun 20, 2013 17:16
- Real name: Krzysztof Grzelak
Re: Damage GUI
Please test the record party Bert.