Critical Game State

So it seems when a desync happens now, the game ends automatically. I hope v1.2 brings some actual fixes for possible desynchronisation causes.

106,694 views 50 replies
Reply #1 Top

Hmm... the game ends or crashes? 

Reply #2 Top

No the game ends regularly. It's like in Supreme Commander now (when a desync happens in an online game, the game will close itself automatically).

It's not a bad thing, but in the past you could continue to play, if the person who got desynced to the others quits (if it is just one who is desynced to the others). This is not possible anymore, apparently.

Reply #3 Top

The game was unplayable anyway with that stupid message popping up every 2 seconds.

Reply #4 Top

Hmmm...  Not sure I love this solution.

 

Quoting Spooky, reply 2
No the game ends regularly. It's like in Supreme Commander now (when a desync happens in an online game, the game will close itself automatically).

 

So does the game close or the round end?

Reply #5 Top

Quoting Trigeminal, reply 4
So does the game close or the round end?
The round ends, just like if you are chosing end game from the menu.

Reply #6 Top

I had the same thing in the game i just played, we had already won and the that message pops up and game ends :(

They should fix the problems with different languages of the game causing desyncs sometimes.

Reply #7 Top

Quoting Shade, reply 3
The game was unplayable anyway with that stupid message popping up every 2 seconds.

That happened to me 2 days ago and yes, it is really annoying.

Reply #8 Top

Well the system is good. No sense to play with desync anyway.
The thing needs to be fixed is "false desync". Sometimes when someone quits, its just 1 desync message and later is all ok. So I call this "false desync". Now, when this happens, game will exit (even if that wasn't real desync, just 1 random message).

Reply #9 Top

I've had games desync one time when someone quit, then the desync does not appear again afterwards.  These games were recorded normally after being played to completion.  I take it that should this happen in the future, the game will just end. 8(

-- Tukulis

Reply #10 Top

I just had this issue after 1 guy quit... getting nervous...

No record of the game ever being played (game was at least 10 min 3 human v 3 human)... wonder if this is the new host END GAME issue. 

Reply #11 Top

Earlier some people forced disconnect to not record stats, now some people will force desync :)

Reply #12 Top

I don't think it's possible to force a desync?

Reply #13 Top

My concern is that the desync message might be the result of a) Host pressing END GAME or b ) old host disconnect exploit.  It might not be the case at all... the game I was playing in definitely appeared to be about the time the host would pull the plug.  One of his teammates had just quit about a minute before and then BOOM.  Desync and game disappears. 

Reply #14 Top

Spooky - piece of cake! :D Of course i won't write here how to do this ;)

 

Idea to GPG: Well there's easy way to deal with desync.

Just make new desync variable, set it as default to 0 and when someone desync (all others receive bad packets from him) increase it by 1. When it reaches 10, that person will be kicked and replaced by AI, so all others can finish the game, result will save, person who was causing desync will be outside the game and all will be happy (well... maybe except kicked person) ;P

+2 Loading…
Reply #15 Top

Quoting pacov, reply 13
My concern is that the desync message might be the result of a) Host pressing END GAME or b ) old host disconnect exploit.  It might not be the case at all... the game I was playing in definitely appeared to be about the time the host would pull the plug.  One of his teammates had just quit about a minute before and then BOOM.  Desync and game disappears. 
In my case too, actually.

Reply #16 Top

That's funny, because there's still desync issues when people quit in SupCom and FA.

Guess it takes the production of a couple of games before they find that bug :)

Reply #17 Top

Polynomial is trying a few different things to see if he can force a desync.  So far he did a 3 human v 1 human and hit end game as host.  http://pantheon.demigodthegame.com/game/835911/player/22215/.  No desync... showed him with a loss.

Second test... host disconnect via pulling the ethernet cord out.  This had interesting results.  This test setup was 2v1... poly + another computer on his network v me.  Poly (host) disconnects by pulling the ethernet cord out after 3.5 minutes.  The game persists as expected with AI taking over for him.  Poly gets on the other computer on his network and concedes.  The game ends.  http://pantheon.demigodthegame.com/game/835959/player/22215/.  The interesting part of this is that the game showed up under my stats immediately as a win, but did not show up under Polynomial's stats AT ALL.  I refreshed, looked him up, looked myself up, looked him up again and he still had no record of the game.  His other ID had a loss (as expected).  After 2-3 minutes, I looked him up again and the record appeared.  So, it looks like the original host disconnect (I pulled the plug on my router - has been resolved)... but there was a screwy delay between when he got any stats posted to his name.

+1 Loading…
Reply #18 Top

