Skip to content
Little GolemMake your next move.

Six for Windows (with HexGui)

Public forum discussion.

#1 · ab

7 Jan 2008

Hi, i got "Six" working on windows, together with HexGui (in java):

You can download it from:

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

(first link on page)

You need to "attach" six_gtp_engine.exe to play against it.

Tell me if anything is not working ok ...

#2 · halladba

8 Jan 2008

Hello !

It works on my computer! It's great. By the way I use linux too now, but I guess many many people may benefit from it.

Thanks a lot.

#3 · Ruben Berenguel

8 Jan 2008

I am one of the benefitted, as I said in "Six is pretty strong". Really big "THANKS!" and again, "THANKS A LOT!!" ab!

#4 · David Milne

10 Jan 2008

When I click on your link I get invited to play poker. I do not see anything about hex :-(

#5 · David J Bush

10 Jan 2008

The link works fine for me. Many thanks to ab for all your hard work!

#8 · tigas3000

10 Jan 2008

I make the download but I can't play all the functions...

(What I have to do with the zip folders? I put everything in just one folder??)

#9 · ab

10 Jan 2008

@David Milne: i just tested, no idea why you get a "403"

(maybe you should try again later)

@tigas: what do you mean with "I can't play all the functions"?

\* put HexGui.jar and six_gtp_engine.exe in one directory

\* double-click on HexGui.jar (or use "java -jar HexGui.jar")

(you do not need the 2 zip's, that is just the source)

While the computer makes a move (which can take a while in expert level),

you can't access all the functions.

#10 · ab

10 Jan 2008

and to play against "Six":

\* File menu / attach / "six_gtp_engine.exe --level=0"

\* F5 to make a computer move, or

\* Game menu / Computer plays / "Black" or "White" or "Both"

#11 · dushoff

11 Jan 2008

Thanks so much to people who spent their effort making this available! Is there any documentation about the engine? In particular, what levels are available? When I type ab's command, am I getting the lowest level? How do I change it?

Thanks.

#12 · ab

11 Jan 2008

--level=0..3 is possible (0 is beginner ... 3 is expert)

but you can find/change that also in file menu

for size 4..15 is possible

#13 · javerberg

11 Jan 2008

Ab, great work!! Can you tell us how you done it? Looks like you mix java and c, and last time I tried that (java 1.2) I used CORBA. Was a bit tricky.

Did you familar yourself with the inner workings of the engine? I would love an infinity level that always gives the correct status (win/loss) of any given position, assuming you wait long enough.

#14 · MarleysGhost

12 Jan 2008

javerberg, I looked a little at the source because I was curious about that, too. The main Java program, called HGui, is started from the command line (or double-clicking on a .jar file). HGui uses java.lang.Runtime.exec to start the binary Six program (which could have been written in any language) in a separate process, then communicates with it via the binary's standard input and standard output, which HGui gets from Process.getOutputStream and .getInputStream.

Although the name "six_gtp_engine.exe" looks Windows-specific, the method used should work fine on Unix when provided with a Six binary that uses the same standard input/output command protocol.

I have not yet looked at the C++ source.

#15 · ab

12 Jan 2008

yes, exactly, and for Go this protocol which works through stdin/stdout is called "Go Text Protocol".

You could probably even run HexGui on linux etc., when recompiling the engine.

@javerberg:

About the engine itself i can't tell you too much; i looked at it, but i don't understand the details ...

#16 · javerberg

13 Jan 2008

Thanks for the info. Sounds simpler than CORBA. :)

@ab:

Would be fun to try out how the level settings works, but i don't know how to compile the code. Could not find any makefile. Can you please give some beginner instructions?

#17 · tigas3000

13 Jan 2008

Thanks. Now I can play against six.

#18 · ab

13 Jan 2008

@javerberg:

i give you a hint (if you have not found out yet)

-> look for files which do not end with .cpp or .h .... :)

(alternatively you can use your favourite ide to compile everything)

#19 · Ruben Berenguel

13 Jan 2008

ab just a question... I tried to open an hsgf from this site, but it couldn't :( I thought I could use hexgui as just an analyzer (without six, not to spoil the fun of the games), but it signaled an error. Have you tried that? If not, do you use some hex-sgf viewer? (or know of some, anyone?)

