BanksiaGUI has been developed by Nguyen Hong Pham (Phạm Hồng Nguyên), leaving in Sydney, Australia.

I can be reached by banksiagui at gmail dot com. You may use comment boxes here or somewhere on this site too.

48 thoughts on “About

  1. Here’s a proposed solution for Banksia Gui when users are playing engines over the network. Add a time bonus for each move played of 5 secs before the actual chess clock if the engine starts ticking. That is, as an example, engine A makes a move, it sends the move over to engine B which is connected in the network in another PC, engine B clock doesn’t start right away, engine B starts to ponder over the move and after 5secs engine B clock starts ticking. Time delay bonus should help to solve network lags. Of course this solution works only betwe82 Banksia GUI.

    1. At the moment BSG has “Add time” – given extra time to the side to move before ruling the games, somewhat is a kind of bonus period, and its main purpose is to solve the issue of network lagging. Could you try and give us some feedback? Thanks a lot.

  2. 50 move rule doesn’t apply or work in the BanksiaGUI.
    Engines continue to play beyond the 50 move rule. It seems that this isn’t implemented in the adjudication settings.

    1. Thanks a lot for the report. Unfortunately, I can’t reproduce the issue. Can you post one or some games you see that problem? Thanks again.

  3. Feature request: MANUAL ADJUDICATION.
    It would be great to have a feature to manually adjudicate a current engine game like in Chessbase Fritz GUI.
    Sometimes the PV is higher than 0.20 and the position is a dead draw, but the engines will keep playing until the 50 moves rule. However, sometimes one of the engines get to clever and extends the 50 moves and the games keeps going on and on until you get 200 moves or more before it is adjudicated as a Draw.
    This Manual Adjudication feature would help speed up the games played by engines by allowing the user to adjudicated in cases where no further progress can be made.

    1. Thanks a lot for the request. I am a bit confused about “manual”. Do you mean the users will adjudicate game by game manually or just set up parameters for adjudication? For setting up parameters, users can do by click on the button “setup” next to the line “Adjudication” when creating a tournament.

      1. Yes, user will be able to manually adjudicate the game. The rules for “adjudication” works, but it doesn’t take care in situations where the position is a dead draw, but one of the engines believe it is slightly better.
        A button to allow user to decide to adjudicate the game, like a win, draw or loss, that is , the user can decide the outcome of the current game instead of allowing the game to keep going. Thus, the game would officially be finished with a result and the next game can begin and the tournament can continue.

    1. Sorry, I just saw that you got already. Aniway, how can we change English to French in the GUI ? Thanks a lot, cheers !!

  4. Dear Nguyen,
    Thank you for the very cool GUI.
    the only annoying issue , I am facing that BSG fails to play the opening pgn in sequences or even to shuffle the opening lines when you lock a player to play always white or black in Gauntlet tournament .
    BSG simply keeps repeating the same opening over and over.
    Could you please fix this issue

  5. For some reason the PGN files of the games of each tournament are not compatible with Ordo. We Use Ordo to evaluate the strength of engines when testing lc0 and the output always says: ERROR: Input file contains no games. I’ve tried with different TC such as (nodes/move or time/move) to no avail.

    1. Thanks a lot for the report!
      I think Ordo is quite strictly to parse PGN files and easily gives up if there is any extra thing. In PGN files created by BSG, there is an extra tab character (code 09, noted as \t) between tag White, Black and their values (i.e, [White \t”Stockfish”]). It is allowed by PGN standard (I think the standard did not mention about extra white characters as tab one). Almost all software accepts that but Ordo.
      You may temporarily remove that character (use a text editor, search and replace) or wait for me for the next release. I will remove them anyway.

  6. at the end of each game, please add information like these, so that we can easily find out for what reason this game is over

    Draw by Adjudication => http://prntscr.com/qjsxj9
    —you can change this one like this “Draw by adjudication: BSG draw rule”—
    Draw by 3-fold repetition => http://prntscr.com/qjsprz
    Draw by adjudication: SyzygyTB => http://prntscr.com/qjsq6q
    Draw by fifty moves rule => http://prntscr.com/qjsqhi
    White wins by adjudication => http://prntscr.com/qjsqyq
    —you can change this one like this “White wins by adjudication: BSG resign rule”—
    Black wins by adjudication => http://prntscr.com/qjsqrh
    —you can change this one like this “Black wins by adjudication: BSG resign rule”—
    White wins by adjudication: SyzygyTB => http://prntscr.com/qjsssm
    Black wins by adjudication: SyzygyTB => http://prntscr.com/qjsrse

  7. I really appreciate the improvements.
    -Draw Adjudication was implemented VERY WELL
    -Different Time Controls (Multi Timers) for Tournament has been added (This is an amazing feature that is not available in all GUIs that I have ever used)

    Now there are some problems I found…
    1) Multi Timers don’t work well.

    As you can see here => http://prntscr.com/qi4ayl

    What I want is that Brainfish always plays with Time Control 200000 nodes for any side (white or black) and Stockfish always plays with Time Control 1 + 0.5 for any side (white or black).

    I set the Tournament like this…

    Game 1
    White: Brainfish play with TC 200000 nodes
    Black: Stockfish play with TC 1 + 0.5

    game 2
    White: Stockfish play with TC 1 + 0.5
    Black: Brainfish play with TC 200000 nodes

    But the Tournament give different results like this …

    Game 1
    White: Brainfish play with TC 200000 nodes
    Black: Stockfish play with TC 1 + 0.5

    game 2
    White: Stockfish play with TC 200000 nodes
    Black: Brainfish play with TC 1 + 0.5

    2) Starting Position can’t be loaded. In the previous version, Starting Positions could be loaded, now it can’t (http://prntscr.com/qi4dot)

    3) I do not find the analysis feature which you said was added

    4) still can’t open PGN File with many games, only PGN with one game can

    other problems if I find it, I will report it here


    1. Thanks a lot for your report
      1) It is a bug and will be fixed for the next release
      2) Oops, I am going to fix now. For the current version, can you use a Polyglot book instead?
      3) It is in menu->File->Analysis game. Thanks for the suggestion. I will add those buttons somewhere, perhaps, to toolbars but not in engine’s bar since it used for engine’s buttons, sometimes there are several ones
      4) That feature is still in my TODO list and will be implemented within a few weeks

    2. it seems like that “the Draw Adjudication” was not implemented, I was wrong before because I only saw data from one game

      this game (http://prntscr.com/qjsa9b) finally draw after 126 moves / 252 ply was played

      if you implement the Draw Adjudication, the game actually draw earlier, at move 86 Bc1… so save time

      if you doubt about the Draw Adjudiction which I suggested before, then please just add it in the Tournament as an “Optional option”

  8. -how to load starting positions in sequence (from the first to the last)?
    => https://prnt.sc/qfedj4
    I’ve tried many times with different parameters, but it’s always not sequential.

    -Users also can’t play with Time control (time/all moves + increment), this is only available in Tournaments.
    So we cant play Blitz 3m+2s or other Blitz Time Control

  9. A little thing was missed at the end of my comment …

    A game longer than 50 moves / 100 ply, and both engines have an evaluation between +/- 0.09 cp for 10 consecutive moves with no pawn moves or captures, then the game is definitely Draw, so it’s a waste of time if the game still continue. Therefore, including this feature is also very important.

  10. -This what i mean:
    Speed on Banksia => http://prntscr.com/qf1avt
    Speed on Cute Chess => https://prnt.sc/qf1a0q

    …In Cute Chess 1.8 mn/s at starting posisiton, but in Banksia only 1.5 mn/s, it’s equal to 16% decrease in performance.

    -I mean Tournament Results in PGN format.

    -A score of -500 cp for 5 consecutive move will definitely lose, so it’s a waste of time if the game still continue. Therefore it is very important to include this feature (but as an optional setting and not as a default, if user want to use this feature then it’s their own choice).

    -A game with more than 50 moves / 100 plies, and both engines have an evaluation [-9,9] cp for 10 consecutive moves, then the game is definitely Draw, so it’s a waste of time if the game still continue. Therefore, including this feature is also very important.


    1. Thanks for the info.
      – If you run only a match of two engines their speeds on any chess GUIs should be similar. There are some factors may affect their displaying speeds: a) they use different parameters such as cores, mem/hash b) timer is not guaranty to measure the differences for just a few games – you may need to run many more games to compare c) BSG and Cute chess may use different methods to measure speed. One easier method to compare speed, let engines be limited by depth or nodes then compare their spent time periods.
      – I don’t know how to store tournament results in PGN format. BSG just store game results (W/D/L) only. BSG can also write down tournament results in a text file too. If you can, please give me details on saving tour results into PGN.
      – BSG can adjudicate a game by Resign score. If you set it to 500 cp, BSG will set a side be lost the game if its scores under -500 cp for 3 consecutive moves (I will change it to 5 if you think it is safer).
      – Thanks for the idea about drawing scores. I will implement soon

      1. – Spent time periode to reach deepth 20 on BSG, Cute Chess 1.0.0 & Arena 3.5.1
        BSG => http://prntscr.com/qgamqj
        Cute Chess 1.0.0 => http://prntscr.com/qgangs
        Arena 3.5.1 => http://prntscr.com/qgaovu

        Engine: Brainfish 221119 64 POPCNT

        deepth: 20
        Nodes: 11338000
        time: 7 seconds
        speed: 11338000/7 = 1619Kn/s

        Cute Chess 1.0.0
        deepth: 20
        Nodes: 10267878
        time: 5.6 seconds
        speed: 10267878/5.6 = 1833Kn/s

        Arena 3.5.1
        deepth: 20
        Nodes: 9626743
        time: 4.964 seconds
        speed: 9626743/4.964 = 1939Kn/s

        …hopefully in the future it can be fixed

        – I already know how to get the tournament results saved in the PGN format (Maybe in the next release it can be implemented as a default setting), I made it like this in the Tournament Settings => http://prntscr.com/qgawek

        …and the results are like this:

        -glad to hear the BSG Team will implement this drawing score


        1. Thanks for the test and other info/suggestions/

          For the test, the nodes are still different. Please use only 1 core for testing and make sure hash size the same too. If you can, run that engine in a terminal/console and control it manually to compare speeds with other ones.

          1. instead of using Deepth, I choose to use Nodes because it seems more accurate, because the same Deepth can produce different nodes. In this test I used the same Nodes, the same Hash & the same Core for both GUIs.

            And here the results…

            BSG: http://prntscr.com/qgyry9
            Cute Chess: http://prntscr.com/qgytds

            As you can see, there is a 131 ms difference to reach the same number of Nodes.

            This means, if the number of Nodes that must be reached is more, then the Time Difference will definitely be more too.

            I’m not a programmer, so I don’t know what caused it, but I think something is wrong.

            Or maybe you can install Cute Chess 1.0.0 or Arena 3.5.1 and do the test yourself, so we can find out if this only happen on my computer or on your computer too.

            This is serious, because the impact is that engine performance can decrease and test results can be inaccurate.

          2. IMO, the difference is not much. If you still want to find the reason, please take care that the paras you set for the test are still different (I suspect hash size different). If they are matched, all engines’ printing out must be the same (except time period). In your images, clearly depths, pv strings… are different.

      2. -What did you said about the 3 consecutive moves in Resign Adjudication at BSG (as you can see here: http://prntscr.com/qgbi8o), actually it is only 2 consecutive moves (note that I set the resign score at -700 cp , not -500), because in “Resign Adjudication” we only count moves of the losing players, in contrast to “Draw Adjudication” where we count moves of both engines.

        For example, in this game (http://prntscr.com/qgbi8o) where white loses, then the moves that are counted sequentially are only white moves, and black is not counted, so we say -500 cp for 2 consecutive moves, not 3 consecutive moves.

        Now look at this => http://prntscr.com/qgbh16 … this is an example of Resign Adjudication with 5 consecutive moves in Cute Chess (note that I set the resign score to -500), you can’t say it as 10 consecutive moves.

        -About the Draw Adjudication I mean, see here => https://prnt.sc/qgbkww

        As you can see, the game draw when the evaluations of the two engines are [-9,9] cp for 10 consecutive moves with NO PAWN MOVES or CAPTURES.

        The details are…

        10 consecutive ply for white and 10 consecutive ply for black
        Total = 20 consecutive ply = 10 consecutive moves

        …Why did I suggest this Draw Adjudication? Because Chess.com uses it at CCC (https://www.chess.com/computer-chess-championship)… and this is very effective to avoid boring draw games of engines, and save time.

  11. -Please Use Bayeselo to generate ELO Diff, CCRL use Bayeselo.
    -Why is the CPU Speed in this GUI lower than other GUIs like Arena & Cute Chess?
    for example: Single core can running 1.9 mn/s at starting position in Cute Chess, but in Banksia only 1.5 mn/s at Starting Posisiton.
    -Where can I find the Tournament Results?
    -in the Adjudication section in Tournament, please add these features (Draw Adjudication and Tablebase Adjudication) like in Cute Chess => http://prntscr.com/qez4fw

    1. 1) We are struggling with the algorithms of Elo. Any change will take time
      2) Can you turn off all showing boards in tournaments then check again? As I guess, BSG allows showing more boards thus they may eat computing powers. In the next version, we allow to turn off animation which may help a bit
      3) File -> Windows -> Dock -> Tournament Result. It is a panel with few tabs, each tab is a table about results
      4) BSG can adjudicate by: a) Syzygy b) game length c) resign score. IMO, they are almost all popular methods. Do you want anything special?

  12. Please Add these feature bellow, so we can play tournament in different time control,

    For example:

    White: Stockfish Bullet
    Black: Stockfish Blitz
    White Time Control: 1m+1s
    Black Time Control: 3m+2s

    The purpose is, I want to know how is the difference in ELO Rating between Bullet vs Blitz, or beetwen Bullet vs Standard, or Blitz vs Standard.

    White Time Control: 1m+1s
    Black Time Control: deepth 20


    White Time Control: 3m+2s
    Black Time Control: 5000000 nodes

    Please add these feature in Tournament.


  13. Hello! I was wondering if you planned to add uneven time controls to the GUI? For example: SF vs Leela, SF gets 30+5 TC and Leela gets 60+5 TC. This would be very useful for fixed node testing without having to use a command line. Thanks! 🙂

  14. How do I run it with lc0 on a Mac OS X (Catalina)? It’s installed and runs but the help blurb from ./banksia –help shows only windows-related. Same for the json examples.

  15. Hello Nguyên,
    3) do you mean to display a move (two half moves) in a line? —-> YES
    It’s easiest to read.
    4)you may change notations (open Settings dialog and General tab —-> OK, i give a try.

    Thanks for your reply


  16. Hello Nguyên,

    I like your GUI but some things, IMHO, should be enhanced:

    1) The font of panel “MOVE” are too tiny, it’s difficult to read!
    2) Allow the panels’ background color to be customized
    3) Display the moves 1 for line. e.g. 1. e2e4 e6e5 it’s more clean and readable.
    2. d2d4 g8f6 etc…
    4) Allow choice between style e4 or e2e4

    As you can see it’s all about aesthetics but make the GUI more beautiful.

    Best regards from Spain

    1. Thank you a lot for suggestions. I have added them to my TODO list to check and work later.
      For clarifying:
      3) do you mean to display a move (two half moves) in a line?
      4) you may change notations (open Settings dialog and General tab)

Leave a Reply

Your email address will not be published.