Quoting pacov, reply 17
Polynomial is trying a few different things to see if he can force a desync.  So far he did a 3 human v 1 human and hit end game as host.  http://pantheon.demigodthegame.com/game/835911/player/22215/.  No desync... showed him with a loss.

Second test... host disconnect via pulling the ethernet cord out.  This had interesting results.  This test setup was 2v1... poly + another computer on his network v me.  Poly (host) disconnects by pulling the ethernet cord out after 3.5 minutes.  The game persists as expected with AI taking over for him.  Poly gets on the other computer on his network and concedes.  The game ends.  http://pantheon.demigodthegame.com/game/835959/player/22215/.  The interesting part of this is that the game showed up under my stats immediately as a win, but did not show up under Polynomial's stats AT ALL.  I refreshed, looked him up, looked myself up, looked him up again and he still had no record of the game.  His other ID had a loss (as expected).  After 2-3 minutes, I looked him up again and the record appeared.  So, it looks like the original host disconnect (I pulled the plug on my router - has been resolved)... but there was a screwy delay between when he got any stats posted to his name.

 

Odd,.. behavoir, but good outcome.  We'll have to keep an eye on this.  Thanks for doing some testing guys.

 

Quoting Poul, reply 14
Spooky - piece of cake! Of course i won't write here how to do this

 

Idea to GPG: Well there's easy way to deal with desync.

Just make new desync variable, set it as default to 0 and when someone desync (all others receive bad packets from him) increase it by 1. When it reaches 10, that person will be kicked and replaced by AI, so all others can finish the game, result will save, person who was causing desync will be outside the game and all will be happy (well... maybe except kicked person)

 

Love this idea!!!  Look at this gpg, problem solved.

Reply #19 Top

Quoting Poul, reply 14
Just make new desync variable, set it as default to 0 and when someone desync (all others receive bad packets from him) increase it by 1. When it reaches 10, that person will be kicked and replaced by AI, so all others can finish the game, result will save, person who was causing desync will be outside the game and all will be happy (well... maybe except kicked person)

 

Could work I guess, I imagine a single person who is causing the desynch would report recieving bad data from everyone else in turn. But with multiple people reporting the real cause they should reach the limit before anyone else so they might not even need to work in a majority rules system, just let the numbers add up.

Reply #20 Top

if a desync is detected just pause the game a second and resync all data so they can continue to play on a fully synced game.

only if there is a missing connection between to players becasue they were previously proxied by another player that quitted it should end the game if it is not possible to proxy through another player.

Reply #21 Top

@Poul: I like the idea.

 

if a desync is detected just pause the game a second and resync all data so they can continue to play on a fully synced game.
That would be a huge amount of data. In SupCom we would be looking at ~50mb, probably a little less in Demigod. Still, resyncing would take a serious redesign of engine, netcode and it would take a long time ingame to transfer the required data. Longer than most player would be willing to wait.

Reply #22 Top

no it isn't much data cause until the first desync happend all is synced. we are only talking about the difference. there is a last synced satus just a short time in the past.

 

it even does not need any design changes in the netcode just an additional function that interrupt the whole process and gathers data from the other players the data of the last game seconds. that's all.

 

what could take longer time is to proxy a player if not all are connected after someone has left. but this could be timedout and replace this player by ai.

 

it's as simple as it sounds. i'm not talking theoretically, i have the experience with such things.

Reply #23 Top

no it isn't much data cause until the first desync happend all is synced. we are only talking about the difference. there is a last synced satus just a short time in the past.
In order to find the point where it desynced, you'd have to re run the simulation from the start of the game. This would take a long time.

Reply #24 Top

Quoting Spooky, reply 23

no it isn't much data cause until the first desync happend all is synced. we are only talking about the difference. there is a last synced satus just a short time in the past.In order to find the point where it desynced, you'd have to re run the simulation from the start of the game. This would take a long time.

no you don't. you now exactly when it happend. the game already detects this moment on the fly. that's plain wrong. that's why the game comes up with a desync message box. you know that the desync has been caused by an leaving player. the popup comes just a second afterwards. so short is the timedifference between the last synced status and the desynced one.

 

edit: if they haven't obciously implemented an on the fly method to detected an desync i would have suggested one. but they already have one. so no you don't need to get all over the sim-data to find it. at the moment it happens it is already known. => easy to resync.

Reply #25 Top

I bet desyncs are mostly caused on purpose by cheating. You simply get certain software that lets you monitor the state of your machine and go through the demigod process by searching certain numbers you know like your current health. Once figured out where in the ram its stored you write a small application that overwrites it with a different number and bam desync. Its a nice way of screwing you out of a victory. And the best thing is nearly any noob programmer can do it. Not saying its done exactly that way with health could be alot of other things too probably overwriting random game state adresses would do the same. Just be sure to not kill the demigod exe ^^