By the way, as I said before, thanks and great work :)

#20 · ab

13 Jan 2008

the file format of little golem is a bit different:

1) B[ac] is used instead of Ba3

2) B[ac|draw] etc. is used sometimes

3) W is first player instead of B => you'd have to exchange both colors

hmm, i don't play hex at little golem, and especially 3) is a problem

i can consider 1) and 2) for the next version ...

now, stop thanking me everyone, it's enough :)

#21 · Art Duval

14 Jan 2008

Ruben: I use jhex as a viewer. There's another thread in the Hex forum (with the title "JHEX") with some discussion of how to convert LG games to jhex. It was kind of a patched together solution, but, in practice, can take me less than a minute to load a single game. Swaps were hard to do automatically, though. This was adapted from something Marius wrote in Excel that may work better for him. I will bump that thread to make it easier to see.

#22 · Ruben Berenguel

14 Jan 2008

Thanks Art (and Marleys there also), I'm looking at it now

#23 · David J Bush

14 Jan 2008

With all the great programming talent here, you might be interested in Alan Hensel's Ruby script for downloading LG Twixt games into Jtwixt format. Jtwixt and Jhex were written by the same author, and the binary file format might be similar. Maybe Alan's script could be modified to make the LG->Jhex transition easier.

#24 · Iain

19 Feb 2008

This is great! Isn't open-source wonderful?

This is much slower on my dual core Windows work box, compared to my slow home Linux PC. Is there a way to speed it up?

#26 · ab

19 Feb 2008

Are you using the same levels? If yes, by how much % is it slower? (for example expert move in same position)

HexGui is a bit slow on navigating moves (with attached engine), i know this, it can also be made faster and i will upload a new version, if this is important for anyone ...

#27 · Ruben Berenguel

19 Feb 2008

It is quite slow, at least for myself. But I don't know if the Linux version is faster (I'm so used to IgoWin that I think all computer board games are fast). Good work, again :)

#28 · Iain

20 Feb 2008

My Linux machine has a P4 2.4 GHz. On the Linux version, I set the difficulty level to Expert. I started a game and clicked A3. It took 16 seconds for Six to reply at F6.

My Windows machine has an Intel Dual Core - T2500 @ 2.00GHz. On the Windows port, I set the attach line to "six_gtp_engine.exe --level=3 --allow-swap=1 --allow-resign=1". I started a game and clicked A3. It took 87 seconds for Six to reply at F6.

I would love a faster version.

#29 · ypercube

20 Feb 2008

Does it use only one of the two cores? Can you check with task manager during the 87 seconds?

It would still be much slower though.

#30 · Iain

20 Feb 2008

It was only using one core.

#31 · javerberg

20 Feb 2008

Would be interesting to compile the windows version with ICC. Unfortunately I don't have the know-how. Havn't worked with c/c++ for many years.

#32 · ab

21 Feb 2008

I assume boardsize is 11 (for size 10 it would play e6).

Second, it is correct, only one core can be used.

16 sec and 87 sec is indeed a huge difference; turning gcc optimization on (not done currently)

could help a few %, but i doubt this much.

No idea where the rest comes from.

(here it takes ~125 sec on windows on an Athlon 2300+, so your 2nd number seems about correct)

You can also notice, that

a) "Six" thinks very long for the *first* moves, later it gets better

b) larger board sizes also take longer (>11)

c) here, beginner level thinking times are about acceptable (higher levels for analyzing certain positions)

From a) follows, an opening book would help (on linux *and* windows), but i don't have one ...

(would need one for each board size, >=7)

#33 · ab

21 Feb 2008

ok, i tried with optimization turned on:

no optimization: 122 sec

with -march=athlon -O2: 48 sec

with -march=athlon -O3: 50 sec

#34 · Iain

21 Feb 2008

Those optimisations sound well worth the effort. Can you make them work for Intels too?

#36 · Iain

22 Feb 2008

I did the same Expert level, 11x11 board test on my Windows machine and got 34 secs. That's a lot faster than 87 seconds.

Thank you!

#37 · halladba

9 Jun 2008

Hello,

I fear there might be a bug on HexGui, even though it is not a problem for playing. It looks like white winning paths are detected, but black are not. With Six that does recognize ended positions it does not matter.

If resign is not allowed and black wins the game, it is possible to enter some GTP failure.

