What's the chance of having reconnect option?

Both HoN and LoL have an option for players to reconnect to their game if they drop, for example if they crash or lose their connection temporarily.  What is the chance of implementing this feature in Demigod?

 

The reason I ask is because I just played 2 consecutive games where a player dropped before the game even started and the next game after that a player dropped 2 minutes in.

15,180 views 26 replies
Reply #2 Top

I think the player dropping issue is related to the decompression of the LUA files which was partly corrected in the last patch, as they crash rather than just drop, so hopefully that should be gone for good soon - additional emphasis on 'hopefully'. Personally, I've never seen this happen, though. The only people who drop are Rage Quitters.

As for the re-connect option, the chances are pretty much nill due to the nature of the game's connection system. As the game is synched, as in all players transmit all of the game's data to all other players as the game plays out to ensure no one cheats through third party manipulation, in order for a re-connection to be available the game would literally have to pause completely. Not even chat messages could be sent. Once someone has opted to re-connect, they'd have to re-download the entire game from each player and then have each version of the game checked against everyone else's to ensure complete compatibility. Then, the game would actually have to play out on their machine to ensure they're correctly synched up to the point that someone dropped, and then the game would resume. The time needed for this to occur would increase the longer a game went on, the more players in the game and different internet speeds, but saying an average time of 20-30 minutes probably isn't too far off the mark. That's 20-30 minutes where everyone's game is paused and they're unable to chat. As HoN and LoL use the client/server model rather than Demigods Peer to Peer, the re-connect system works almost seamlessly.

Reply #4 Top

very low chance based on what I've read. 

Reply #5 Top

I don't get the part about no chatting. There's no particular reason why the chat stream needs to be part of the main game. You could still chat through the overlay, for example, it seems like if a reconnect interface were added that they would retool the in-game chat to be functional through it.

Also I don't get why you would need to sit through a replay to get back to where you were. The game could be just told outright how much gold, experience, items, etc. everyone has and refresh the position of all units if the developers were so inclined. It'd be a lot of work I'm sure, but I really don't see why it'd have to be so outlandishly inconvenient if it were implemented.

It just seems like you're saying the development team would put a lot of effort into a major feature but still be unwilling to tinker with the nuts and bolts of the program.

 

That being said, they're correct that there is pretty much zero chance of it being implemented.To do it well you really would have needed to have the feature in mind when the networking was being built.

Reply #6 Top

Quoting obscenitor, reply 5
I don't get the part about no chatting. There's no particular reason why the chat stream needs to be part of the main game. You could still chat through the overlay, for example, it seems like if a reconnect interface were added that they would retool the in-game chat to be functional through it.
End of obscenitor's quote

Chatting through the overlay wouldn't cause a desync, I was really referring to in-game chat which still counts as transferred information to the game. In order to seperate the chat in game from the actual network code, you'd need to re-write part of that code and developer an entirely new chat interface/channel - this work was already ruled out as to expensive by Frogboy.

Quoting obscenitor, reply 5
Also I don't get why you would need to sit through a replay to get back to where you were. The game could be just told outright how much gold, experience, items, etc. everyone has and refresh the position of all units if the developers were so inclined. It'd be a lot of work I'm sure, but I really don't see why it'd have to be so outlandishly inconvenient if it were implemented.
End of obscenitor's quote


The way the game currently works, you'd have to because just 'jumping' in at some point isn't in the network code - it's simply not in the game, however as long as your CPU were up-to-scratch, the SIM Speed would allow you to 'fast forward' through it. If it were developed from the get-go, which it wasn't, with mid-joining in mind it would be entirely possible to do this.

Quoting obscenitor, reply 5
It just seems like you're saying the development team would put a lot of effort into a major feature but still be unwilling to tinker with the nuts and bolts of the program.
End of obscenitor's quote

The example I gave was the realistic view of what it would entail with the minimum amount of work on behalf of the developers, which is what you'd most likely see at this point if it were to happen. For a fully featured re-join mechanic to be added to the game, an overhaul of large sections of the code would be needed, and this simply isn't going to happen.

Reply #7 Top

Quoting pacov, reply 4
very low chance based on what I've read. 
End of pacov's quote

You mean 0.

Reply #8 Top

Yes zero is the right word. ZehDon is absolutely correct. The Developers cant re-write the game's code all over again (most of it).

It is simply not worth it.

Reply #9 Top

Is it at all possible to trick demigods peer 2 peer connection into thinking that it is peer 2 peer, but actually being hosted by a  server?

I.e. If a person can connect to a proxy with a single connection, then from the proxy to the game; is there any chance to use that existing code to simply connect to a "fake" proxy, which is actually a server connection that everyone connects to? I understand this would require servers to be implemented etc

I ask, because i have an idea for a thread topic on the subject, but would be pointless really asking  if theres absolutely no chance of it occuring.

Reply #10 Top

If kitch's idea is possible I would definatly suggest the GPG do this for for Supreme Commander 2.

Reply #11 Top

zer0!11!!

Reply #12 Top

Quoting kitch45, reply 9
Is it at all possible to trick demigods peer 2 peer connection into thinking that it is peer 2 peer, but actually being hosted by a  server?
End of kitch45's quote


Yes, this is entirely possible. There is currently a console command which at present escapes me, when added to your Demigod shortcut it turns yourself into proxy for all the players currently connected to you. The internet requirements for this are quite large, well above what I'd expect to find in the community, but it sends all information through you thus creating a basic client/server model. Please keep in mind this is not a dedicated server; the 'server' has to play in the game as well.

Reply #13 Top

Well, it's still not comparable to a basic client/server model, because the "client" who is proxied still sends the same amount of data to the player as he would to each player individually in total.

Reply #14 Top

