Unciv icon indicating copy to clipboard operation
Unciv copied to clipboard

Feature request: Multiplayer Server Listing, Pinging, and implementing "Choose Best Server" for Server Groups

Open touhidurrr opened this issue 2 years ago • 4 comments

Idea 1: Multiplayer Server Listing: Listing popular Multiplayer server

Idea 2: Implementing some ping mechanism: Describes itself.

Idea 3: Implementing Server Group ping mechanism. Described below. And the feature that I would want most now.

Preface So, for a long time I am facing a problem in deciding the server location for UncivServer.xyz At one time I used to have 3 servers synchronized with each other but people only used the default uncivserver.xyz because of it being the default endpoint. The problem resurfaced now, again, as Heroku decided to discontinue their free dynos, making it necessary to move UncivServer.xyz again to another service as well as choosing the best server location for UncivServer.xyz. UncivServer.xyz is most popular in China, Russia & USA (Alphabetically), and choosing a server location results in a much increase in pings from other locations.

For reference here is a map of the geographic distribution of the users of UncivServer.xyz within the last 30 days screenshotted from Cloudflare Dashboard. Screenshot_2022-09-05-13-38-21-42_d073e7407281f7a2d9df7c9f755e6603 Also another rank list of requests by country also powered by Cloudflare. Screenshot_2022-09-05-13-38-56-93_d073e7407281f7a2d9df7c9f755e6603

As you can see the distribution is rather spread all over. To begin with, there are continents Europe, Asia, and America covered. China and Japan are Asian, Chile and USA are in America and Russia extends from Asia to Europe.

So, choosing a server with moderate average pings to all of the locations is very problematic.

If you look at other Online Multiplayer Games, almost all of the popular ones have some mechanism to ping their server locations and choose the best one from the result.

Solutions So, here is a solution that I was thinking of. Servers managed by one entity will be referred to as server groups. Within each server group, there can be multiple server locations described in: GET /serverConfig.json. The JSON file can be something like this:

{
  "ServerName or name": "UncivServer.xyz"
  "endpoints": [
    {
      "name": "Default",
      "url": "https://uncivserver.xyz"
    },
    {
      "name": "America",
      "url": "https://us1.uncivserver.xyz"
    },
    {
      "name": "Asia",
      "url": "https://sg1.uncivserver.xyz"
    },
    {
      "name": "Europe",
      "url": "https://eu.uncivserver.xyz"
    }
  ]
}

The client will then ping each of the ${url}/isalive and choose the best server based on the result and show some message like, "You are connected to the Europe server of UncivServer.xyz"

Important Notes: Never ping hostnames but ${url}/isalive. Cause in case of proxy like Cloudflare hostnames might point to the nearest Cloudflare server. So, the time to load ${url}/isalive is the real ping.

So, what do you guys think about it?

touhidurrr avatar Sep 05 '22 08:09 touhidurrr

This is a really cool idea, like http dns-ing And we can check if this endpoint exists, to default to regular behavior if it does not I would advise that we set this url "when the game loads" so if more servers are added existing users can benifit

yairm210 avatar Sep 06 '22 09:09 yairm210

I like this too

Idea 1: Multiplayer Server Listing: Listing popular Multiplayer server

I also thought about this some time ago but I don't really know how this could be implemented other than manually inserting servers into the code (which I guess isn't that bad since you mentioned 'popular' servers, which won't change that much)

This might also make it possible to move away from the non-free Dropbox "mp method" (? :) ). So people won't run into the pesky limits

alexban01 avatar Sep 06 '22 13:09 alexban01

Annnd ,In Chinese Mainland, about half of the regions can't access "uncivserver.xyz", so we recently opened a servers in Chinese Mainland (which has been officially approved by the Chinese government). I think we will share certain access pressure for "uncivserver.xyz" in the future

xk730 avatar Sep 08 '22 04:09 xk730

This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 15 days.

github-actions[bot] avatar Mar 14 '24 21:03 github-actions[bot]