Announcement: HavannahGui, new version Hex, Havannah

14 replies. Last post: 2018-12-05

Reply to this topic Return to forum

Announcement: HavannahGui, new version
  • ab at 2009-01-28


    Here is a new version of Havannah Gui, which now has the following (new) features:

    * load little golem .sgf games
    * load/save .sgf trees
    * attach up to two Gtp Programs (engines), at the same time, to let them play against each other
    * sgf format slightly modified
    * many other changes since the last public release

    Download here:

    Gtp Notes:

    The command line option “-2” activates the feature “attach a 2nd Gtp Program”.
    While it is inactive you can attach at most one Gtp Program (from File Menu).
    If 2 Programs are attached, the 2nd Gtp plays “black”, the first Gtp plays “white”.

    Gtp Engine in java: see source code of T1j in TwixtGui (or GtpDummy is an example)
    Gtp Engine in c++: see source code of six_gtp_engine(main.cpp) in HexGui

    Sgf Format Change:

    Sgf format is slightly changed: radius instead of diameter is used for size
    If you still have old .sgf files, you might have to change e.g. SZ9,
    to SZ[d=9] or SZ5, before you can load the files.

    Little Golem Import Description:

    * Coordinates are translated to coordinates on import
    (because Lg introduced its own, incompatible coordinate system)
    * Player colors (+player names, ratings) are inverted on import, so white is the first player
    ( has white as first player)
    * SO[littlegolem] tag is removed

  • Dvd Avins at 2009-01-28

    I don’t know what exactly SO stands for, but I think retaining the information that the game was played at Little Golem would be a good idea. Perhaps that should be concatenated into the tournament tag.

  • ab at 2009-01-28

    SO is source tag; it is used for detection of games in lg format. (i will find a solution to preserve the information, move it to root comment etc...)

  • ab at 2009-02-18

    @Dvd Avins: SO information is moved to the root comment [it was only a 3-line change]

  • ab at 2009-02-18

    Sorry for being so confusing with the sgf remarks:

    if you just want to use it: just open any sgf as normal and it should be ok

    The HavannahGui sgf format is and will stay in this format:

    (;FF4GM[Havannah]SZ8PW[player 1]PB[player 2];W[a1];B[d5];W[d1];B[c2];W[g4];B[e3];W[f3]C[a comment ...];B[resign])

    a1 at bottom, coordinates.

  • ab at 2009-02-18

    ... especially ignore the “Sgf Format Change” section!

  • Johannes Waldmann at 2009-02-18

    “ab”, could you please name the set of GTP commands
    that a bot has to implement so it can be used with your Gui?

  • ab at 2009-02-18

    sample session (for HavannahGui):

    = havai1

    = 2

    = 0.1

    = help


    boardsize 5


    play white f3

    play black g4

    ... (sets up the board position)

    genmove white
    = a1

    ... and “undo”, i.e. the engine should remember the sequence of play / genmove commands.

    (“gogui_interrupt” is to indicate genmove interruption capability)

  • ab at 2009-02-18

    How to implement interrupting of moves in the engine:
    * implement “gogui_interrupt” pseudo command
    * GoGui will send “#interrupt” to stdout during a “genmove”. The engine can then interrupt its thinking process on the next occasion and return the current best move like normal, eg “= resign” or “? error: no good move found yet”

    The code in HexGui/six_gtp_engine (main.cpp, the gtp main loop) and TwixtGui (T1j/ gtp main loop) can be considered public domain, you can use/adapt it (it was written by me).

    GoGui, Six, T1j have GPL licence.

  • Ring von Fehler bot at 2011-05-05
    • what is the coordinate system used in HGui? Is it still another version ...
      We already have the LG system for displaying moves (with the bent axis),
      and the LG system for submitting moves (where the center is always “oo”).

      * is the protocol indeed as given above
      (and specified here)?
      It seems to me that HGui expects the commands boardsize, clear_board
      return the boardsize, and play returns the move that was played.

      Well I could probably figure this out by trial and error,
      or looking at the source (which does appear a bit messy),
      and I probably will, but it might be good to have it documented here.

  • ab at 2011-05-05

    coordinate system has not changed, i used the one from (white begins), which was before littlegolem added the game.

    Lg system is better for reading it from the screen (i agree),
    but has an advantage too: they match the internal array coordinates (2d array).

    2) It is exactly the gtp protocol version 2 (which all Go engines use too), just genmove and play commands use havannah coordinates. (white must begin the game).

    You must implement at least the commands given above.

    Implementation is very simple:

    1) read one line from stdin (this is the command)
    2) write the answer to stdout (multiple lines, followed by two newlines)
    “= bla\n\n” means success
    “? bla\n\n” means error

    (my implementation was not more than 50 lines in c++ or java)
    also, you must implement the “undo” command, so play/genmove/undo behave like a stack of moves.

  • nullptr at 2018-12-05

    where can I find havannah gui. The link above does not work !!

  • apetresc at 2018-12-05

    All of ab’s old GoGui variants were taken offline long ago, but it seems has saved them! I’ve re-uploaded them to my own host so they can be downloaded again:


    HexGui (not the current one, looks like ab’s own version):


    Enjoy :) And thank you ab for making these all those years ago!

  • apetresc at 2018-12-05

    Er whoops those bottom two links are bad, here are the fixed ones:

Return to forum

Reply to this topic

Include game board: [game;id:123456] or [game;id:123456;move:20] or [game;id:123456;move:20;title:some text]