Technical solution to eliminate desync in single-player sessions

"
Amaroid wrote:
"
qwave wrote:
"
That's why I said it massively increases complexity, it theoretically it is possible. Practically, I'm starting to agree it might be too difficult to do it in limited time, so it's a right way to go.


Yeah, I never said it wasn't theoretically possible. From what I can see, this is the only weakness of my proposal.


Well, let me repeat then what I wrote some 20 pages ago: If a legit client can perform these calculations fast enough to provide fluid gameplay, and you yourself said that the calculations by themselves are not computationally expensive (because animations etc. are), why should it be "too difficult" for a hacked client to calculate and compare dozens, if not hundreds of such calculations?


Because they are way more than dozens to compare, even just for character movement.

Anyway guys, there are no cheats in dota2 for critical strike & stuff, and its 10 players instances, there are evasion/crit/backtrack/damage/... RNG rolls all the time, AND THE GAME IS SO FLUID IT MAKES ME CRY when I play poe just after a dota2 game. So robust solutions DO exists in the industry (and they indeed have existed for some time).
I belive the "indie" way of GGG to design their gameplay, which was successful as it led them to a great game, has got them thinking that they should do the same with technical design. THIS IS WRONG. You don't re-invent the wheel when you write code. Some of the brightest coders of our generation have worked for video game companies, and have found good ways to fight cheat and bring fluid experiences to the players. Please GGG, keep thinking outside the box for the game design, but PLEASE just imitate what works for technical shit.
Chris: "Path of Exile’s economy is the most important element of the game to us".
http://www.pathofexile.com/forum/view-thread/55102
Too bad they don't see how good the ARPG element of their game is...
Last edited by SibaSt#2778 on Nov 21, 2013, 5:15:11 AM
"
I agree. GGG doesn't. If they did we wouldn't have these problems.


I hate to say it, but I think GGG uses it as an excuse. They made design decisions and now they are using statements like that to cover it up.

Even without my proposal they could make huge improvements to desync. Until Rhys or Chris or someone makes a post that says what they actually plan to do, then the most I can do is offer up suggestions like this one.

If people want to spend all day trying to shoot my work down, then the least they can do is propose better alternatives.

For the amount of 'MASTER GAME NETWORK ENGINEERS' that have responded to my proposals, we sure don't hear many alternative solutions.
Last edited by qwave#5074 on Nov 21, 2013, 5:20:06 AM
"
If the RNG is volatile enough, even 5 or 6 variations over a 1s span is enough to produce a significant advantage (e.g. crits, dodge rolls).


I would make it volatile 3-4 times /second. This is too high to be exploited by an automated game assistant without destroying the gameplaying experience, and also too low to interact with human-neuroreaction.
Roma timezone (Italy)
"
I would make it volatile 3-4 times /second. This is too high to be exploited by an automated game assistant without destroying the gameplaying experience, and also too low to interact with human-neuroreaction.


For all you know, PoE could be currently rolling the RNG 1000 times a second. From a gameplay perspective, there is no way of knowing. RNG doesn't quite work the way that some of you seem to think it does.

Rolling a number 10000 times in a row does not make gameplay or effects 'erratic'.

I have written systems before which do very simple things but internally roll a random number hundreds of times for different components / modules that are loosely coupled. The user has no idea this is happening.

For example, think of particle effects.
Last edited by qwave#5074 on Nov 21, 2013, 5:23:38 AM
Here's the documentation for Unity's ParticleSystem, notice the 'randomSeed' property:
http://docs.unity3d.com/Documentation/ScriptReference/ParticleSystem.html


Now imagine, if PoE's RNG got rerolled for each particle on the screen. That's just the beginning of what im trying to describe.

This may not be how PoE implements this sort of thing, but I do want you to realize that RNG can be rolled on things that you don't think about unless you do software development for a living.

Suddenly a bot is trying to calculate millions of permutations per 'frame'. It has to ReadProcessMemory and lock the game's state. We're talking some serious performance implications here. I have written bots before, and lemme tell ya, since they have to inject during this state, you have to lock the entire game loop.
Last edited by qwave#5074 on Nov 21, 2013, 5:29:05 AM
"

I agree. But I also think that a good developer should provide the best solution to the user. This is his work. Desync is the only serious bug in PoE. Consider also that PoE has been released.


Relevant: http://www.jwz.org/doc/worse-is-better.html. Getting something released can be more important than providing the best solution.

GGG has limited resources and we don't know what they are doing with them. Maybe they just don't have the ability to do a rework. Maybe they don't want to. We're not in any position to know that.

In my opinion GGG overvalue the features of PoE that result in the massive desync problems, and possibly underestimate how negatively it impacts the player base. Possibly they didn't anticipate the extent of the desync or the difficulty in resolving it. Possibly they noticed the problem, and just decided to get something out there rather than redesigning PoE forever until it became the ARPG version of Duke Nukem Forever.

I wonder: suppose that GGG completely changed their mind on trusting the client and decided to implement a system closer to D3 or (pick any other game that might be hackable). How long would it take them to implement and deploy these changes?

"

I would replace the first 'if' with 'since'.


