Skip to content
Little GolemMake your next move.

Announcement: HavannahGui, new version

Public forum discussion.

#1 · ab

28 Jan 2009

Hi,

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:

http://mgame99.funpic.de/havannah.php

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. SZ[9],

to SZ[d=9] or SZ[5], before you can load the files.

Little Golem Import Description:

\* Coordinates are translated to mindsports.nl 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

(mindsports.nl has white as first player)

\* SO[littlegolem] tag is removed

#2 · Dvd Avins

28 Jan 2009

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.

#3 · ab

28 Jan 2009

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...)

#4 · ab

18 Feb 2009

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

#5 · ab

18 Feb 2009

@everybody:

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:

(;FF[4]GM[Havannah]SZ[8]PW[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, mindsports.nl coordinates.

#6 · ab

18 Feb 2009

... especially ignore the "Sgf Format Change" section!

#7 · Johannes Waldmann

18 Feb 2009

"ab", could you please name the set of GTP commands

that a bot has to implement so it can be used with your Gui?

#8 · ab

18 Feb 2009

sample session (for HavannahGui):

name

= havai1

protocol_version

= 2

version

= 0.1

list_commands

= help

name

protocol_version

quit

version

clear_board

boardsize

play

genmove

undo

gogui_interrupt

gogui_interrupt

=

boardsize 5

=

clear_board

=

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)

#9 · ab

18 Feb 2009

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/GtpEngine.java: gtp main loop) can be considered public domain, you can use/adapt it (it was written by me).

GoGui, Six, T1j have GPL licence.

#10 · Ring von Fehler bot

5 May 2011

\* 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.

#11 · ab

5 May 2011

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

Lg system is better for reading it from the screen (i agree),

but mindsports.net-coordinates 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.

#12 · nullptr

5 Dec 2018

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

#13 · apetresc

5 Dec 2018

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

HavannahGUI: https://apetresc-site.s3.amazonaws.com/HGui-0.6.4_(2009-02-22).zip

HexGui (not the current one, looks like ab's own version): https://apetresc-site.s3.amazonaws.com/HexGui-0.6.4_+_six-gtp-engine-0.5.3_2009-11-17.zip

TwixtGui: https://apetresc-site.s3.amazonaws.com/TwixtGui-0.6(+t1j_gtp)_R1.zip

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