Out Of Sync...
#161
Posted 22 April 2013 - 06:23 PM
holy ****.
#162
Posted 22 April 2013 - 07:23 PM
Same deal...out of sync. Can move, fire with no issue but suddenly told I'm OOB and destroyed. Delayed chat, ppl see me as running into a wall, etc.
Glad it's being looked into, but weird how it occurred, as I was playing earlier.
I DID update my avast av software. When re-install completes, I will see if that fixed it, if not, will check and see if avast is doing anything funky, otherwise, I'll await Karl's hotfix.
#163
Posted 22 April 2013 - 07:38 PM
-Extremely delayed zoom ('z' has no apparent effect)
-Extremely delayed targeting ('r' has no apparent effect)
-Can run around freely, but other mechs seem to oddly walk through you, and weapon hits on screen result in zero damage
-Enemy team does not see you (likely because you are elsewhere on the map according to the server)
This is unplayable, and needs to be addressed immediately by PGI.
#164
Posted 22 April 2013 - 07:41 PM
#165
Posted 22 April 2013 - 07:43 PM
Karl Berg, on 22 April 2013 - 01:38 PM, said:
So, are these network optimizations the reason we've seen the slight warping, sudden re-orientation, "getting bumped but no mech near you" effect, etc during normal game play?
Edited by K o i l, 22 April 2013 - 07:43 PM.
#166
Posted 22 April 2013 - 08:08 PM
#167
Posted 22 April 2013 - 10:01 PM
#168
Posted 23 April 2013 - 03:39 AM
p00k, on 22 April 2013 - 06:16 PM, said:
I FRAPed this occuring: http://mwomercs.com/...ost__p__2280128
#169
Posted 23 April 2013 - 03:56 AM
#170
Posted 23 April 2013 - 04:10 AM
#171
Posted 23 April 2013 - 04:37 AM
Edited by pesco, 23 April 2013 - 04:38 AM.
#172
Posted 23 April 2013 - 07:19 AM
Thank you.
#173
Posted 23 April 2013 - 08:01 AM
I was on vacation last week, and logged in last night, and patched. When done with patching I joined a group and dropped into an 8 man. I noticed my zoom was delayed, advanced zoom didn't work at all. I moved into position fired on mechs with no red reticle confirmation of hits. Then noticed the enemy team didn't see me. At the end of the match my mech exploded part by part, while I was not being fired on. And it showed I had done zero dammage.
Based on what I was seeing, it was as if anything that required the server to receive data from me and respond with an acknowlegement was not working. Being a network engineer, I think I know what is broken.
You introduced a compression system, which streams some info into a buffer and then compresses it, and sends it to the server. The server receives these packets in order, and decompresses them. The decompression key may be in a seperate packet, and if the data packet arrives before the key the server can't plug that data into the stream to process it, so it is discarded. Some internet providers between my location and your server have multple links with various levels of load, so packets get load balanced over one link or the other an then sent. They arrive at the server out of order. You have to implement net code that has a 100-150 ms buffer, to allow for packets that arrive out of order to be re-ordered. You also have to have the compression key in every packet so that a single dropped or out of order packet doesn't mean a huge amount of input data is dropped or un-usable.
In addition to those changes listed here, you will also need to implement a max segment size for your data packets. It isn't always the case that packets will be able to grow up to a full 1500 bytes. You should limit your packet sizes to 900 bytes to be ultra safe. You might even have a netcode optimizer that runs at the start of MWO which tests the connection to the server and multi-pathing, as well as max segment size to optmize the client side data sending. In that way each client will be optimized for its current connection, clients with low latency and no packet loss or multi-pathing can use the best solution, and those with high latency and packet loss can use a less optimized approach.
Edited by Rixsaw, 23 April 2013 - 08:07 AM.
#175
Posted 23 April 2013 - 08:33 AM
#176
Posted 23 April 2013 - 09:02 AM
I find it odd that it is like a roving jynx that plagues you and then later spares you to strike someone else.
Good to hear that a fix is imminent.
#177
Posted 23 April 2013 - 09:04 AM
Next round did it right off the bat.. I quit the match and logged off for the night. What a joke PGI..
#178
Posted 23 April 2013 - 11:48 AM
K o i l, on 22 April 2013 - 07:43 PM, said:
Maybe; the failure cases for this issue are usually much more extreme, but please let us know if the hotfix makes any difference.
pesco, on 23 April 2013 - 04:37 AM, said:
... no comment
@Rixsaw
Not quite. Here is what was done:
Mech input state is queued up into a 20 hz stream of traffic sent from your system to the server. The server processes this state and relays it to all other clients. Obviously then, for a 16 player game, you're sending one set of inputs up to the server, and receiving inputs for 15 other players. For a 24 player game this is compounded, one set of inputs up and 23 sets of inputs down. This movement state traffic dominates all the other game traffic being sent in terms of bandwidth costs.
Taking a look at what is actually in that mech input state, you have some aim angles, throttle settings, jump jet status, torso turn settings, and a small collection of other essential states. At 20 hz, a lot of that state doesn't change from one input to the next, so it's a fairly reasonable optimization to only send input values when they change, commonly referred to as delta compression. Most of our optimizations are focussed on the data being sent to you from the server, since that grows with player count.
To start, we add a sequence id to map transmitted movement state to a specific identifier. Now every move we send to the client is tagged with its sequence number. If this movement packet requires previous state to decompress, we add that base state identifier as well and delta compress the current state against that base state before transmission.
Well, we're using UDP, and all this traffic is unreliable and unordered. The underlying movement system is set up in such a way that it will reorder or simply reconstruct lost traffic over a very small window of time. If any received input is too old it's simply discarded.
We still have to deal with the problem of knowing what states the client has received, so for every state the client receives, it send back a really small 'state ack' packet containing a small identifier and the last received sequence id. The CryNetwork layer handles combining all these little tiny packets into optimally sized packets for transmission for us. Now on the server it's quite simple to always delta compress against the most recently ack'd state for each client.
It's the transmission of these ack packets in combination with small levels of packet loss that have messed things up. My guess is that our sending of lots of tiny little messages is incorrectly triggering flow control logic in the network layer, but it will take some digging to really track down where and why this is happening.
Small update on the hotfix, QA has it and is testing it out in the stable environment. If all goes well, the absolute earliest it might end up getting pushed out would be sometime tomorrow.
#180
Posted 23 April 2013 - 12:14 PM
Edited by Esplodin, 23 April 2013 - 12:19 PM.
8 user(s) are reading this topic
0 members, 8 guests, 0 anonymous users