Banksia GUI released

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

Moderators: bob, hgm, Harvey Williamson

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
Ras
Posts: 1348
Joined: Tue Aug 30, 2016 6:19 pm
Full name: Rasmus Althoff
Contact:

Re: Banksia GUI released

Post by Ras » Wed May 20, 2020 11:06 pm

hgm wrote:
Wed May 20, 2020 7:08 pm
Weird mate scores is part of the nostalgy.
Nostalgy is about keeping only the good parts, not about always finding new pretexts why the GUI should annoy users. The whole CECP ecosystem has had no shortage of user annoyance, and a GUI working around that crap makes it at least somewhat bearable.

Next improvement suggestion:

Another hassle is that many CECP engines don't recognise "?" during search and thus are unsuited for analysis. It totally sucks to have to figure that out for each engine individually as part of the usual "what CECP stuff doesn't work this time" process. So along with working around the mate score problem, I'd suggest that the GUI gives some complicated position for analysis, or fixed movetime of maybe 20 seconds, and then tries to interrupt the search. If the engine doesn't react within one or two seconds, kill it and store that "analysis" should be blocked.
Rasmus Althoff
https://www.ct800.net

User avatar
GONeill
Posts: 55
Joined: Sun Jun 15, 2014 4:40 am
Full name: Graham O'Neill
Contact:

Re: Banksia GUI released

Post by GONeill » Thu May 21, 2020 12:33 am

A couple of questions about analysing games. I've finished my game and have the Main board, Score Graph, Moves, Engine Info windows open. I can click on the moves in Moves to jump to a certain point in the game, but how can I:

1. Configure the colours of the Score Graph so that the score at the current move is highlighted? At the moment all points and lines are blue, but it would be good if the score of the highlighted move/position was red.

2. How can I get the loaded engine(s) to anaylse the current position? In Arena I can jump to a move by clicking in either Moves or Score Graph and then click "Analyse". Whatever engines are currently loaded will then start processing, showing their favoured moves with arrows on the Main board. I can then click through the played moves and the anaysis will be updated for each new position. It's a good way to see in real time where the moves diverged from the engines analysis and means I can leave it thinking longer on some moves than others. I know there is the Analyse Game option but that seems more geared to anaylsing a set of moves in batch mode.

Arena screen:
Image

Thanks!

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

Re: Banksia GUI released

Post by hgm » Thu May 21, 2020 8:15 am

Ras wrote:
Wed May 20, 2020 11:06 pm
Another hassle is that many CECP engines don't recognise "?" during search and thus are unsuited for analysis. It totally sucks to have to figure that out for each engine individually as part of the usual "what CECP stuff doesn't work this time" process. So along with working around the mate score problem, I'd suggest that the GUI gives some complicated position for analysis, or fixed movetime of maybe 20 seconds, and then tries to interrupt the search. If the engine doesn't react within one or two seconds, kill it and store that "analysis" should be blocked.
This is complete nonsense. One does not need the "?" command at all to terminate an analysis search. According to the protocol specs this command is not even allowed during analysis. The only valid way to leave analyze mode is through the 'exit' command. And I don't know any engine that doesn't support 'exit' when it supports 'analyze'. Such an engine would be badly broken in a very obvious way, as when you set it to analyze it would hang forever. A compliant engine that does not support analysis would reply to the 'analyze' command with "Error (unknown command): analyze", and then the GUI could refuse the mode switch, and log the engine as not having analysis support. This is indeed what WinBoard does. Engines could also notify the GUI of this in advance (through feature analyze=0), so that the GUI can grey out the 'analysis' menu item to begin with; this is the prescribed method, but of course legacy engines might not do it.

What you propose would actually break many engines for analysis that would be perfectly able to do it. E.g. Fairy-Max supports analysis, but not '"?". The "?" command is only for when the engine is playing a game, and it is its turn to move. And it is a really bad idea to disable playing of games just because "?" would not be implemented, as most people who play games would never want to force the engine to move.

User avatar
phhnguyen
Posts: 694
Joined: Wed Apr 21, 2010 2:58 am
Location: Australia
Full name: Nguyen Hong Pham
Contact:

Re: Banksia GUI released

Post by phhnguyen » Thu May 21, 2020 8:39 am

AdminX wrote:
Wed May 20, 2020 9:54 am
Feature request:

