Technical solution to eliminate desync in single-player sessions
" I don't need powerful software or luck. I delay my packets by the maximum amount possible, easily observed because it will be just below the point at which the server starts sending me large amounts of packets since it's now simulating. If, in that delay, I die then I delete all the packets that I'm caching. I send a single packet of me using Lightning Warp ( linked with Faster Casting and Reduced Duration ) or Leap Slam ( with Faster Attacks ) to a position that's in range, in LoS and as far away from what's killing me as possible. A position either obtained from recording my own previous positions or, more effectively and probably easier, from the wireframe minimap ( easily interpreted to a LoS map due to it's wireframe nature ). I follow that packet up with a single packet of me using my most powerful health potion and then I interrupt the connection. I'm now as far away from the boss as possible, with a new injection of health waiting for the logoff timer to expire. Which can't be very long at all or you'd be disadvantaging legit players. I may still die, but that's not based on luck but rather on the terrain and what's killing me. With a bit more development time for such a hack it's not hard to develop more strategies to deal with different types of terrain and enemies. Certainly you wouldn't achieve 100% death prevention. But any percentage above 0 is enough to beat your system and, for competitive players, make hacking a requirement to stay competitive. Not to mention that it wouldn't be detectable except for those that die often enough for a pattern to emerge, for all others it's just normal data. Running away before logging out isn't some weird response to near-death situations after all. My vision for a better PoE: http://www.pathofexile.com/forum/view-thread/863780
|
|
" Wrong, cryptography is not only useful for preventing attacks. It has hundreds of uses. In this case, I would be using it similar to how bitcoins are mined. It is there to make it harder to brute-force seed permutations. Last edited by qwave#5074 on Nov 18, 2013, 5:43:20 AM
|
|
" Lets assume 1 second is the maximum possible. And again, you would need extremely elegant software to not only hook the network loop, but also to intercept and insert packets into the buffer. Expert reverse engineers can pull this off of course, but this is not child's play. " You are making the assumption that you've died at the END of the the timed threshhold. What happens if you die 100 milliseconds after the last packet you sent? Your assumptions are only valid if you die near the end of the next packet. Depending on the casting time of your escape skill, there is a very small window for survival. I would also like to mention that any sort of automated bot system that does this is not going to be intelligent enough to even place you in a new safe location. Spatial recognition in this manner is complicated and will further reduce the likelyhood of survival. Yes, you could survive maybe 10% of deaths using this hack, but to be honest players are going to survive 1000% more without desync killing thing. I just think it's ironic that you discuss using hacks to save your life when in reality if you were to play the game without desync you will be dying 100x less than before. =) |
|
| |
ungalunga: That's awesome!! It looks like you had the exact same idea! It's unfortunate that it didn't receive much feedback. If anything, I think it further proves that this is an extremely valid proposal. I am hoping this gets enough attention to at least receive a response from GGG on the feasibility given their current architecture.
I will update the main post with your link/statement. Last edited by qwave#5074 on Nov 18, 2013, 5:57:00 AM
|
|
Im sure GGG is aware about desync, it impossible to play this game with something like 200ms, using a quicksilver flask make you desync, even Heavy Strike make you desync...
The real problem is, this is how the engine was made, maybe that was a bad choice but it will take a huge amount of work and time to change this. | |
" " This is a possibility. However, I work in a development team with around 10 other developers, and there are many times that we make breakthroughs in our software that none of us had thought of in the past. Even though im sure GGG has some of the brightest minds in the industry, there is still a possibility that they may not have considered every conceivable solution. I have read all of their posts in the past regarding desync, and none of the posts have discussed this particular solution to the problem. Last edited by qwave#5074 on Nov 18, 2013, 6:03:06 AM
|
|
This is probably the best described and thought out suggestion to reduce desync.
Overall I like it. There is the question of implementation cost. But then again, other solutions might not be any cheaper. Another question is the balancing of the snapshot intervals - if too low, it adds on data traffic and latency has higher effect, if too big, more room for hacks by calculating favorable outcomes. Regarding the not sending the last snapshot when you die, its not a big problem. The server just plays out one snapshot after the last one it got as if you made no action. Sure, sometimes that might actually save you, but that's not given. Sometimes it will also mean that you might die on disconnect, as the server wont be able to tell the difference and still play out one more snapshot, but I think that's an acceptable risk. |
|
" I'm not delaying packets in bursts of a second. I'm delaying each and every packet a second. The server is receiving a constant stream of packets each a single second late. Exactly as would've been the case if I had 1000ms ping. And I don't need any intelligent system. I have my location. I have the enemy's location. I have the minimap, which is a freaking wireframe. Picking a faraway location that's as safe as possible is trivial. It won't ever be 100% safe but I'm not looking for that, I'm just looking at anything that's safer than letting the packets go as they are ( which is guaranteed to kill me ). And it doesn't matter if it takes an expert to make this hack. Once it's made it's easily distributed to non-experts. If it prevents even 10% of deaths anyone wanting to compete in the ladders or play on hardcore will have serious incentive to use it. That's the problem. You're suggesting a system that allows and incentivizes the use of hacks. Which is contrary to the point of your system in the first place, which is to prevent hacks. If you just want to get rid of desync then just run it completely locally, no desync. But that's not what you're suggesting, you're presenting it as some magically cheat-proof system. Which it isn't. Which it won't ever be. My vision for a better PoE: http://www.pathofexile.com/forum/view-thread/863780
|
|
" This is exactly the same thing. The only problem with a completely offline mode is that you can calculate the entire instance gameplay, and this can leads to cheat by repeating the simulation several times until desired result is achieved. Furthermore you cannot handle loot while offline. A partial solution is send an rng each x seconds, it would blinds the bot with a very limited time window. With a little rng-seed buffer it would allow to keep synced anyway. I'm pretty sure GGG knows about this solution. The only problem is that they need to entirely redesign and rewrite the core of the game, and they are worried that a single mistake would destroy the economy. Roma timezone (Italy)
|
|