ScrotieMcB vs Desync Dev Manifesto (Massive Wall Map of Text)

People who bitch about desync need to read this thread. And so do the devs.
Luna's Blackguards - a guild of bronies - is now recruiting! If you're a fan of our favourite chromatic marshmallow equines, hit me up with an add or whisper, and I'll invite you!
IGN: HopeYouAreFireProof
"
dudiobugtron wrote:
I think you could have made the same point in the OP without calling the GGG team out as liars. You can just say their statements are incorrect. Attack the message, not the messenger.
Saying that someone lied isn't quite the same as calling someone a liar; the latter implies habituation while the former does not. The word "liar" does not appear in my post once. Still, I made a minor edit to the OP.
"
RogueMage wrote:
Spoiler
"
ScrotieMcB wrote:
...GGG is trying to use the "fill in the gaps" method not only to fill the gaps, but as an actual replacement for network communication. The server is only seeing fit to give the client the parts of the picture which it considers relevant, which leads to things like the position of a particular monster (or even the player) being ignored for seconds at a time.
http://www.pathofexile.com/forum/view-thread/507419
...why isn't the position data — I'm not talking monster frames or types of complicated things, I'm just talking basic x,y position coordinates on all players and monsters — updated with pretty much every single communication from server to client?

I think this is the missing link that needs to be filled in with actual game data rather than predictions. The single most important function of the visual display is to show you exactly where you and each of the mobs is located in real time. Unfortunately, it would be impractical to do this synchronously using the TCP-based netcode currently in place. But as you have pointed out in previous posts, this type of real-time positional data streaming could be readily implemented in a completely separate asynchronous stream of UDP packets. The huge development advantage of this approach is that it could be incorporated into the existing netcode architecture without requiring major rewrites or revisions to existing systems.

In conceptual terms, what an additional UDP system would provide is a continuous stream of real-time character and mob positional updates, sent one-way from the server to each client. The technical advantage of UDP communication is that it is completely asynchronous and runs automatically with minimal latency, requiring none of the overhead TCP uses to maintain 100% data integrity. The availability of this data stream would enable each client to update its visual display as frequently as possible with the character and mob positions sent by the server. That alone would minimize perceptual desync events with no changes required to existing server code.

The key feature of UDP that makes this strategy practical is that it places no significant communication burdens on either the server or clients. The server simply broadcasts the UDP updates into the void, without concern for when and how often the clients actually receive the packets. The client is likewise under no obligation to process any of the UDP updates. It is free to make use of the UDP stream to correct its local positional data any time it has the bandwidth to do so. The positional data is used solely to refine the client's internal game state to more closely track the server's. The UDP stream is in no way required for the proper operation of the TCP netcode on either client or server.

Compared to a complete rewrite of PoE netcode, implementing an auxiliary UDP server->client stream would entail minimal risk to GGG's development schedule and require minimal programming and testing resources. At this point in Beta development, I think it is the single most effective component that could be incorporated to improve PoE gameplay.
I think UDP would be a great idea; I've posted to that effect extensively in the past. However, another thing Diablo 3 does without having huge netcode issues? 100% TCP. Doesn't mean UDP wouldn't be a better solution (it would), but that's an optimization when we're more concerned about failures at this point.
"
I've been wary of supporting TCP and UDP mixing because I remember issues of flow control resulting in packet loss, but if this is a non-issue, I pretty much agree with all of it.
Think about this as a matter of practical reality these days: most every home router in America has cell phones using wifi which are continuously updating their data and mail using TCP, while simultaneously streaming Netflix or YouTube. You can pretty much assume a solid mix of the two protocols already exists, and whatever issues come with that.
"
tikitaki wrote:
If it had singleplayer, you could at least say something like "oh it's OK, the netcode is shitty and laggy but I'll just play offline."

But we have no offline mode.
This will never happen. Nor should it; I wouldn't want hackers gaining insights to the way the PoE servers work by reverse-engineering the single-player client and seeing how GGG handles client data. Because, when you think about it, that's what a single-player mode essentially is: putting a miniature version of the server on your personal computer.
When Stephen Colbert was killed by HYDRA's Project Insight in 2014, the comedy world lost a hero. Since his life model decoy isn't up to the task, please do not mistake my performance as political discussion. I'm just doing what Steve would have wanted.
Last edited by ScrotieMcB on Aug 24, 2013, 6:22:48 PM
"
ScrotieMcB wrote:
Think about this as a matter of practical reality these days: most every home router in America has cell phones using wifi which are continuously updating their data and mail using TCP, while simultaneously streaming Netflix or YouTube. You can pretty much assume a solid mix of the two protocols already exists, and whatever issues come with that.


Well that's a bit of a sticking point for me, I'm aiming for an ideal here. In terms of a gaming experience, I honestly can't say what mixing would be like or potential issues that could arise.

Edit:
I removed the reference to my friend since those views might be more a matter of principle, not necessarily regarding PoE.
you obviously don't understand the difference between how to write a forum thread and a novel.
This is too long, noone ever told you keep it short and simple? Noone has time to read this all.
My_Bloody_Valentine
"
Well that's a bit of a sticking point for me, I'm aiming for an ideal here. In terms of a gaming experience, I honestly can't say what mixing [TCP and UDP steams] would be like or potential issues that could arise. A very very experienced and accomplished friend of mine suggests it is a really bad idea, he also happens to have developed a UDP library with optional reliability.