If anybody does have the same problem, please tell me. I cannot fix it as I can't understand java code.

But once more thanks ab ;-)

#38 · Kevin O'Gorman

2 Aug 2008

ab, have you posted the source code somewhere?

I had a command-line version of six back at the 0.3.4 release, but haven't been able to make it work with later releases. I'd love to have 0.5.* working that way, but I'd need to port it back to Linux. So I need source code.

#39 · Kevin O'Gorman

2 Aug 2008

The file no longer exists on datafile. They say they do that for no downloads or failure to comply with rules. What's up with that? If it's good, I can make it available, and I got no rules except the ones I make up.

#40 · ab

2 Aug 2008

see the first message for download (source etc., all included)

The optimized (-O2) file from datafilehost (Feb21,2008) is included there too.

#41 · Kevin O'Gorman

3 Aug 2008

Thanks. This is going to save me a bunch of time this summer, and I may even get my hex research going again.

#42 · ab

7 Aug 2008

\*\*\* update ***

HexGui (second version):

\* i fixed an annoying bug, which made it very slow to navigate moves with attached engine,

it is now a lot better!

+ Board now has coordinates drawn

+ little golem games can be loaded (most?)

\* some smaller improvements/bugfixes (win detection correct, ...)

#43 · ab

7 Aug 2008

six_gtp_engine.exe:

I made a lot of experiments with different compilers to get similar to linux speed.

Problem is, cygwin gcc (3.4.4) is quite old, and newer gcc versions are hard to get

on windows, except mingw released some mingw gcc 4.x.x experimental packages.

OLD:

cygwin (not optimized): ~120 sec

cygwin -O2: 48-50 sec

NEW:

mingw gcc 4.x.x -O3: 33 sec

mingw gcc 4.x.x -O3 (OLYMPIC/VSIZE=4): 22 sec (up to size 11)

linux speed: ~20-22 sec (?)

A second improvement was possible, by using a hidden compile-time option of the engine,

which specifies "Carriers" to be only 4*32=128 bit large (instead of 8*32=256 bit),

which apparently was intended as a speed improvement.

It really seems to be around 30-50% faster, but the disadvantage is, only up to size

11 is possible then (11*11=121 < 128).

You can try both versions (they are even half-automatically switched by HexGui).

If you notice that playing strength decreased or it plays very strange/bad moves,

please report. I hope it is ok, though.

#44 · ab

18 Mar 2009

\*\*\* update 2009-03-18 ***

HexGui.jar:

"-2" gtp option (for attaching two engines) was added

six_gtp_engine.exe:

finally, the feature to interrupt the thinking of the engine is added!

(just click interrupt button in toolbar, during six_gtp_engine is thinking)

it was necessary, because Six can sometimes think a long time (especially in higher levels) ...

(so you need not always "kill" the engine)

[download link in first message]

#45 · javerberg

3 Oct 2009

Thank you, works great!

I have one feature request and one question:

Would it be possible to add the romb style board layout? Nothing wrong with the diamond layout, but I grown used to the romb layout.

I could not find any documentation on the interface between the HexGui and Six. Is there any such documentation available?

#46 · ab

4 Oct 2009

> Would it be possible to add the romb style board layout?

just send me the board drawing code (it can use Polygons or not)

- i can integrate it then into HexGui ..

> documentation on the interface between the HexGui and Six. Is there any such documentation available?

the used protocol is a subset of Go Text Protocol (gtp), adapted for Hex (only coordinates are different),

see here: http://www.littlegolem.net/jsp/forum/topic2.jsp?forum=50&topic=314

#47 · javerberg

13 Oct 2009

Thanks! I will try to write the board drawing code, but it may take a pair of weeks before I get the time.

#49 · ab

6 Jan 2010

works for me right now, but i sent you a message..

#50 · David Milne

6 Jan 2010

This is a continuing problem. Some people may have no problems with accessing this site, but I have only managed to successfully access it a couple of times and I eventually managed to download the program. But I just tried again now and I did not succeed. The site is a very bad internet citizen. Other software highjacks your browser and get you usually get directed to a sexy singles site. There is also a roll over inviting your to sign up at the fun pics site and also often a message that the page your actually requested is unavailable or does not exist. So "Works for me" only tells some of the story :-(