Room link invitations

So I’ve been trying to convert my Chinese friends to OGS. The recent rengo feature offers a big opportunity, as Chinese players really don’t have an ideal place for online rengo. The current mainstream choice has some freaky server lags and bad features. OGS rengo is superior in nearly every aspect: no paywall, better interface, much-much-much (may I add another much) more versatile game settings…

Other than the fact that they couldn’t join the game. I set up the game, posted it in the lobby, I could see it, they couldn’t. It’s probably due to some bizarre bugs related to client devices or login locations, but the sad story is that after I groveled all the way to get them sign up and wait in the lobby, I had to let them go.

Which brings up the point: Wouldn’t it be nice if there is a way to create a private challenge (a.k.a. “game room”) via invitation link? This is standard practice for lichess, fox go and most other board game servers. No idea why OGS is missing it. The current substitute is this post-to-lobby mechanism, which 1. cannot be private (invisible to uninvited users) 2. disappears once the host closes his/her browser, for whatever reason.

Here we used to challenge a particular player in order to play private games. This works fine before rengo, but now I really have the impression that lobby+one to one challenge is only an ad-hoc solution, and invitation link is the long term way to go. I would be surprised if I’m the first to raise this concern, but hopefully devs get the point.

Persuading those folks to leave their comfort zone for OGS is not all that easy due to the default English interface (which scared many away), GFW shenanigans and simply inertia. However, we can remove one such hurdle by implementing what I assume to be a relatively small feature.
@anoek

10 Likes

I’m tagging @GreenAsJade as he’s been taking point with all rengo related stuff.

That’s interesting, it should default to the user’s language preferences set by their system or browser - but it sounds like it’s not working like that for your friends in China?

5 Likes

A post was split to a new topic: Unable to join Rengo challenge

I split the problem of “Unable to join the challenge” into a new thread.

I’d like to use this thread to explore it’s topic “room link invitations”

I find it hard to visualise this being done as a “small feature”.

Can you elaborate on how it would work?

2 Likes

That’s true. Some users find it working, some do not. It appears that one of those who found the interface in English was using Harmony OS developed by Huawei.

My background is not in web developing so I can’t tell you the how, but here is the what:

In lichess, one of the ways to start a game is to click “play with a friend”, which gives you a link that looks like https://lichess.org/Ha3hc0de , and the host can share that link to whomever he wants to play. The first player to visit that link will play the host. In lichess the invitee can play anonymously and does not need to sign up.

If we migrate this to rengo, I suppose that such invitation link would send the invitee to some sort of “game room” page showing game configurations, and the host can adjust team members.

Their implementation is entirely open source, so feel free to check out!

4 Likes

Note: lichess-style URL challenges has been requested here:

3 Likes

My first idea would be:

  • A game challenge with a flag similar to “private” but sightly different, so as to hide the game from the open challenge list
  • A generated invite link that routes to the same endpoint (or executes the same scenario) as does the “accept challenge” button in the open challenge list, or an additional page
  • The same “waiting” page as when you challenge somebody tet-a-tet with an option to cancel it that will send an api call to invalidate the invite link and remove the open challenge
  • (the page route) The same “invitation” popup as with the tet-a-tet challenge, though it’s kind of a ghetto implemention. Maybe a new page for this one would be better as it isn’t much work

That would keep the changes to a minimum, but I wouldn’t say that it’s the best implementation. If done properly I would instead have the link be the key entity rather than a challenge. Then in the same db table with the existing invite links I would just have a field with the json game config. And when the link is accepted it starts up a challenge with that config for the players.

2 Likes

The more tricky part here is actually the backend. I have no knowledge of ogs’s backend but it’s a problem similar to the common “password recovery” solution via links. Basically the trick is in storing those links. Since they have an expiration date a normal db table may not be sufficient as you will need to clean it up manually. Another solution that I know is via redis since it has this dynamic behavior covered, but afaik it stores data in the memory so with server resets or instabilities the links will be all dying. Maybe it’s a smaller issue than I imagine it though.

1 Like

These are all great thoughts.

I think esoke has highlighted the “way to start”: we can utilise the “Private” checkbox (or add another similar) …

… but (at first at least) it will be easiest to ask the Organiser to select players for the game when they select that checkbox.

Only those players selected would be able to see it. This doesn’t implement “room link invitations”, but it does take the first step, and is definitely in the category of “easy”.

With that in place, I can envisage that a “room” link URL would be able to be generated for each challenge, and the effect of “using” the UIRL would be to add the person.

Note that this solution does not create a “room”, it utilises a “private challenge”, but I think our rengo challenges are close enough to “rooms” for all intents and purposes?

3 Likes

Hello, I just ran into this problem today.

I wanted to play a game with a friend but didn’t want random people to join. So I tried creating a game with the private option checked, thinking that this would hide the room listing from the public lobby, and then maybe I could copy a link or something to send to the friend.

To my surprise, when I created the room, some random other person joined? (I jumped out of that game immediately, sorry to that random other person >_<;; )

I realized afterwards that private checkbox actually means the replay is private, and I can’t share the replay publicly afterwards. Can games be switched between private and public, or are they fixed?

This is confusing imo. I thought “private” referred to the visibility of the game listing itself in the lobby.

Most of the online games I’ve played (lichess, amq, among us, tetr.io, tetris effect: connected, puyo puyo tetris, etc.) either have a system where you can share a link to the room to invite people, or a system where you can set up a passcode so that only the person you intend can join.

I feel OGS is really not intuitive and this has been discussed for a while, e.g.

1 Like