Resume fight when disconnected / Soft Disconnect

This may be more taxing on the server, but it would be great to be able to resume an attack if you get disconnected.

I was just doing a rare quest on the 2nd to last stage, on the boss screen, when I received a phone call. Apparently phone calls disable your data connection?

When I returned to the game, I had the blinking wifi symbol & then got the disconnect error.

16 energy down the drain. If it didn’t use the energy, I wouldn’t mind.

Other modes (raids, titans, wars, events) would need more consideration to prevent abuse.
IE: tile layout would need to be saved to prevent intentional disconnects to get new boards.

No need to tax the server, the game can just tax the phone more, but cacheing the stages. I just think it can’t be done to Titans.

1 Like

I agree with this completely. I actually bought one world energy refill earlier today because I just wanted to play a little more. Then I went into a quest taking up 12 energy. Immediately got disconnected and it took a good 8minutes to get reconnected. The game took my 12 energy and gave me nothing for it. Needless to say I was pissed. I hadn’t even started the fight!

If world energy refills were more reasonably priced I wouldn’t be so upset, but they are expensive so it shouldn’t be so easy to lose what I paid for.

Anyway, that’s enough of that rant takes deep breath. I do agree I would like SG keep us from losing energy from disconnects.

2 Likes

Yes getting disconnected while attacking is not the players fault, we should be able to resume the fight without loosing anything — energies and so on. This is the second war where I was disconnected while attacking, I lost both energies and the ability to use 5 heroes again, and I haven’t even started the attack, the board was just about to show, isn’t it frustrating when that happens??? My internet connection is not the problem nor my device, I am not receiving phone calls or doing anything, just playing the game. Other games we play let us resume fights midway, I think you can do that too. We are spending money on this game, so I think this is not too much to ask? Please do something about this. Thank you.

5 Likes

Because this game is mainly played by mobile phones and tablets, it would be nice to have a resume function to rescue an abruptly interrupted battle.

There are many reasons because the player need to abruptly interrupt a battle included battery suddenly exhausting.

Having this function put the player in a peace of mind state that any battle, he begins, would not get lost because any interruption.

The function will provide a [+1] on the map icon in such a way the battle could immediately be resumed on user request and confirmation.

Confirmation is necessary because other events might get into the map notification and the player might not want immediately resume the battle.

Thank you, R.

3 Likes

@zephyr1, this problem of loosing flags by initiating a battle but not concluding it

OR BECAUSE

immediately after the button pression [go to battle] the flags are reduced BUT the battle do not beging until data is retrieved by server. Thus, in case of poor connection or networking problem the application goes out-of-network state, then into networkless state and then the flags are lost if the connection count not be restored within a small time window.

RESCUING A BATTLE

Could be more complicated depending real-time data exchange with the server and the set of data which are off-line and on-line. Restoring flags of a battle that begun but not not completed allows people to shutdown the phone in order to avoid a battle lost (dumb gaming).

A BETTER WAY TO CHARGE FLAGS

A more fault tolerant way to decrease flags in exchange of a battle would “locally escrow” the flags until battle begins. Which is probably what is going on BUT with some kind of failure prone way of handshaking between app and server.

Now, let me show an example:

  1. button pression
  2. download battle data
  3. check download data for errors, error?
    3a… yes, retry at point 2
    3b… no, continue to point 4
  4. transaction flags with server, authorised?
    4a… no, retry at point 4
    4b… yes, continue to point 5
  5. decrease flag on the application
  6. pass all the data to the local battle engine

This example could be more complicated than here shown depending the app/server internals but under an abstract point of view:

  • a) remote clients are always “untrusted” also when they are trusted because they could be locally exploited or under a man-in-the-middle attack;
  • b) downloaded data has no value until they would go into the battle engine, so they should be exchange before any valuable transaction and kept under local “untrusty” escrow;
  • c) once valuable transaction (flags) would be confirmed by both sides then flags could be decreased and locally escrowed data realeased into the local battle engine

In such a way the valuable transaction would be kept atomic and thus fault tolerant while the whole transaction group do not have the need to be a monolithic one.

1 Like

Thanks for the tag, since I’m here, I’ll link an existing similar idea:

(@Kerridoc @Rook Possible Merge of Topic)

2 Likes

Thank you for merging the topic. I have seen this issue on battle and titan flags but possibly it affects any transaction like token for hero call, etc. In this former case, it would be even nasty.

1 Like

I confirm you that it happens also at the ending of the battle while collecting the final treasure and connection gets lost THEN the treasure might be lost AND the level is considered not completed!

»»super sgrunt««

At the moment, the only work around is NOT paying or not playing anything important unless we trust into network connection.

1 Like

Yes, this is definitely true. There’s a “server check” at the start of a battle, presumably to authenticate and download the battle info and a random seed. There’s also a “server check” at the end of a battle, presumably to authenticate the results, award loot, etc. You can lose server contact while you’re playing the tiles without consequences, but if you’re not on solid telecom or WiFi service it’s all too likely that the flag/energy will be lost.

This is a tricky problem to solve, however, because I can fully understand why SGG needs to authenticate on both sides of the battle. There are too many opportunities for someone to write a hack that pumps up rewards without robust checking.

1 Like

Well, unless the server check every single step of the battle, there is not any way for the server to distinguish a trustworthy app from a malicious hack. And also in this case, unless the battle is played entirely on the server but displayed on the app there is no way to trust the remote client.