I would too, but "if ... then" is such a nice way to state an argument.
IGN: SplitEpimorphism
"
I wonder: suppose that GGG completely changed their mind on trusting the client and decided to implement a system closer to D3 or (pick any other game that might be hackable).


Your posts are getting better and better, but I still am uncomfortable with how you throw around the word 'hackable' and 'hacks'. I would hardly call Diablo 3 'hackable'.

When I consider 'hacks', I consider other players gaining ->serious<- advantages. Any game is technically 'hackable', even PoE. And people can certainly build PoE bots.

However, unless the hack makes you borderline 'immortal', disrupts the economy, or allows you to do obnoxiously ridiculous things - why classify it as a hack? Because again, any 'client' is hackable. That really means nothing.

My proposal may allow a program to discern the RNG rolls, but you can't circumvent the server's validation process. You can't spawn uber items. You aren't invincible.


Diablo 1 was 'hackable'. You could one-shot anything and spawn gear. There was no server-side validation.


Path of Exile: You can currently map hack, hook the DirectX to adjust brightness/clip through objects, zoom hack, etc. You can write scripts, you can hook the game's memory and write bots which are intelligent and auto-flask, etc. So again, what do you mean by 'hacks'?
Last edited by qwave#5074 on Nov 21, 2013, 5:39:48 AM
"
qwave wrote:
"
I wonder: suppose that GGG completely changed their mind on trusting the client and decided to implement a system closer to D3 or (pick any other game that might be hackable).


Your posts are getting better and better, but I still am uncomfortable with how you throw around the word 'hackable' and 'hacks'. I would hardly call Diablo 3 'hackable'.

When I consider 'hacks', I consider other players gaining ->serious<- advantages. Any game is technically 'hackable', even PoE. And people can certainly build PoE bots.

However, unless the hack makes you borderline 'immortal', disrupts the economy, or allows you to do obnoxiously ridiculous things - why classify it as a hack? Because again, any 'client' is hackable. That really means nothing.

My proposal may allow a program to discern the RNG rolls, but you can't circumvent the server's validation process. You can't spawn uber items. You aren't invincible.


Diablo 1 was 'hackable'. You could one-shot anything and spawn gear. There was no server-side validation.


I'd like to ban the word 'hack' because it's a garbage word. I think you're also misreading the tone of what I was writing a bit, or I poorly communicated it. It's hard to indicate sarcasm in text. Maybe I should have put quotes around the "hackable" thing.

It's my opinion that the advantages that could be gotten are very small. If I had to design an ARPG I would probably use the system you describe or something similar.

You can gain a significant advantage with 1s lookahead and instant logout. Solution: remove instant logout -- it's a bad mechanic anyway.

You can gain a significant advantage if waiting 1ms changes the state of the RNG at all, in the following way:

+ Look ahead 1s
+ See incoming attack
+ Wiggle the game state in a way that would be imperceptible to the player (wait 1ms) but in such a way that re-rolls the crit roll.
+ Perform this perturbation say, 10 times. Don't do a complete search, just do a few.
+ If any do not result in a crit received, use that one.

Solution: use a less volatile RNG that isn't disturbed by small changes.

Another solution: don't make incoming crits that big a deal, so that there's little incentive to go through all that nonsense to make an "anti-crit hack" or whatever people would end up calling it.

These are really small issues compared the to the ones you just mentioned, that were the significant "hacks" in earlier generation games. I think these are acceptable tradeoffs to get rid of the desync problem.
IGN: SplitEpimorphism
"
qwave wrote:

Path of Exile: You can currently map hack, hook the DirectX to adjust brightness/clip through objects, zoom hack, etc. You can write scripts, you can hook the game's memory and write bots which are intelligent and auto-flask, etc. So again, what do you mean by 'hacks'?


Exactly! It's poorly defined, and there's no way to avoid these that you mention here.

Inevitably, whoever I am talking to thinks I'm disagreeing with them when I'm just trying to spark discussion and work out the subtleties of something :).

In this case, we can narrow down the security risks to a much smaller domain than one might expect. (mentioned above)
IGN: SplitEpimorphism
syrioforel, ive been playing MMORPGs and online games since the beginning of time, and I have yet to ever find a hack that is this elegant. Many games have implemented deterministic RNG, but spending hundreds/thousands of hours to write a hack to exploit this type of thing is completely impractical.

You might think that game hackers are such wizards that the experts can decompile the client, find memory addresses, and start injecting within minutes. The truth is, even the best game hackers in the industry have to spend hundreds of hours to study the game client's disassembled code. Every time there's a patch, they lose a huge chunk of this work. No game hacker ive ever met has the time/patience to write a hack that exploits this sort of weakness. It's just not feasible.

I know Lax (one of the most infamous/well known game hackers in the world) first-hand in real-life (he was my boss for a long while). Even he had to spend hundreds of hours to reverse engineer WoW for simple bots.

I just think it's funny how easy people think it is to hack a game. I would say that reverse engineering is one of the most difficult skills in the world to learn, up there with brain surgery (haha, funny but serious).
Last edited by qwave#5074 on Nov 21, 2013, 5:55:31 AM

Report Forum Post

Report Account:

Report Type

Additional Info