beyond-all-reason / teiserver

Middleware server for online gaming
https://www.beyondallreason.info/
MIT License
50 stars 47 forks source link

[Feature]: switch region command #356

Closed geekingfrog closed 2 weeks ago

geekingfrog commented 2 months ago

Describe the Feature

It happens fairly often that as Australia goes to sleep EU wakes up, or EU gives way for US players, the same lobby will continue on but is now hosted in a region that almost none of the current players are located in. If the lobby has a queue and even if it doesn't, getting everyone to switch to a region appropriate lag-free host is difficult.

Teiserver already has a command $splitlobby which lets a subset of players move to a different host if the current one has too many players. We could maybe add a similar command $switchregion that lets everyone in the lobby move to another host in a different region.

Expected Behavior

So e.g. $switchregion eu initiates a teiserver vote. Players then have to vote with $y and if more than 50 % of the players in the lobby vote yes then everyone will be moved to an EU host.

Preferably players would get moved first (so they keep their spot as players) and people in queue next (preferably queue order is preserved) and then lastly the spectators.

Screenshots

No response

Additional context

suggestion in discord: https://discord.com/channels/549281623154229250/1255905272854085734

L-e-x-o-n commented 2 months ago

I would like to suggest a possible expansion to this command. $migrate without arguments just moves to a different lobby copying current lobby state and settings. Takes arguments like specific region and if it should copy state or not. I am suggesting this expanded version because it's has been requested in the past (#94 ) and can be useful if current lobby breaks for whatever reason.

p2004a commented 1 month ago

Very related issue from implementation perspective https://github.com/beyond-all-reason/teiserver/issues/174

L-e-x-o-n commented 2 weeks ago

Closing as a duplicate of #94 . Please continue discussion there.