AFAIK, we must esclude that the battle is played into the server otherwise loosing a connection would stop the battle BUT data would not lost.

Unfortunately, playing the battle on the server is a huge load for the server compared being played on the app AND the response times might be unacceptable for many players. These are the main reasons because the battle is played into the remote application.

Unless the items could not be traded among users or into an indipendent makert to be sold for money, then the effort of having a full-functional hack would be quite small. Quite small unless the communication were very plain and man-in-the-middle attack prone.

*** ALTERNATIVE ***

So far, the battle is played by the application with the data sent by the server. When the battle is finished, all the data battle would go to the server. Treasure should decided by the server at the end of the battle OR decided at the beginning of the battle but in such a case it stays cryptographically locked and the server would send back the key to open the treasure which otherwise would be lost.

In both of these cases it might be not a valid reason to wait for the network OR after several tries to stop application and every time it restarts try to complete the deal with the server. In any case the application should reconnect with the server at the restart.

*** BEHIND THE CURTAINS ***

What’s the problem could be behind the courtains? Obviously, there is no a single server but a large number of servers (whatever the platform exists on the cloud or it is real).

No all the server keep all the battles treasure keys but just the one that begins the transaction (and its mirror, but we might forget about such a details because redundancy is transparent also for this issue – it is clearly not a problem of fault redundancy).

The app have a lists of servers? The IP of the last server? Usually no. Why? Usually, because it exists a domain name which is resolved by DNS in few many IPs Addresses and every of this machine is a dispatcher to the back-end servers.

The probably to get the same dispatcher and the same server is quite null. Thus, the transaction could not complete unless the battle key is not stored as global information which usually is not but a peer-session information.

This for security reasons (hard to hack and exploit) and to avoid IT resources waste because a global key should be syncronised into all distributed database nodes.

On the client side the peer-session key would kept in memory to avoid the dump onto a disk. Because saving on disk sensitive information increases the chance that could be collected or corrupted by 3rd party malicious software.

Much probably, this is the reason because at the restart of the application the session is lost and thus the chance to retrieve the treasure / reward lost as well.

*** CONCLUSION ***

Is there any GENERAL solution that could keep together security with resilience (the ability to resume a previous state)? It might be.

For sure, the app could spawn a thread notification-like that would try to handle the session longer and the application go to sleep until the player decides to abort the retries and loose the transaction OR a time-out expires.

It would work? Depending on the server side ability to keep an open a session which do not respond from the other side.

Obviously, this policy would expose the system to a DOS/DDOS risk by opening sessions and leave them open forever. As we can imagine, no any open session that would not respond properly should keep open forever (some others tricks are used to even mitigate the risk and these kind of attack, but this is off-topic).

Unfortunately, with the information we have as users we cannot get into deeper of this problem nor of the solution – unless we hacking the app but in that case we would do it in such a way we would able to win everything! :joy::joy::joy:

However, the Game Editor could know how many transactions are cancelled by network problems and this could estimate which impact this issue have into the players experience.

Since Alchemy Lab is in the works, I figure this subject needs more attention. Bring your votes over here.
Click the vote button at the top! :slightly_smiling_face:

Great idea looking forward to seeing the results of this topic. I was just asking about this elsewhere and zephyr was kind enough to set this link up for me here, to peruse. Interested to see the results. High five All!:grin:

1 Like

Two losses today in raid tournament I was winning and had signal then mysteriously lost it. Love it! The second one i was slaughtering the other team. It’s not fair at all!

I agree, this would help alot! And also would be fair in war if your the one with the most power and heros when timer goes off the at your victorious rather than defeated!

I like the idea. Had been losing a number of battle due to bad connection.
Then again, on SG’s side, being able to program so is probably much harder than organizing a raid tournament.

Totally agree!
Because of these issues, I just afraid to start an important battle in a place with unstable connection. Cause I will just lose my energy for nothing.

I understand that some kinds of battle have a time limit, but there are ways to manage it. For example:

  1. If a Titan fight was interrupted, then it could be just resumed with the same remaining time.
  2. If a war fight was interrupted, then the timer will continue ticking even while disconnected. Let’s say, I attacked my opponent during 3 minutes, then I was disconnected, then I reconnected only after 1 minute. Then I’ll have 10-3-1=6 minutes (if I remember the battle limit correctly) to finish the fight. That way, my opponent won’t be locked forever and other team members will be able to attack him if I won’t re-connect at all.

Also, I’d like to remind that the game interruption could happen not only because of an unstable internet connection, but also because of switching to another app on the phone and returning back. Sometimes it’s very confusing. For example:

  1. I’m playing the game
  2. I noticed something interesting during the battle that I want to share with my friends
  3. I collapse the game and open the screen recorder app
  4. I return to the game
  5. The game got re-loaded
  6. I’m crying

This feature request is very close to be a bug report, so I hope that SG will implement that.

That’s aweful! But what about battling in war and you have 4 standing strong they have 1 hero and you run out of time and bam they get the victory!

Well, I believe that the reason for the time limit in the war battle is to ensure that the opponent will not be locked forever (and another alliance member will be able to hit him).

The idea itself is good.
But I think online games are not that easy to program.
Server client connections would have to transfer every single step.
This will be even more critical or slower.
Then the question arises whether it is still the same game.