There are no "ideals" in network latency minimization, just statistics, worst-case analyses, and fallback work-arounds. Likewise, there are no significant issues in "mixing" TCP and UDP streams - they are comprised of completely separate packets that don't interact in any way at all. As Scrotie pointed out, the network traffic your computer sees through its internet connection is comprised of blizzards of data packets from a limitless variety of sources, all mixed up in an endlessly churning stream. The apps running on your computer simply ignore the packets that are irrelevant, and as long as the data traffic doesn't exceed your ISP bandwidth, there are no inherent downsides in sending and receiving multiple streams of data. Compared to the amount of data in a YouTube video stream, a PoE positional data stream would be microscopic.
Last edited by RogueMage on Aug 24, 2013, 7:09:16 PM
desync is the thickest most sturdy wall you can possibly bang your head against, but if you are going to do it this is the way to do it. Ifs a fundamental aspect of the way things are done, you have to technically question the way it works and have an alternative and I think a lack of understanding of the technicals for most of us just makes it a dead issue.


the one thing that I always questioned, all be it with only the most limited understanding of such things, is the wait for the server issue. We dont want to wait for the server to update positioning because thats open to lag and hence sluggish play. Ok, this I get, I think, but we are talking about the player here right? when you move you want to move right away, not wait for the server. fine, I agree.

But why does the same situation have to govern the monsters? Surely if the monsters are constantly updated theyre only ever the size of my ping out of sync, the fact they can get to me 200ms (or whatever) before I see them get there could be counteracted with a short delay on their opening attack to match my latency.

I feel like its the monsters being out of sync more often than not that make me become out of sink when I clip them, when I attack them and theyre not where I see them. I dont feel like the monsters being slightly lagged or working on prediction really needs to effect how sluggish the control of my character feels. Its a point I really dont have the expertise to debate though.
Diablo 3 still has issues with desync, they made a shitload of gameplay compromises so that even if you were desynced you wouldn't notice. And many people had a lot of problems with rubber banding.


But that's irrelevant, because clearly GGG has been wasting all their time when the answer is right here! Thousands of hours wasted when really all they needed to do was contact scrotiemcb.


"
Septile wrote:
But that's irrelevant, because clearly GGG has been wasting all their time when the answer is right here! Thousands of hours wasted when really all they needed to do was contact scrotiemcb.
I actually hope you're being sarcastic.

I don't want to give the impression that GGG's netcode became what it is overnight, or that the problems with it were deliberate on GGG's part. What I think is a lot more likely is what happened with the graphics/FPS issues: the core of the netcode was originally made years ago, with far more limited early-beta purposes in mind, and things just getting patched on and patched on, allowing for more content without really streamlining the system. Considering the pressure to get that initial beta out in the first place, and subsequent content thereafter, I would never claim I could have done better myself.

What I think I could have done better is more accurately present some of the information in the Manifesto — a writing task, not a netcode task. To be fair to Chris, I'm pretty sure he had far less time to dedicate to the task, which makes such inaccuracies forgiveable at the time of initial writing. Failing to correct the Manifesto since is a slightly different matter; that's why God invented the edit button.

This game is still in beta, so it's not unforgiveable for PoE's netcode to be in the condition it's in, it's actually quite understandable. However, the current state of desync is unacceptable for full release, by most any sane standard. We're still ahead of the deadline here.
When Stephen Colbert was killed by HYDRA's Project Insight in 2014, the comedy world lost a hero. Since his life model decoy isn't up to the task, please do not mistake my performance as political discussion. I'm just doing what Steve would have wanted.
Last edited by ScrotieMcB on Aug 24, 2013, 8:00:05 PM
I can understand the whole prediction client side and assumption of what the server will say but I dont see why combat does not include the position of monsters and the players during confirmed hits. Right now they do an OOS whenever your stunned. It shouldnt have to be that complicated. The server determines that monster A at coordinate X,Y , confirmed hit player P at coordinate X,Y is all that is really needed more often. This should sync player location as well as periodic monster location removing the need for a full OOS upon stun every time. The server should still send full sync information periodically tho.


I guess currently since the client already has the map information, GGG allows the client to make predictions. In a full server side setup like D3s, every movement has to be accompanied by map and monster information. Nothing moves or is revealed unless the server says so. I wish I knew how much of a difference GGG vs. Blizzards set up made a difference in server side and server bandwith requirements.
IGN: DeathIsMyBestFriend, Illirianah
"
Freeslana wrote:
You're so right that Diablo3 with its system, although it's a shitty ARPG, felt like it had really fluent combat with absolutely no desync.


Diablo 3 combat is terrible. Hits register at the start of the combat animation, meaning you can't play as fluidly and reactively to dodge attacks using gaming skill. When fighting monsters with slower animations (i.e. big melee attacks), you can be at the opposite end of the screen by the time the animation for the hit contacts your character visually, but still get hit because you were in range when the attack started. If you're not noticing what I would call the complete destruction of active combat fluidity, then you're not playing ARPGs in a way that utilizes twitch gameplay.

There are many combat mechanic compromises/simplifications in D3. I suspect that it wasn't netcode efficiency that resulted in Diablo 3 being designed in a way to prevent/limit the viability of player skill for damage avoidance. Rather, I suspect an intent to facilitate heightened gear-check mechanics, to limit how far players could progress using skill, reaction time, knowledge, and situational awareness, to foster frustration and incentivize RMAH transactions.

If PoE copied D3's netcode (and resulting combat mechanics), I would enjoy playing it much less.
Never underestimate what the mod community can do for PoE if you sell an offline client.
Last edited by Vhlad on Aug 24, 2013, 9:08:11 PM

Report Forum Post

Report Account:

Report Type

Additional Info