Open HackYardo opened 2 years ago
In theory it is possible. Exchanging the Go engine that provides the computer player was a design goal from the beginning, so the code is structured in a way that decouples the main application from the Go engine. The two things communicate with each other via GTP protocol over in-memory pipes.
In practice it would still mean substantial work, notably
These are just the things that pop into my head immediately. There may be other stuff to do as well, which I can’t think of right now.
After the previous technically oriented comment, let me also say something about the bigger picture I see.
While it might be cool, technically, to have one of these nice and shiny new Go engines integrated into Little Go, I currently don‘t see the value for the average user who just wants to play a game of Go. Fuego is already strong enough to beat most people - which by the way has drawn quite a few negative App Store reviews - so increased playing strength in my opinion is not a good argument for integrating a new Go engine. A good argument for me would be if it uses less memory and/or CPU than Fuego.
Apart from the basic decision whether or not to integrate a new Go engine, there is also the question of priorities. There are already so many good ideas how to improve Little Go in other areas that a new Go engine has a very low priority in my mind.
Having said all this, I leave this issue open for further discussion.
Thanks for open & further.
Thanks for this information. I'm currently busy adding features to display/edit more SGF data, so a new Go engine certainly won't be on the menu for the next release. Maybe I'll spend some time on research after the next release, but no promise :-).
Meanwhile here's a bit of information about the engines you mentioned. This is just from a quick research, if you have more information feel free to add further comments.
KataGo notes, after installing it via Homebrew on my macOS machine:
katago gtp -config /usr/local/Cellar/katago/1.10.0/share/katago/configs/gtp_example.cfg -model /usr/local/Cellar/katago/1.10.0/share/katago/g170-b30c320x2-s4824661760-d1229536699.bin.gz
~/.katago/opencltuning/tune8_gpuAMDRadeonPro560ComputeEngine_x19_y19_c320_mv8.txt
). When the program is started the next time it automatically finds the saved tuning parameters.
It looks like you are not familiar with "the Go in the post-AlphaGo era". Roughly for short: bot | milestone | year |
---|---|---|
AlphaGo | defeat human | 2016 |
LeelaZero | make "AlphaGo" available | 2018 |
KataGo | make "LeelaZero" adjustable | 2020 |
These advances not only make sense in science and Go itself but also in every Go player's daily games. In my view, an app is a set of features. If one wants to develop a new GUI or undate an old GUI, he or she will choose KataGo for more adjustable features for sure.
It looks like you are not familiar with "the Go in the post-AlphaGo era".
You are 100% right there 😀. I freely admit that I do not even have any specialist know-how about the algorithms that drive a computer Go engine. My main function as the author of Little Go is to package a Go engine into an iOS app and write a (hopefully) nice user interface for it.
For someone, who has experience in developing GoTextProtocol and SmartGameFormat, wants to develop KataGo, here are required documents:
path/to/katago.exe gtp -model path/to/<NEURALNET>.bin.gz -config path/to/gtp_custom.cfg
Issue #401 is an incentive to switch from Fuego to KataGo (assuming that KataGo supports the SGF feature of board setup on a non-empty board).
After AlphaGo & Lee Sedol event 2016, many free, open-source and strong bots, e.g. KataGo, LeelaZero, SAI, etc, were created and can be used on desktops. But they can't be used on mobile devices until BadukAI, one free Android app. Until now, there is no free IOS app to play with strong bots.