Hello everyone, let me introduce the application I’ve developed.
You can play this app in a web browser on desktop or mobile: https://maksimkorzh.github.io/go/
Or install it as android app on your smartphone (probably on IPhone as well, since PWA allows that), here’s video instruction and app demo:
What a great app! I love its simplicity, just open, play, two difficulties, and a score estimate. All you need. I was looking for something like this.
I only have one suggestion. I find the white on white difficult to see, so I’d like a different background color or a different color for the white stones.
Thank you for your kind words, Johnnie, I need to say I spent a lot of time thinking about styling
and after trying different color schemes/styles it was always the same - simplicity was completely loosing its charm. But still, the code is open source and if someone is willing to add custom styles or change the default style I can assist on that. This piece of software might be very exciting to tinker with so maybe someone would fork it and provides some alternative visual view.
Thank you, Benjito, I was thinking of aesthetics quite a lot, on OGS I always set black & white theme with no textures. I was trying to provide the straight forward program flow with a matching visual design. Regarding KataGo running in browser - this is not entirely true. KataGo engine (if simplified) consists of two major parts - a neural net and a Monte Carlo Tree Search algorithm driven by net’s policy head which essentially means that from possible net outputs it tries to play variations out to check if the response fails tactically. In my implementation I simply converted tensrorflow network to tensorflow JS and query a bare net from the web browser by providing inputs to the network, i.e. board position, move history and ko square, and interpreting outputs as best policy move and score lead. There is no search algorithm involved which allows user to win tactically, e.g. by survivng a dead group or killing a group that should never die. It’s just a KataGo network and it’s quite an old one, one of first available, only 6 blocks (modern have 20+ blocks) of around 4mb in size (latest are around 500mb) but it fits good because it responds almost instantly and it’s not super human strength.
I’d suggest to add to your first message the obvious thing that might not be obvious for the reader: the app lets you play go against AI. It isn’t a client for a server and it isn’t meant for playing against other people.
In my experience, such an app could be very useful for beginners, if the AI strength isn’t overwhelming.
As a beginner, I spent some time playing against an Android app to get the grasp of the game strategy and I found very useful the Undo option. That allowed me to play back and forth and to test variations to find which move was working better than others.
So I’d say that your app is perfect for that.
It even has one more useful feature, which is the score evaluation. That could help even more to understand which moves are good or decent or bad.
Are you planning to add 9x9 board?
That could be very helpful for beginners.
In the app I was playing then, there were all three standard boards: 9x9, 13x13 and 19x19.
I used the smaller boards and then moved to OGS for playing against people.
I also think that a score evaluation chart could be useful and nice to see. It could fit nicely in your template, since you have plenty of empty space on the screen. Drops in score are a clear visualisation of bad moves and can show at which moment in the game there were major changes.
Lastly, I’m one of those “dark theme” addicted. You were already clear about adding colours, but I wonder if a black/ white switch could be possible.
Hy Lys, thank you for your detailed feedback, I appreciate that a lot.
re: It isn’t a client for a server and it isn’t meant for playing against other people.
exactly, thanks for emphasizing this, I fixed the project description.
re: In my experience, such an app could be very useful for beginners, if the AI strength isn’t overwhelming
this is indeed intended for beginners and I was looking for an appropriate way to limit AI strength so that it feels human-like but doesn’t make dumb mistakes human would never make.
re: I found very useful the Undo option
that’s my favorite option as well))
re: It even has one more useful feature, which is the score evaluation
since the neural net gives score lead as a part of its output it was easy to add this feature,
I think score lead is more useful for beginners than conventional winrate.
re: Are you planning to add 9x9 board? …evaluation chart …dark theme
Short answer is no, a bit more extended answer - it’s a personal app I developed entirely for myself (I train a lot by playing it). I believe that simple, clear, concise and stable interface/behavior is better than bloated and buggy one, and if I make it with extra features + themes it would not be either free or ad-free anymore, so I leave a right to keep it as is - simple, minimalist, free, ad-free, a ZEN mode kind of thing. This might sound a bit not user-friendly, but after all it’s a 100% personal project and it comes with a price of being provided “AS IS”. I could just use it and not publish it at all, but I thought that maybe it would be useful to someone else, so I decided to make it public. As a dedicated Linux user I follow “do one thing and do it well” principle and this app does exactly one thing - plays Go and I think it does it well, so to me a matter of being perfect is when there’s nothing more to remove rather than when there’s nothing more to add.
Was black’s previous move at the (1,3) point? I guess there is a bug mistaking the snapback as a ko. The code to detect ko seems overly simplistic, and I guess that it might not properly detect superko situations either.
Note: in this particular case, had black played their previous move at (1,4), then maybe the ko bug could have been avoided.
Hello zhuren314, thank you for reporting bug. Actually I’ve discovered the Ko bug myself recently and it was fixed (hopefully!) yesterday, please update the app to the latest version, here’re the instructions of how this can be done: GitHub - maksimKorzh/go: A Go/Weiqi/Baduk Progressive Web Application
Hi yebellz, you pointed to the wrong place in the code where the Ko gets detected.
Actual function that does it is here: go/js/goban.js at main · maksimKorzh/go · GitHub
There indeed was a problem with Ko detection in my particular implementation (I was stripping MARKED stone bits in a wrong place). Ko detection code itself is taken from michi.py by Pasky and in michi Ko works fine, so same should be here. Anyway I made an update, please reinstall the app to get a fix, there instructions on how to do it in the project README.
Hi all, first of all thank you for reporting bugs, apart from recent Ko bug there’re more issues I’ve doscovered, for instance it often falls in a bad ladder. That happens because neural net does not currently have a proper input for ladder detection which I’m currently working on. There are more features like area detection which would probably improve the playing strength a bit. All these should be available in the upcoming updates, I’ll announce them when they are out.
Apart from above I have a question. So I tend to simplicity and minimalism and finally I found what in particular my app reminds me of - it’s like a “Zen mode” in OGS where only the board and clocks are visible, so I’m thinking about renaming the project to somewhat like “Zen Go” but it might happen that this name might be taken. Does anyone know whether “Zen Go” name is taken?
Any ideas for the app name that would emphasize “zen mode” as a distinctive look?
fixed passing, now AI would be passing if no more moves to be played.
So now old 6 block net plays if user selects Kyu level AI, it takes around 2sec per move, it’s around OGS 5-4 Kyu or FOX 1kyu-1dan. New net plays if user selects Dan level AI, it’s around OGS 2kyu-1dan, FOX 3-4dan and takes around 5 sec per move on my raspberry pi 5.
Games you play against the app can be downloaded as SGF and then uploaded to OGS.
If you don’t mind, please upload your games to OGS and send me links - I’m very tempted to see more games it played against human players.
Another update: now webgl backend would be used if available which makes the app respond almost instantly (after weights are cached), should work on most modern systems. Also I’ve added a gtp interface to the app, so now it can be played as a GTP engine, e.g. against other engines in a GUI. I use gtp interface to run my app as a KGS bot (PWAGoBot).