GGG actively avoids good solutions to desynchronization.
Desynchronization is most frequently made noticeable by the following occurances, each which build upon each other. This list of game mechanics is in the order of what most strongly impacts desynch, so issues near the top are MORE harmful than issues near the bottom.
Moving Quickly (Snakes and mobs with increased move speed are more likely to desynch than a slow zombie.) This is why games such as Torchlight and Diablo 3 do not permit characters to move very quickly for long periods of time. -Stun: Compacted by quick movement speed. If I had a movement speed of an impossibly slow -60%, then when I got stunned, I would not be very far away from the enemy before client side I was stunned as well. However, many of us are moving at +25-50% movement speed. If a mob stuns us, we can get up to a quarter of a screen away if our latency is even 150 ms. This means that while stun -is- a contributor to desynch, it's problem is generally only as bad as your movement speed + latency permits it to be. -Accuracy/Evasion: If an enemy misses me client side, than I can continue to freely move on my side, until the server than recognizes I actually did not dodge, and causes me to be stunned again. -Freezing: As the results of a freeze is that you're no longer able to move, the total distance inbetween your client and server side position is far less than a stun. This is below accuracy/evasion because this is primarily only an issue when you are frozen server side, from a blow you dodged/blocked client side. As I said, these all build upon one another, and make things worse as they go down the line, the biggest thing they all share in common is communication, or lack there-of. Of course anyone that understands what desynchronization is, understood that much, so I'll proceed to explain the solutions possible to each, and why by their own admittance, GGG is avoiding effective solutions. ::Movement speed:: This one is simple. If things move slower, the system has an easier time predicting everything along the path. If you magically cut the speed of the game in half, in every single way, than desynch would become far less frequent. This tends to upset players whom want a faster moving experience, but just as a car takes turns better at 30 than 60, desynch is far less is things move slower. Suggestions for resolving that could include lowering the base movement speed of both characters and NPC's by 10-25%, and capping movement speed at +40%, or maybe 50% if your ambitious. If you've cut base movement speed by 25%, than a +50% movement speed would be what is currently +12% movement speed. I often start experiencing large amounts of desynch at +15-25% movement speed. Reducing speed across the board is a time tested method of reducing desynchronization in these kinds of games. I'm unsure why this solution has not been considered prior to now. ::Stun:: Anyone that's ever taken Unwavering Stance or has Eye of Chayula equipped, I'd like to request that (unless they are on hardcore) they head into a dungeon after removing the Eye or unspeccing out of US, and seeing how much more frequent desynchronization becomes. For a test I'd suggest running to the back of the merciless catacombs, without killing a lot of enemies. With stun immunity, you'll probably make it. Without it, you'll rubberband behind clusters of enemies before you even make it to the second room: that's a promise. Stun is made worse by movement speed, as the faster you move, the more likely that you'll be a long distance away, client side, from where you were stopped server side by a stun. The two simplest solutions to this each have downsides. You can either remove stun, which GGG is avoiding (despite being a good solution), or you can somewhat viciously re-synch the client whenever it gets stunned. This is both jarring to the player (whom will experience this as a harsh rubberbanding if they had high movement speed), and a bit taxing on the server load. Even if movement speed is reduced, stun will remain the most noticable cause of desynchronization in the game. Displacement attacks, such as the hook of brutus, have a built in stun mechanic where they drag you towards the boss. This attack is extremely in need of vicious amounts of automatic resynch. which is why we see people claiming the brutus fight causes both them and the boss to teleport around like crazy Even if movement speed is reduced, Stun needs to be addressed, as it's problems are only less exaggerated if movement speed is lowered. What makes stun VERY bad is that aometimes the server never even communicates to the player that they've been stunned. I've been 3-4 rooms back a few times today, getting stunlocked by 2 enemies, and my client never figured out I was being stunned, so I was freely permitted to keep running away from the mobs. If my client experienced stun, even without rubber banding me back towards the enemies, it would cause me to not get as far away from enemies as quickly as I can. ::Accuracy, Evasion, and Block:: When I attack a mob, the server communicates to me if I hit it, missed, stunned, etc. The same does not seem to be the case when a mob hits me. I once took 75% of my HP in a single hit, server side, but since my client appears to think I dodged, I experienced no stun and continued to run. I was killed shortly afterward by desynch (Rip level 49 HC facebreaker). This is an incredibly rare, fringe case, however. If stun caused you to rubberband, and if movement speed was lower, the impact of this issue would be made nearly non-existant. ::Freezing:: As above, if a melee mob freezes me, but I dodged the blow on my client, I am occasionally permitted to continue moving, despite being "frozen" on the server. The same things as stun could be applied here to fix that. The issues above can be resolved with more vicious rubberbanding, and could be further remedied by lower movement speed (anyone remember the D3 GM's stating "if we made movement speed much faster you would frequently rubberband"?) Some issues could also be resolved by trusting the client just a bit, so that when we're massively desynched, we can continue to fight the mobs we're currently fending off. Currently if I'm at X-500, Y20, surrounded by mobs, and I'm striking them at X-470, Y15, I will do no damage to them, even with Resolute Technique, and an AoE attack that would hit them if my client was appropriately synched. If the player character is hitting mobs that are nearby them client side, consider trusting us a little bit and permitting our attacks to hit mobs anyway. Sometimes introducing the risk of exploits is worth the QA it gives the playerbase. When I read your manifesto on desynch. The impression I get from it is "We recognize and see all the issues that cause desynchronization, but rather than tackle it in a time tested method, we're going to do this the hard way, while you suffer." Something is going to have to give, or your desynch will never drastically improve. This thread has been automatically archived. Replies are disabled.
|
|
" Have you seen how fast a DH is in D3, when specced with vault/tumble/tactical advantage/backup plan, and geared with lots of discipline gear? (Apparently not). However, and to wit: you can burst through an entire dungeon practically teleporting, when specced like this. I should know! I have a high Paragon level DH so specced. So no, high movement speed is not a real cause of these problems. And citing Torchlight. Really. That's a single player game. No that's not why they have you move the rate you do. The game works perfectly well if you run at 5X+ the base speeds. Get any runspeed/cheat gear and find out yourself. I have. It's true. In any case, you are right about the general big picture design of POE making it particularly hard to get sync right. This was a design decision so we could have those features, however. Not "actively avoiding good solutions to desync." That characterization is rather judgmental. I think you're rigth about them being a bit stubborn, however, about trusting the client "a bit," and what not. While speed hacking is a risk, I'd go so far to say that a bit of speed hacking would cause far less damage to the game than desync does. |
|
On Diablo 3 I played both a Demon Hunter and a Monk into late inferno (Act 2 and 3) on hardcore. While the movement speed boost was up above 55% on each of these characters, nearly permanently, the average distance traveled per second is about equivelent to how fast I currently move with +25% movement speed on this game. I experience mild desynch on Diablo 3 when I play my demon hunter, but the lack of stun makes it a lot more difficult to notice, as does the lack of path finding (The game follows my mouse, rather than the shortest route). In diablo 3 the largest cause of mild desynch is stun, which is rare and only caused by certain monster actions, since for the most part D3 does not use stun. Whenever I do get stunned by a Seige Beast, or the Butcher, etc, my game instantly teleports me (watch a recording in slow motion and you'll see a mild change in character location when this happens), and makes certain i am where i really am on my client.
You move noticable slower in D3 with +55% movement speed, which is only achievable with setups explicitely designed for speed, than we move with +20% movement speed in this game. I do believe movement speed formula's could use re-adjustment in this game, as they are a contribution to desynch, and all issues are compacted by movement speed. Server side communication with client needs improvement, and movement speed makes the issues with such mis-communication more noticable. I understand Torchlight is generally a single player game, but Torchlight also trusts the client, to an extreme amount, so even with hack gear, desynch is very rarely bad. While giving too much trust to the client is a bad thing, giving none at all only impedes progress greatly, as the client and the server work best when they aren't actively fighting each other. |
|
I've learned how to deal with the desync where my char runs off into a dangerous room server side because the mob was in my room client side. The problem I'm having now is when i try to hit somthing (melee) and the one I targeted must be on the other side of the pack because I'm not hitting anything. This is not good for builds that survive on life leech. Mobs should be more organised as in give the pack some kind of formation so that way they stay the same on both server and client. When I say formation I mean like the V that ducks fly in but in different shapes because not all things are ducks ;-)
Berek's Grip Ice Spear
http://www.pathofexile.com/forum/view-thread/780707 Budget Magicfind and/or Hardcore Flame Totem http://www.pathofexile.com/forum/view-thread/1211543 |
|
" People complain a lot about the speed of PoE already. I don't think that a sweeping slowdown is a good idea. Helpful in preventing desync or not. My suggestion as an alternative would be to limit the maximum speed of enemies a bit more. For slow characters and enemies the speed isn't a problem, but ( as you said ) the faster enemies are. The faster enemies, and the characters that have huge speed can cause issues. Maybe scaling down the % of movement speed increase back a bit would suffice, you think? Imagine how slow the game would feel to early gamers, or those just starting if the game, as a whole, was made slower. " Yes, Kole and Brutus can be sync nightmares because of this. I'm just not sure that removing stun entirely is a great idea...I'd like to hope that there is a fix, rather than just avoiding a game mechanic like this. " While I do think that would help, I worry about how such a 'trust' might be exploited. Is it better to open up a bit and patch up exploits, or do what you can to worth with the system in place and avoid exploits? " I like to think that desync is taken very seriously by GGG, and that the efforts to reduce desync issues are done to the best of their abilities, and for the benefit of the player. I don't see a lot in the manifesto that they are trying to make it hard on themselves and are willing to let us suffer. On the contrary, it seems that GGG hears the player base loud and clear when they complain about something in the game... "I would have listened... I would have understood!" - Scion
Have you removed Asus ROG/GameFirst yet? |
|
Article: TCP and UDP Differences
Right now the game uses TCP for everything. And for commands that is entirely appropriate; it's important that the server know that you clicked, and you don't want that information getting lost in transport. However, the game should use UDP for positioning. In essence, the game would be streaming you what your current location is on the server. If the current position of a player or a monster is lost, that's fine; by the time it is rerouted back, it will be out-of-sync anyway. Just like with video streaming, where the commands (play, pause, move to a different position in the video) are sent via TCP and the content itself is delivered with UDP, PoE should use a combination of the two protocols to manage the gameplay experience with a minimum of desync. However, GGG's not alone here; Blizzard only uses TCP for Diablo 3 as well. I think the OP does a decent, if perhaps exaggerated, job of explaining why that might work for other games, but not as well for PoE. Where OP fails is in an overly negative perspective; just because mechanics provide synchronization challenges does not mean we should abandon them at the first sign of trouble. Although OP is totally wrong about the "how," I am afraid that his thread title is still accurate: this UDP suggestion isn't new, and the netcode is still entirely TCP focused. It's a lot of work, but a dual-protocol overhaul is all but required. 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#2697 on Jun 11, 2013, 3:27:22 PM
|
|
Died again in an another "re-sync" with my groundslam marauder basically i got teleported IN the pack of mobs while i did NOT gone IN before.
I was heavy striking a mob fleeing away IN the direction of pack but my client wasnt updated properly/fast enough; had like 2 seconds lag, resync, and dead. Only had ~15% total move speed. path of alt+f4 ;-( |
|
" That's correct, the opposing suggestion of scaling down %movement speed increases is likely the more reasonable suggestion, though I'd like to note, the problem isn't that the game plays too slow, it's that the players are too impatient. No matter how fast players are moving, they frequently complain at how slow they are in an ARPG. " I completely agree, and I know GGG also does, because it's pretty much written in your manifesto. They wish to keep stun as a mechanic, which means the other solution of harsh rubberbanding is the other immediately alternive. " It is better to have a compromised system than a broken one. " Your correct, they hear us, but this doesn't change if their solutions or Resolutions are badly thought out. They have stated they do not wish to do any of the solutions or shortcuts that ARPG's usually take to get around this issue, and rather they pursue other possible solutions, where their own systems and netcode work against them. They are trying to smash a square peg in a round hole, and while they might manage to make it fit eventually, it will never be as clean as it could be if they either used better communication (netcode hybridization), or used one of the many shortcuts and solutions other ARPG's use. If shortcuts are not used, though, then the server needs to better commicate the occurances. If Stun isn't removed (and I don't want it removed, just to be clear on that), than the server needs to more harshly communicate stuns, and move us to where we were stunned. If characters and mobs are moving too fast, leagues like Onslaught, first off, are a major mistake to make (and I'm somewhat insulted they've made a four month turbo for HC, when it's obvious the intent was for most players whom do HC to migrate to it.), and character movement speed, at least from affixes and passive tree boosts, needs to be more difficult to stack to such large amounts. I don't use Quicksilver flasks because it's desynch in a bottle, frankly. Most importantly we need to keep in mind how everything works together. Cutting movement speed down by 25% wouldn't resolve desynch on it's own, nor would removing stun mechanics. the games mechanics might directly fight against synchronization, but both communication inbetween server and client, and refinement towards the way it handles Desynch attracting functions like Stun must be in place. I believe GGG isn't taking the appropriate steps to resolve desynchronization, but this does not mean that I believe they are ignoring it. I know they are taking every step they think is a good one, to resolve the issue, and only hope that despite my somewhat hostile tone, both they, and the playerbase, understand I only wish to see the game grow = ) |
|
" Thanks ScrotieMcB, that's a decisive point about PoE's architecture that I wasn't aware of. I've done some work in MPEG4 streaming and I've seen the difference myself that UDP makes over TCP. In fact, I'm surprised the game works as well as it does, considering the TCP overhead it has to plow through. To my mind, this information completely settles the PoE desync debate. Once the game is converted to a hybrid TCP/UDP architecture, perceptible desync will become a rare occurance, and little or no further netcode optimization will be necessary. |
|
What they need to do is to loosen up on the server's version of reality a bit... give it more of the "I disagree with the client, but can live with it" attitude. More trust in the client with regards to positioning and movement would be a good change without sacrificing integrity of the game.
|
|