Technical solution to eliminate desync in single-player sessions
" How long is your limit? You can search a LOT of permutations in a single second... |
|
" Your user actions would be logged and uploaded; if that can be done efficiently enough as to not be solved (***) (i.e. very small time window, very smooth updating) then the only way to act as if you kited everything perfectly would be to actually kite everything perfectly. The server would do it's own parallel sim with your actions put in at the times logged, and if the results don't match you get banned. (***) I still think this part is a bit questionable. IGN: SplitEpimorphism
|
|
" If you don't send anything at all, you will be recognized as 'disconnected', the server can finish the last 5 seconds of the simulation and identify that your character has died. The server should always take over and perform simulations if you disconnect. " Even if you search all of the permutations, how many different actions could you take to significantly impact the result? It would be impossible to 'play' the game while using this type of software. Only a bot could take advantage of this, and even if the bot finds an 'optimal permutation' it could still easily result in it's death. This is because it's very difficult to write an intelligent bot with a neural network that evaluate so much data per second. You'll find that 99% of botting software out there is extremely primitive. Last edited by qwave#5074 on Nov 18, 2013, 1:56:24 AM
|
|
" At best you get a couple billion. Depending on the context that's not that many :). IGN: SplitEpimorphism
|
|
" Yeah, but then your bot needs to evaluate each next permutation as a result of each action. Consumer hardware is not sophisticated enough to make split-second decisions like this. You would need an extremely powerful botnet to calculate each optimal action, and at this point we're splitting hairs. Eliminating lag and desync would be a huge win in all regards. Last edited by qwave#5074 on Nov 18, 2013, 2:00:59 AM
|
|
" Yeah, that's where things are tricky. You can't really guarantee a smaller window than about a second where a good piece of software might be able to predict the future, or solve for the "best" player actions. Subtracting away the time required to compute and search over outcomes, the window for exploitation becomes even smaller. How much can be done in that window, if anything? Are these exploits things that bots can effectively do anyway? That said, this is definitely a way of preventing the really bad hacks, like teleporting all over the map, duping items, or auto-killing every monster you run into. IGN: SplitEpimorphism Last edited by syrioforel#7028 on Nov 18, 2013, 2:01:54 AM
|
|
Syrioforel: Exactly, these issues are not something that a player could take advantage of, and a bot does not have the computing power to evaluate that many conditions in less than a second. Even if it did find an optimal set (assuming you want to spend ten thousands of dollars on computing hardware), it would glean very little advantage.
I really feel that this is a great solution to the desync/lag issues. Now if only a tech-savy GGGer would respond and let us know if this is feasible given the current state of the game's architecture. ;-) Last edited by qwave#5074 on Nov 18, 2013, 2:03:47 AM
|
|
" The :) wasn't sarcastic. A couple billion is very small when you have to perform an exhaustive search. However, if you're just doing trial and error until you can avoid a crit, or something, it might not be. It depends on how the RNG internal state is maintained. IGN: SplitEpimorphism
|
|
" To 'avoid' a crit, you would have to roll yourself back 500 milliseconds and re-evaluate all permutations that do not result in a crit. I believe this is virtually impossible. It would take modern computers a few seconds just to perform a single attack. And the 'optimal solution' could easily result in your character's death as a result of the next set of permutations. In other words, 'avoiding that crit' may have gotten your character surrounded by deadlier mobs. Last edited by qwave#5074 on Nov 18, 2013, 2:06:32 AM
|
|
" Crit chance is usually pretty small, I think if you just tried one or two variants you could improve your chances significantly. If, say, the RNG state were modified whenever a character moved anywhere, you could try adding a couple of superfluous move commands, and hope you don't get crit this time. If the RNG state were modified by attacks only, then you could have something predict if the next attack will be a crit or not. If the RNG state is easy to modify, you can make a small change to get a second roll on whether or not you'll receive a crit. If it is hard to modify, you can predict whether or not you will receive a crit. Both are a cause for concern. IGN: SplitEpimorphism
|
|