This GUI already provides alot, so I don't know if it is possible to ask for more.
Yes, please. Ideas, feature requests, feedbacks... are more than welcome!

BSG core becomes stable day after day. Thus I have more time to look around. I still have a long list of jobs to do. However, it will run out quickly.
AdminX wrote:
Wed May 20, 2020 9:54 am
How difficult would it be to implement a personal "Engine Cloud" type of feature whereby one could use their more powerful system running Banksia and have it communicate with Banksia running on a weaker machine from a remote location? Chessbase does this as a service via the "Cloud", however I doubt that the cloud may even be needed for this to work.
That task is doable. It requires a server that is actually similar to normal chess playing ones: users can play from any (weak computers) to vs ones in stronger computers and BSG plays the role of a bot program.

I planned to build a specific server for BSG system, to share games, test engines and help to connect user computers as your requests. However, at the moment I have trouble building a server at home since my home Internet connection is fast enough but not reliable enough (the common situation of Internet connection in Australia). Renting a good enough server is always too expensive for a freeware. I will wait for the next few months, in the hope that the Starlink network will come soon and help us to improve the Internet connection :D
https://banksiagui.com
A freeware chess GUI, based on opensource Banksia - the chess tournament manager

User avatar
phhnguyen
Posts: 694
Joined: Wed Apr 21, 2010 2:58 am
Location: Australia
Full name: Nguyen Hong Pham
Contact:

Re: Banksia GUI released

Post by phhnguyen » Thu May 21, 2020 8:49 am

zenpawn wrote:
Wed May 20, 2020 10:16 pm
It seems that Banksia does not recognize Winboard engines as being capable of playing chess960.
Thanks a lot for the feedback.

You are right. Actually even I have coded BSG to understand WB engine's chess variants, I did not test them with that chess variant since I was struggling to find them (Winboard engines supporting chess 960). Can you/someones suggest some of them? I prefer ones for macOS but Windows OK.
https://banksiagui.com
A freeware chess GUI, based on opensource Banksia - the chess tournament manager

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

Re: Banksia GUI released

Post by hgm » Thu May 21, 2020 9:02 am

Just connecting people and relaying messages between them is not a CPU-intensive task at all. But you do want a very reliable internet connection. I just rent a minimal Virtual Private System in a data center. This only costs me 4.83 Euro/month, plus another 7.50 Euro/year for registering the domain name (winboard.nl). And with a VPS you have absolute control over the software; I run an old Ubuntu Linux on it, with ltpd as HTML server, and run an ICS there.

I have also written some other servers for dedicated tasks, such as a very general turn-based server for games (used amongst others by the Jocly interface on my main website), and a chess-diagram-rendering engine:

Image

One of the things I had there was a general 'relay server', which could be used for people that really wanted to do peer-to-peer networking (e.g. connecting two WinBoard instances to play against each other). The problem with p2p is that one of the two peers has to 'play server', and would have to open ports in all kinds of firewalls (computer, router, modem...), which is way beyond the capability of the average user. But client connections can always be made without reconfiguring your networking software. So the relay server allows clients to connect through TCP/IP to some server port, and give a password. As long as they stay connected it remembers this password. If a second connection is made using the same password, the passwords are forgotten, and from then on anything that comes in through one is sent tout on the other. Like the peers would be directly connected with each other through TCP/IP. If one of the connections closes, the other one is closed too.

Ras
Posts: 1348
Joined: Tue Aug 30, 2016 6:19 pm
Full name: Rasmus Althoff
Contact:

Re: Banksia GUI released

Post by Ras » Thu May 21, 2020 9:03 am

hgm wrote:
Thu May 21, 2020 8:15 am
The only valid way to leave analyze mode is through the 'exit' command.
Which has a similar problem because the engine has to actively suppress that feature by announcing "analysis=0". Which many engines don't do. The only reliable way to figure that out is to try it and see whether it works.

And though your correction on "?" is true, the only way to reliably determine whether this works is still through trial & error feature detection.
Rasmus Althoff
https://www.ct800.net

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

Re: Banksia GUI released

Post by hgm » Thu May 21, 2020 9:32 am

