Client-server Action Synchronisation
TLDR: D3 works. But PoE has to go the other way.
| |
If a dev can read what I said in the last 2 pages, and answer the question "Why not D3", it'd be great.
| |
I can answer that for you.
D3 is un-secure. That is, apparently (according to GGG story) D3 relies on client information a lot and is vulnerable to hacking. In POE, not much is trusted from the client and thus desync will occur when the server is "more correct" than the client on position. Unfortunately, there's a number of issues here. The least of which is that sending position packets should be relatively simple and not involve much bandwidth. Failing that though (due to possible engine limitations), I'd prioritize my game's gameplay over internet videogame security anytime. This isn't the pentagon, we can live with some idiot hackers ruining the game for themselves and just refuse to take their stuff if we want to play the real game. This is a self-correcting problem and GGG wants to make it look like nuclear bombs will fall on new york if we don't secure the game. my evasion is so high i only insta rip sometimes
----- Bug Fixes: People were using cyclone for actual melee builds, so we nerfed it and made blade vortex. Also, we went ahead and made cyclone great for CoC casters while we were at it. |
|
" Really? (Really?) | |
I'm responding directly to the opening post. I didn't bother to read anything in between, so some of this stuff might've been touched on without my knowledge.
Now, when you implement a system and then claim it works. And then claim you need a lot of patching (or whatever you wish to call it) to make it work well for the players... You obviously have a system that doesn't. So rather than taking that lesson and investigating in new and maybe even unused methods, you decide to come in here and justify your 'mistake' and claim you will need to spend a lot more time to actually make it work up to standards. In short, the time you could be spending including new features, porting the game to platforms such as Mac, Linux (steam OS) or fixing other things that are also broken; you are wasting on hunting down desync issues. And as we all know, every bug patched, creates 2 more bugs, so what you're doing is not helping. It's not just the rubberbanding that occurs LONG after a problem has been detected, for example: players can be standing in relative safety for 10 seconds and then get rubberbanded into the middle of the pack, our spells aren't hitting where we target them and monsters standing in the AoEs are not being hurt. We as players are doing quite a number of things now in addition to your patching to avoid getting desynced, but it still happens and even the best players die to it. If server is going to hold the primary gamestate it is imperative that clients stay up to date on this gamestate. You cannot have a client and a server coming to a different conclusion at random AND have them run their course for over 10 seconds because it might sort itself out in the end; because most of the time it results in players getting damaged and players dying. Secondly, your MOBA and RTS examples are based on a peer to peer system. Both clients have to handshake on the gamestate and they have to agree on every single frame, that is why there's no prediction and why there's inherent lag if the game is hosted too far away. Fightinggames are no different. But if these clients disagree on gamestate, you will get a desync you cannot recover from. What you CAN do however is work off of this synchronous state, this is the oldest trick in the book. It's used in FPS (quake stuff) where player models are updated for 20/30fps by the server and the client works off of that. This isn't even rocket science: you receive server state, you extrapolate it by the number of frames required applying the player's actions asif they were successful and you render it. If the server and client disagree, the player will know the exact frame it happens and can take action immediately. Now I know that having 300 or more monsters on the map isn't going to help with the bandwidth, but there's a trick there. As long as the server and client agree, that monster will not need an update as the client AI will produce the same result. This is just like how in RTS and fightinggames only inputs are sent and the games are expected to come up with the same result (even if there's a randomizer at work; look at Guilty Gear's Faust who's item throws have NEVER caused a desync). Then there's monster range, not every monster is visible to the player, so most of those monsters can be disregarded entirely. So what you end up with is about 20 monsters in a player's view, who might need an update at a 5-10fps rate. When the server is run at 30fps, you only have to send 7 monsters per frame. The system I posted is almost sure to guarantee synchronized state while allowing for the client to keep the experience relatively smooth for players. The above issues I mentioned with your system are happening to me while I only have 10ms lag to your EU server which reiterates that the system is not beneficial to me at all. Please start with a good base and develop off of that. Fear the army of dots:
.............................................................................................................................. .............................................................................................................................. |
|
" This If GGG dont do something about it, the game will literally become a ghost, the playerbase is already really reduced, my friend list is full, i guees the limit is 100, 2 months ago i used to have 15-20 people online (an already low number considering that all my friends were over level at least 80) but for the last 2 weeks this number felt to 8-12. If they dont fix desync and other stuff, like insanely low drop rates, will be nothing left to apply the security mentioned abouve |
|
I understand OP points, but I don't think entire focus on security is a great idea.
There is stuff, which supposed to be secure - bank accounts, variour government and military things. But for game playability is much more important than security. It is not even competitive game where champions win some material rewards. And yes, game design. Designing "extra fast" monster while knowing, that he will be walking desync or skills like whirling blades, which desync you half of time. Basically you say, that you prevent players from cheating the game, ok. But when players die, because they think they are safe, while "in fact" they are in room with bunch of monsters and invader boss, it is game who cheats. Path of Exile is cheater, punish him. |
|
" It was more of a rhetorical answer, if you catch my drift. But yes, really :P my evasion is so high i only insta rip sometimes
----- Bug Fixes: People were using cyclone for actual melee builds, so we nerfed it and made blade vortex. Also, we went ahead and made cyclone great for CoC casters while we were at it. |
|
What about LoL or DOTA? Or Starcraft?
They don't have cheats, they don't have desyncs, WHAT HAPPEN | |
I find this thread absolutely hilarious. You need to write a college thesis in order to explain why you have desync in your game? Do you think newcomers are going to care why their character is being teleported around the screen 10 times a minute, often into middle of a mob of monsters?
Hell fucking no. All they're going to know is that when they play other games like Warcraft III, Starcraft, Team Fortress 2, Battlefield, Dota 2, etc -- where there are more things happening onscreen -- there are absolutely no desync issues at all. Yet, when they play PoE, desync is something that happens on a minutely basis. Yeah, not a daily basis, not an hourly basis. A minutely basis. Here's an example of some Starcraft 2 gameplay where you can asses whether your precious Path of Exile is more "complicated" and justifiably crammed full of shitty desync. ✮ in-game @FTMFW ✮ twitch.tv/RRTSON ✮ [Shop] http://www.pathofexile.com/forum/view-thread/909223 ✮ [Build of the Week] http://www.pathofexile.com/forum/view-thread/1034503 Last edited by rrtson#7791 on May 20, 2014, 2:39:07 AM
|
|