Even in this day and age where fibre is being thrown around like confetti, some of us still have shitty Internet connections for various geographical/financial/spiritual reasons, not to mention occasional game or straight up computer crashes, and having a player drop out in the middle of a good match is just maddening.
Would be really awesome to be able to reconnect to a multiplayer game and continue playing. I kinda envision it working like Tiberian Sun did, where you'd get a dialog when someone was disconnected, with the option to vote the disconnected player out and continue playing without them. Tiberian sun had a countdown, but I don't really see any point in that (or at the very least it should be optional).
It would be even more awesome to be able to rejoin following a crash. Obviously this raises a number of concerns like how do you know it's the same player reconnecting being one of them (maybe every client generates a static signature on first run or something?) but would be really cool.
if we did the dialog option it would be best to have it like Starcraft 2 does it. countdown till you can vote to kick the disconnected player/s
Yeah that makes sense.
I mainly play with a group of people I know, so all the "cheating" type scenarios are kinda non-issues for me, but I could see where this could be abused.
How about a bot continues where the player left off and the team vote the bots personality
I can see where bot takeover would make sense in some cases, but really most of the time I'm playing with people because I want to play with them specifically. Usually when someone in our games disconnects, we just restart.
I uh.. sorry about that (unintuitive buttons :S)
@Lukemtesta Personally, I think the biggest issue is not the game hanging when a user disconnects, or even that their units no longer play the game like a real foe, but that _the original user_ can not play in that game _ever again_. This means that in arranged games with friends, like @JustAberrant mentioned, the game is hosed, even if it recovers without the players. When it happens to my friends and I, we either restart the game, or just stop playing altogether.
For another example of good recovery, I recommend you see Heroes of Newerth.
1) Play a game of Heroes of Newerth
2) Pull your ethernet/Kill the game/Crash/Use the Quit option in the game/Do anything nefarious
3) Reopen Heroes of Newerth
4) Rejoin the game as if _nothing ever happened_
5) ??????
6) PROFIT!
My internet connection actually is crap. When I disconnect, everybody hates me. True story.
Well how much information is there to really store? Surely logging the cash and building/unit locations is adequete. Can't you back these up on each of the players machines. On reconnection query this information from the active players, like the yaml files but specify the owner of each unit? Heck even back it up to another server pretending to be a host? i'd even share my cPanel server with openRA for this
Would checking the returning player's ip be secure enough for this feature? It would mean we would have a bit more plumbing server-side to do so though.
We could use the same logic that could be used for saving and loading games to recover from the crash.
On 2014-08-01, at 7:28 PM, "Daniel Loffgren" [email protected] wrote:
@Lukemtesta Personally, I think the biggest issue is not the game hanging when a user disconnects, or even that their units no longer play the game like a real foe, but that the original user can not play in that game ever again. This means that in arranged games with friends, like @JustAberrant mentioned, the game is hosed, even if it recovers without the players. When it happens to my friends and I, we either restart the game, or just stop playing altogether.
For another example of good recovery, I recommend you see Heroes of Newerth.
1) Play a game of Heroes of Newerth
2) Pull your ethernet/Kill the game/Crash/Use the Quit option in the game/Do anything nefarious
3) Reopen Heroes of Newerth
4) Rejoin the game as if nothing ever happened
5) ??????
6) PROFIT!My internet connection actually is crap. When I disconnect, everybody hates me. True story.
聛\
Reply to this email directly or view it on GitHub.
Problem is on a reconnect a user may get a different IP.
How about linking the ISP and OS to the players name?
Or how about on reconnect, it asks the rest of the players if it is okay to allow the person, and shows their info IP, nick, etc.? (My IP is very likely to change on reconnect, I usually play over a tethered connection.)
Or when you join a game, generate some kind of session key and store it on the filesystem, then use that to authenticate on reconnect (could also store additional details so when you restart openra it could detect the presence of the file and prompt you to rejoin your previous game).
Well how much information is there to really store? Surely logging the cash and building/unit locations is adequete.
There is a significant amount of world-sync sensitive state, and some of it cannot easily be serialized. This is the real hard part of this feature.
The only feasible way right now to allow reconnect would be for the joining player to simulate a replay of the game up to the point that they disconnected, which may take several minutes for a long game.
See also #2743, and there is at least one other issue that has a more in depth discussion of the difficulties of saving the game state.
If I can implement multiplayer loading with #6238 then we can kinda do this.
That is until someone can find a way to do a clean reconnect.
It looks to me that #6287 is not what this issue is about.
no I dont consider it either but people here might want to know about this since they want the ability to continue multiplayer games, my PR also adds an auto save functionality that triggers on the first disconnect in a game so if someone drops you can reload straight away.
As one of those people, this is definitely encouraging and appreciated :)
www.gamasutra.com/view/news/126022/Opinion_Synchronous_RTS_Engines_And_A_Tale_of_Desyncs.php in the section Synchronous Engine Architecture is a good read about why this is very hard to implement.
I have sessions with friends and frequently somebody is kicked out because the connection is bad for too long. We then have to restart the game.
As a mitigation: Is there a way to increase the timeout?
(Unfortunately I have no clue about implementation yet)
An important note to the people who placed a bounty on this issue: Bountysource have just changed their terms of service to take it for themselves!
If no Solution is accepted within two years after a Bounty is posted, then the Bounty will be withdrawn and the amount posted for the Bounty will be retained by Bountysource. For Bounties posted before June 30, 2018, the Backer may redeploy their Bounty to a new Issue by contacting [email protected] before July 1, 2020. If the Backer does not redeploy their Bounty by the deadline, the Bounty will be withdrawn and the amount posted for the Bounty will be retained by Bountysource.
Most helpful comment
There is a significant amount of world-sync sensitive state, and some of it cannot easily be serialized. This is the real hard part of this feature.
The only feasible way right now to allow reconnect would be for the joining player to simulate a replay of the game up to the point that they disconnected, which may take several minutes for a long game.
See also #2743, and there is at least one other issue that has a more in depth discussion of the difficulties of saving the game state.