Quoting mgmetal13, reply 10
If kitch's idea is possible I would definatly suggest the GPG do this for for Supreme Commander 2.
End of mgmetal13's quote

why? supcom/FA runs perfectly fine as long as everyone has less than 500 ping. playing FA online feels just like a LAN game, at least in 1v1 and 2v2.

Reply #15 Top

Quoting Spooky__, reply 13
Well, it's still not comparable to a basic client/server model, because the "client" who is proxied still sends the same amount of data to the player as he would to each player individually in total.
End of Spooky__'s quote


Not quite - in a 3v3, for example, you maintain a single connection to the 'server', who passes along your information from themselves, while still forwarding the same amount of information. Because it's on a single connection, it's more stable and can potentially work better. It works similar to how Battle.net operates, basically. It works great for the 'client', but the demand on the 'server' is pretty extreme.

Reply #16 Top

It's not less data, so for the proxied client nothing improves bandwidth wise. The proxied client could still lag due to insufficient bandwidth. But yes, his connection to every other player gets potentially more stable, since he has only one connection to the proxy now (if he is fully proxied). However, it will not help if he doesn't have a stable connection to the proxy either, obviously :).

Reply #17 Top

As for the re-connect option, the chances are pretty much nill due to the nature of the game's connection system.
End of quote

This is true, but everything else afterwards is speculation, and, as a software engineer with networking experience, sounds ridiculous (replay to sync?! LOL).  The probable reason it's difficult is simply that the server doesn't have the details of game connections anymore (it threw them out once the game was handed off) to try and re-establish them for you.  If it did, bringing you back into sync with the other players should be comparatively trivial, with little to no interruption to the game.

Reply #18 Top

Then surely it wouldn't be that difficult for the server to maintain a record of the game, and continue to check the number of players in it whilst it is still ongoing (every 10 seconds or so).  If it detects that a player is missing it waits until that player is back in the lobby and offers them a chance to reconnect.

Reply #19 Top

Quoting brjoha, reply 17
...sounds ridiculous (replay to sync?! LOL).
End of brjoha's quote

Not really ridiculous, just the most realistic outcome. At current, the game contains no code to allow starting conditions to be applied - basically, apart from the options available in the Lobby menu, you can't give Demigod and Creep locations to the game, can't set item load outs, gold levels, Tower health, etc. It's simply not in there. In order to work around this, you would quite literally have to play through it because adding in the additional code won't happen - Frogboy already confirmed this kind of re-write is out of the question.

Quoting brjoha, reply 17
The probable reason it's difficult is simply that the server doesn't have the details of game connections anymore (it threw them out once the game was handed off) to try and re-establish them for you.  If it did, bringing you back into sync with the other players should be comparatively trivial, with little to no interruption to the game.
End of brjoha's quote

Being as there are no servers in this game, I assume by server you mean each person's computer - which is correct. However adding a log for the connection details could quite easily be done once we have offical mod support; perhaps you could create a mod to allow this reconnection feature if it's as easy as you say? To be honest, that kind of manipulation is outside of my knowledge base.

Reply #20 Top

Quoting GnomeChomp, reply 18
Then surely it wouldn't be that difficult for the server to maintain a record of the game, and continue to check the number of players in it whilst it is still ongoing (every 10 seconds or so).  If it detects that a player is missing it waits until that player is back in the lobby and offers them a chance to reconnect.
End of GnomeChomp's quote

as stated already, there is no server. and yes, its pretty damned difficult which is why you can't do it now.

Reply #21 Top

By server, I meant the lobby server.  It's in the best position to know whether a match is still in progress or has completed, and remember who is in the match and how they were connected (directly or proxied).  If it retained this information, it could coordinate reconnecting to the other players.  Once the connections are restored, there could be a recovery stage during which all the stateful objects associated with a match are iterated over to retrieve their current state in the background (from, say, the match host).  While this is occuring, the sync messages (which presumably only reference objects that have just changed state) are also still received and processed to keep things current.  Once the iterations are complete, the player can return to the match and take over from the AI (though this could be a shock if it happens in the middle of a fight, and argues for the AI to do nothing but wait at the crystal).

Now I'm the one guilty of speculating, since this capability makes lots of assumptions about how things are implemented and could be extended to support reconnecting.

Reply #22 Top

Quoting brjoha, reply 21
By server, I meant the lobby server.  It's in the best position to know whether a match is still in progress or has completed, and remember who is in the match and how they were connected (directly or proxied). 
End of brjoha's quote

what? there is absolutely no difference between the lobby server and all the other players, other than the ability to change the game's rules before it starts.

Reply #23 Top

Actually, the Lobby itself is handled through Impulse rather than through Demigod itself, it hands off the connections to Demigod once all the handshakes have taken place and the game begins (Lobby uses TCP, Demigod uses UDP iirc). The network code in Demigod doesn't currently support reconnections, however Brjoha is most likely correct (again, we're outside my knowledge base now) in saying the Lobby is the best place to start - it's handled by Impulse, meaning the Impulse server which links all the players together for Demigod has a record of the connections; if it could remember those connections and their details it could theoretically re-connect a player to a game in progress by, for discussions sake, plugging them back in instead of actually needing massive changes to Demigod's network code. This means the Code Ninjas at Stardock are the best place to pester rather than GPG. Having said that, again I'm fairly sure Demigod itself doesn't support the basic feature we need which is the ability to set up a game state if it wasn't hard coded to begin with.

Reply #24 Top

but does the lobby remember anything once the game launches? i wouldn't have thought so.

Reply #25 Top

ZehDon, the Lobby is still handled by Demigod itself. Impulse only manages the connection facilitation and hands over the connection to Demigod every time a player successfully connects to another player. There is no difference between ingame and lobby, connection wise.