Ras wrote:
Thu May 21, 2020 9:03 am
hgm wrote:
Thu May 21, 2020 8:15 am
The only valid way to leave analyze mode is through the 'exit' command.
Which has a similar problem because the engine has to actively suppress that feature by announcing "analysis=0". Which many engines don't do. The only reliable way to figure that out is to try it and see whether it works
The 'exit' command will in practice always work when the 'analyze' command works; testing it the way you suggest is as silly as testing whether the 'stop' command works in a UCI engine. Whether the 'analyze' command works doesn't require testing of the kind you propose; you would just have to send the command, and the engine will refuse it with an error message if it did not support it.
And though your correction on "?" is true, the only way to reliably determine whether this works is still through trial & error feature detection.
The question, however, is: why would you ever want to determine that? What are you going to do with that information, even if you managed to obtain it? It seems the best you can do is to gray out the 'Move now' menu item on the GUI, or perhaps not display it at all. Which will invariably lead to users blaming the GUI for it. "Your GUI is buggy, the move-now is greyed out while the engine is thinking!"

Much better to leave the item operational, and when the user operates it, and the engine doesn't respond in a reasonable time, throw up a popup that says "this engine seems to be stuck". Then people will know where the fault lies, and complain to the right developer.

Same with analysis. If a CECP v2 engine has not announced feature analyze=0 at startup, you can assume it supports analysis. Assuming by default that things will not work according to specs is just paranoia. And even if it is non-compliant, and refuses the 'analyze' command when it was really needed, this can show an error popup "This engine does not support analysis, even though it said it did". That leaves no doubt about the fact that it is an engine bug.

There is no limit to how crappy and non-compliant engines can be. Should the GUI test an engine for every conceivable malfunction when you first register it? I think the time this takes would just annoy the user.

zenpawn
Posts: 320
Joined: Sat Aug 06, 2016 6:31 pm
Location: United States

Re: Banksia GUI released

Post by zenpawn » Thu May 21, 2020 9:56 am

phhnguyen wrote:
Thu May 21, 2020 8:49 am
zenpawn wrote:
Wed May 20, 2020 10:16 pm
It seems that Banksia does not recognize Winboard engines as being capable of playing chess960.
Thanks a lot for the feedback.

You are right. Actually even I have coded BSG to understand WB engine's chess variants, I did not test them with that chess variant since I was struggling to find them (Winboard engines supporting chess 960). Can you/someones suggest some of them? I prefer ones for macOS but Windows OK.
Don't know of any macOS ones, but here are a few FRC Winboard engines:

ExChess https://sites.google.com/site/experimentalchessprogram/
Schooner https://sites.google.com/site/schoonerchess/home
SlowChess Blitz http://www.3dkingdoms.com/chess/slow.htm (both UCI and Winboard)
Erin Dame
Author of RookieMonster

User avatar
phhnguyen
Posts: 694
Joined: Wed Apr 21, 2010 2:58 am
Location: Australia
Full name: Nguyen Hong Pham
Contact:

Re: Banksia GUI released

Post by phhnguyen » Thu May 21, 2020 10:11 am

Ras wrote:
Wed May 20, 2020 11:06 pm
hgm wrote:
Wed May 20, 2020 7:08 pm
Weird mate scores is part of the nostalgy.
Nostalgy is about keeping only the good parts, not about always finding new pretexts why the GUI should annoy users. The whole CECP ecosystem has had no shortage of user annoyance, and a GUI working around that crap makes it at least somewhat bearable.

Next improvement suggestion:

Another hassle is that many CECP engines don't recognise "?" during search and thus are unsuited for analysis. It totally sucks to have to figure that out for each engine individually as part of the usual "what CECP stuff doesn't work this time" process. So along with working around the mate score problem, I'd suggest that the GUI gives some complicated position for analysis, or fixed movetime of maybe 20 seconds, and then tries to interrupt the search. If the engine doesn't react within one or two seconds, kill it and store that "analysis" should be blocked.
Thanks a lot for the suggestion!

BSG supports only CECP version 2 (not version 1). Thus I hope all CECP-version-2 engines can understand that command :)

Frankly speaking, I am a bit scared whenever fixing/improving the code for CECP. It looks simple but actually required me a few times as many as one for UCI. Finding the right engines for testing is another problem since I prefer not too old engines and for macOS :(
https://banksiagui.com
A freeware chess GUI, based on opensource Banksia - the chess tournament manager

Post Reply