Go Lab: an online multi-user go board

TL;DR: I made an online go board that allows for all participants to have control at the same time. Check it out here: https://golab.gg/

Previous post (about a year ago): An online go board with shared control

Hi everyone,

I’ve posted about this before, but the project is now much more mature. I originally made this tool because I wanted to review games online with friends without needing to pass “control” back and forth. I feel confident that other people would find this convenient as well, so I wanted to make an announcement in the go community.

Actually, this project has expanded in scope since I’ve first started it, so I wanted to draw attention to the major points:

  • Each participant has shared control of the go board

  • Free and open-source, both backend and frontend (MIT license – permissive, do whatever you want with the code provided the license remains intact)

  • File formats accepted: SGF, GIB, NGF, ZIP. The SGF parser is pretty good, the GIB and NGF parsers are rudimentary at best. Please do feel free to send me any game files that fail to parse!

  • Sync with live OGS games. (Also reviews/demos). This could, hypothetically, be used for live commentary to follow along with an OGS game/demo.

  • Integrate with twitch. Twitch streamers can connect their stream chat to a go board, and audience members can use the chat to attach branches to the game file

  • Open license asset pack: https://github.com/golab/board/raw/refs/heads/test/assets/assets.zip This is a set of SVGs that I use for the woodgrain of the board and the shell stones. I thought it might be useful for other devs. (Creative Commons BY 4.0 – permissive, do whatever you want with the images, provided the license remains intact)

  • I’ve created some experimental browser extensions that will insert an “Upload to Go Lab” button to OGS (I repeat, experimental): https://addons.mozilla.org/en-US/firefox/addon/golab/ https://chromewebstore.google.com/detail/go-lab/peneikldbccilejglfhleienjdhpbhea?authuser=0&hl=en

Main page: https://golab.gg/ (enter a name for your board in the input bar, or leave it blank and the server will generate one for you)

Discord: https://discord.gg/y4wGZyed3e (feel free to make suggestions or report bugs)

GitHub: https://github.com/golab/board (you can also report issues here)

If you like this project and want to support me: https://tiptopjar.com/golab I just want to say that I’m not doing this for money, and any tips go directly to monthly server costs.

9 Likes

Nice, how do you deal with concurrent / invalid edits?

1 Like

there’s two main controls. the first control is server-side: after one user adds a stone, there is a short interval where the server will ignore input from the other users (this interval is configurable on a per-room basis, but it defaults to 250ms)

the second control is client side: after sending an “add_stone” event, the frontend will wait for the output from the server before sending more stone events.

2 Likes

Hi! I found this post through the other golab app post

I feel similarly! Maybe it’s a “people who use/used KGS” thing. On libaduk.com I set it so the postgame analysis and analysis on imported games works like this where anyone can just put stones/markings/notes on the board.

It seems like you might have slowed down development on this since February. My code is also open source (AGPL licensed). I’d be happy to adopt any missing features if it would be helpful. I’m paying the server costs either way, might as well implement things that are useful for other people!

On libaduk.com I set it so the postgame analysis and analysis on imported games works like this where anyone can just put stones/markings/notes on the board.

that’s awesome! in my opinion, anything that closes the gap between otb review and online review is a useful addition. there really is no replacement for reviewing with people over a real board

indeed, development on golab has slowed down since february, but that was mostly because it reached a point where i was satisfied with how it worked.

good luck with libaduk!

2 Likes