herzbube / littlego

Little Go. An iOS application that lets you play the game of Go on the iPhone or iPad.
https://littlego.herzbube.ch/
Apache License 2.0
138 stars 53 forks source link

Could littlego merge a stronger GTP bot, e.g. KataGo? #368

Open HackYardo opened 2 years ago

HackYardo commented 2 years ago

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.

herzbube commented 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.

herzbube commented 2 years ago

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.

HackYardo commented 2 years ago

Thanks for open & further.

herzbube commented 2 years ago

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.

herzbube commented 2 years ago

KataGo notes, after installing it via Homebrew on my macOS machine:

HackYardo commented 2 years ago
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.

herzbube commented 2 years ago

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.

HackYardo commented 2 years ago

For someone, who has experience in developing GoTextProtocol and SmartGameFormat, wants to develop KataGo, here are required documents:

herzbube commented 1 year ago

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