Code Monkey home page Code Monkey logo

ogatak's Introduction

Screenshot

  • Simple analysis GUI for KataGo. See Releases for the latest version.
  • Stone and board graphics modified from Sabaki, with thanks.
  • Concept borrowed from Lizzie, with influence from KaTrain, CGoban, and LizGoban.
  • Original, independent codebase.

Upsides

  • Relatively simple once set up.
  • I personally like the aesthetics...
  • Has most normal Lizzie-ish features.
  • Fully-functional SGF editor.
  • Correctly handles many SGF files that trouble other GUIs, especially handicaps and mid-game board edits.
  • Can load NGF, GIB, and UGI files (albeit imperfectly).
  • No dependencies except Electron, quite easy to run from source, doesn't pull in a zillion npm modules.

Downsides

  • KataGo not included, setup takes at least a minute's effort.
  • Electron-based app, everyone hates these (they're big).

Setup

  • Download and unpack Ogatak, KataGo, and a KataGo weights file.
  • In Ogatak, select the menu item Setup --> Locate KataGo... (and locate katago.exe)
  • In Ogatak, select the menu item Setup --> Choose network... (and locate the weights file)

Performance tips

  • The setting to request per-move ownership info from KataGo (see Analysis menu) is rather demanding and you should turn it off if you experience any lag.
  • Alternatively, consider changing the engine report rate (see Setup menu) from the default 0.1 (which is the most intense) to something else.
  • Due to a complex interaction between KataGo's algorithm and KataGo's cache, the wide root noise setting can cause a reduction in perceived performance if you use the GUI in a certain way, especially if you commonly click through the top move. It may also affect whole-file analysis speeds.

About the analysis config file

  • KataGo requires an analysis config file. Such a file is provided with KataGo as analysis_example.cfg, and Ogatak will use this if it's present, unless you explicitly specify a different file. You might find that changing some settings therein leads to better (or worse) performance. Some have found these settings chosen by the KaTrain author to be a bit faster.

Translations

  • At the moment, it is possible to translate most of the menu items and some of the GUI text. See src/modules/translations.js for instructions.
  • Thanks to the following translators: ParmuzinAlexander, CGLemon, Bandysol.

Talk to me

ogatak's People

Contributors

cglemon avatar parmuzinalexander avatar rinick avatar rooklift avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ogatak's Issues

[Feature Request] Toolbar

it's not convenient to use menu for everything

I think user might need these features in the toolbar, maybe under the Thumbnail area?

  • move forward
  • move backward
  • move forward x 10
  • move backward x 10
  • move to the start
  • move to the end
  • pass
  • Normal
  • Add White
  • Add Black
  • Add ABC
  • Add 123
  • Analyze
  • Halt

No `batch analyze` in Ogatak?

I hear it that the KataGo's analyze sub-command

is designed to accept many different positions all at the same time and search them simultaneously.

While the gtp sub-command

is designed to have you declare a board size in advance and then play an entire game from there, searching only one position at a time. Therefore you can invest a slightly longer startup time in return for improved performance later.

So, if no batch analyze, gtp is better than analyze, right?

Reference

What's the core details of "Lizzie-ish"?

The issue should be asked in Lizzie repo, but it is not in developing by its author since last year.
Half Go GUIs bulit on LeelZero or KataGo that can be found at Github are lizzie-ish. Lizzie-ish Go GUIs have their common features, e.g. real time analyzing(ponder always on?). But what's the core details of a lizzie-ish Go GUI?
For example,

  • Sabaki uses GTP, can load any GTP engine
  • KaTrain uses KataGo's JSON, can only run KataGo.

Here, GTP/KataGoJSON are the core details that make KaTrain and Sabaki very different.

What's the core details of "lizzie-ish"? When will you call a Go GUI lizzie-ish? What makes differences?
I want to ask this issue because my devices can not run a lizzie-ish Go GUI at a skin-friendly temperature.

Tabs

Tabs would be awesome to have - perhaps create a new one by middle-clicking on a move. It should fit into our current system relatively easily, switching tab will just require a call to set_node() like any other change of position.

Really a tabs list is just a list of bookmarked nodes that one can click on to go to. We also need to keep track of which tab we're in, so that the particular tab we're in gets its "bookmark" updated every time it changes.

Maybe show icons of their boards for all background tabs, while the current one just gets a > sign or something.

[Feature Request] Mac version

Hi. I've seen videos on this GUI and I liked the functionality of showing the win rate number on the stones. However I'm mainly working on Mac. Would you mind to have a Mac build?

I see that this is build with electron, so I guess it should be easy. If any help is needed, I can probably make a PR.
Thanks.

get() return value and truthiness

Just for code clarity purposes, deal with the distinction between get() returning a false-ish value which is "" and a false-ish value which is undefined.

  • Make a new function or two, e.g. node.has_key()
  • Look through all .get() and all .props

[Feature Request] Disable all analysis information.

Ogatak is a graceful analysis tool but there are two drawbacks for playing. One it that we can not toggle between analysis and playing modes quickly. Another is that we can not disable all analysis information.

If a player wants play a new game, my expectation is ...

  1. Play a game with KataGo without any analysis information. Ogatak can analyze the game for both sides in the background.
  2. After finish the game, show the current analysis result.
  3. Switch to analysis mode.

So Is possible to design a playing mode and switch between other modes by toggle button / list? Thanks!

Comments from Lightvector

  • There seems to be no easy way to provide an arbitrary command to run. My normal setup is to run KataGo remotely, since my remote server has vastly better hardware than my laptop. I give any GUI software a script that sshes to the remote and runs KataGo there, which most GUIs can't tell the difference between anyways you're still just interacting via standard input and output. But ogatak requires specifying all the different parts of the command (exe, config, weights), preventing this.

  • When you specify the wrong config or otherwise some invalid setup, the error message is extremely unhelpful. Even going into the dev console is worthless:

VM160:1 Uncaught SyntaxError: Unexpected token U in JSON at position 0
    at JSON.parse (<anonymous>)
 ... blah blah blah...
    at Socket.emit (events.js:223)
    at addChunk (_stream_readable.js:309)
    at readableAddChunk (_stream_readable.js:290)
    at Socket.Readable.push (_stream_readable.js:224)
  • It should log what it failed to parse. Maybe even display it directly to the user instead of requiring dev console. In this case it was an error message produced by Katago on exe startup that would have immediately revealed the problem.

  • When I first started analyzing stuff, nothing was displayed. It was not obvious that "Candidate moves" was the correct box in the menu to select, so I spent a while toggling options related to the display of moves (policy/visits/colors) all the while it continued to display nothing. [comment: it already says "hidden" at top right]

  • As inbae mentioned, there doesn't seem to be a way to view visit+winrate+score at the same time. Seeing all of them together is really, really, really important for moderately-experienced analysis users.

  • This program has the same major flaw that Lizzie has regarding tree navigation - when you backtrack up the tree, it doesn't remember what variation you were in! So if you go back up a few moves to remind yourself of the moves that got you to this position, if you passed through a branch, when you go down again, it will pick the first branch instead of the one you were in.

  • CGoban's behavior would be much nicer here - every branch point in the tree should remember the last branch the user chose when descending through it, and pick that by default when descending again, unless explicitly the user changes their choice. The variation tree should highlight or color differently the current current entire path that would be followed if the user repeatedly goes forward.

  • More keys for faster tree navigation would be nice. Page up and page down to go 10 moves at a time, for example. Maybe a way to laterally jump variations like in Lizzie without having to go up to the branch and then back down.

  • More coloring options for contrasting moves would be nice - https://colorcet.com/ might be a good place, to grab some percetually uniform color or brightness maps.

  • The program on Windows does not appear to fully honor the size the user sized the window to on startup. If you make the window a certain size, then repeatedly close and reopen the program, every time, for me at least, the window almost honors it, but it grows a little bit, eventually becoming the size of the whole screen. This is a bit annoying, since every time I reopen it I have to manually resize it back down and put the window where I want it again relative to my other stuff.

Ideas / todo / etc

Stuff might be edited in and out of this comment as we go... note that these are ideas and suggestions, not necessarily things I actually want or will implement...

  • Deltas graph (not sure if want)
  • Allow the 2 or 3 numbers on the board to be anything (maybe split into 3 config vars)
  • Easier reordering of subtrees, e.g. cut and paste
  • Search restrictions, i.e. via allowMoves or avoidMoves
  • Distinguish between next move markers (primary and variation, when 2+ are present)
  • Timers / timing

feature suggestion: branch compare

A natural and usual using case is that a player want to compare two or three deep Go game branches started from current position, rather than unstoppable forward and backward.

  • One solution is to copy sgf file and run two Go GUIs to load them. But a bit unpleasant.
  • Another solution is to use LizGoban to copy and switch games at sidebar. But as you may know, LiGoban's sgf file format is horrible and different from Sabaki/Ogatak, it's Lizzie-ish format.

What's the view of Ogatak?

[Feature Request] Control analyze behavior by hand

I have installed Ogatak on ubuntu.
Very glad to see the Ogatak becomes more and more powerful. But it seems that Ogatak can not add a vertex to analyze or limit search by vertex yet (not only analyze or don't analyze somewhere AI wants, but also somewhere player wants).

GTP mode broken

Because of the new definition of valid analysis in 1.8.7.

Please add explicit setup instructions

I've downloaded KataGo and Okatak, but despite the reference to "taking a minute to set up", I have been unable to connect the board interface to the engine. I assume it's user error.

I've confirmed that the engine works at least, using qGo and a gtp configuration.

Please add explicit setup instructions.

add a Timer

Would Ogatak add a timer like KaTrain or q5Go in the long long future?

25x25 soon ?

Love how simple, easy, and modern this gui is! Kinda a small disappointment that it doesnt have 25x25 or 21x21 yet. Are you planning to add them in soon?

Wrong Ownership Color

image
In the picture, a white stone named number 3 has black color ownership! Is it a mistake?

Setting times on PV display?

As far as I can tell, currently there is no way of setting the "speed" of the PV function, in the sense that that the pace of the move played out when you hover over the position can be changed. In Katrain, the similar function plays out the moves much slower, making it far easier to get a sense of the flow. In Ogatak, the move sequences are virtually immediate, making it much harder to follow. In addition, it often fluctuates (when the engine changes its mind about the best sequence, I presume), making it even harder.

My suggestion, if feasible, is to allow the user to select the 'move pace' of the PV function, so that it plays out the entire sequence (the length of which I can already select, thanks for that) on that pace, and only then starts over if the engine thinks there is an even better one.

Thanks for a great program - I really prefer the look of this compared to e.g. Katrain.

Replace +caps with cap?

In the infobox. This would make alignment easier.

Then adjust the Russian translation which also has the + character.

v1.9.3-Linux can not startup, GPU Goodbye

OS: Debian 12
Terminal: Konsole 22.12.3

# after download, unzip and chmod +x ...
./ogatak 
[31073:1225/131619.063761:FATAL:gpu_data_manager_impl_private.cc(439)] GPU process isn't usable. Goodbye.

How to run it?

Sorry, this probably looks like a really stupid question. But you see, I am not a JS person, or a Web person. I am just desperate to find a SGF editor I can use on a GNU/Linux system. So how do I actually start this application? Do I need a browser? Do I need to be online? What file to open?

Maybe there is a bug here: this could be mentioned in README.md ?

--
Ian

Imported SGF has the first move numbered as zero

When importing an SGF (specifically I tried with ones exported from OGS), the first move shows up as number 0.

On a new empty board, however, the empty board is move 0, and the first move is move 1.

Loving Ogatak so far, keep up the good work!

Root noise and ownership discrepancies

More of a note to self than anything else...

Discrepancy between moveinfos[0].ownership and then root ownership once the move is actually played is probably caused by wide root noise not being 0.

Problems when Windows scale is not 100%

In that case the reported window.innerWidth and window.innerHeight aren't the sizes we want, and saving them causes the window to grow drastically each restart (this is separate from the possible issue of tiny growth each restart).

But how do we get the sizes we want, i.e. the ones displayed at the top right when resizing if the dev console is open?

Monitor in Portrait Position

I use Ogatak 1.9.0_windows in Windows 11 Pro 64b. My monitor has the resolution 1024 x 1280 in portrait position.

Ogatak does not show the window and its contents correctly when the window is maximised or manually enlarged to the monitor boundaries.

Apparently, Ogatak makes the mistake to assume the monitor in landscape position with the resolution 1280 x 1024. Accordingly, the right part of the window and board are truncated in the displayed view. Ogatak needs to check whether the monitor is in portrait or landscape position.

Ideographic Space for Chinese infoboxes

Hello @CGLemon and @Bandysol

As of 2.0.0, Ogatak can display both Traditional and Simplified Chinese in the infobox. Clearly the layout is kind of messed up, but the first thing I want to fix is this: when you mouseover a move, the word used switches:

  • 最佳手 --> 本手

As a cheap hack to maintain the layout, I have gone ahead and added a U+3000 character (ideographic space) to 本手 (making it now " 本手" to maintain its width at 3 (so nothing changes in the layout as the text switches). Does that seem reasonable?

It fixes the issue on my machine at least, but I presumably don't have the same fonts as you both. As long as it displays properly for you I'm happy.

Now that I think about it, this could also fix some display issues I get in the SGF info screen...

Also - @CGLemon - the Simplified translation uses 黑 and 白 for colours in the infobox - can I do the same with yours? Is it the exact same characters?

Any ideas about the SGF format of kifu analyze data?

The GNUGo, Pachi, SAI, LZ, KG, Sabaki, KaTrain, Lizzie, q5Go, LizGoban, Ogatak, etc are good at most cases, but the format of analyze data has no standard, every bot every gui has their format, extreme example: KaTrain save the analyze data but not load. If there is a standard, we could exchange not only the sgf's game tree and mark-up, but also the analyze data.
I find it that LizGoban has the same format of Lizzie and Ogatak has the same format of Sabaki, and Ogatak deal with many other format gib, ugi, etc. It looks like handling kifu formats' issues is a key feature of Ogatak. So, do you have any ideas about analyze data standardizing?

Performance better without GUI Hardware Acceleration?

Recently performance (of KataGo) has become better (for me) when Ogatak is configured not to use hardware acceleration - I wish I knew the exact reason, as this didn't used to be so. Maybe some Windows update?

If anyone is or isn't experiencing the same, feel free to say "me too" or "not me" in the comments...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.