Psyonix_Cone

Psyonix_Cone



22 Sep

Comment

Does this mean that the client is constantly showing an extrapolated version of the ball / other players? (And then using smoothing techniques when the server ends up disagreeing with the client rather than having an instant jittery correction.)

For example, if my client has 50ms of latency (25ms in either direction):

The server is at time 100ms

My client has received game-state for time 75ms.

If my client sends an input now, the server will receive and execute that input at time 125ms (ignoring the buffer that causes the server to wait a little before executing the inputs).

Because of this, my client uses the past game-state values to extrapolate game-state (ball / other players) for time 125ms (while the client only has state up to 75ms).

Yep that's exactly right!

And how does that input buffer on the server affect this? If this input buffer is causing inputs to be delayed ...

Read more

23 Jan

Comment

I have never heard of GSVP, MNDP , or FP-Mux. We just send regular UDP packets to the operating system. Perhaps the Xbox OS is compressing them after that? Or wireshark is misinterpreting our packets?


09 May

Comment

The ball is 1/6th the mass of the car, but we don't translate mass in the game to any real-world unit of measurement.


05 Apr

Comment

Originally posted by HoraryHellfire2

Agreeing with /u/AnEeedyatBoy. It seems the swap mechanic quickly moves the players across the pitch very quickly, having no collision with each other, and sending the ball up in a sort of "pinch". What's interesting is this isn't client-side, as the ball is not corrected to be on the ground moments later, but instead falls like normal. It also seems like once the count-down timer reaches 0, the physics on the ball reset to zero or something.

Calling /u/Psyonix_Cone for this bug / unintended behavior.

 

Also, while he's here, I have something to report about another issue that's irrelevant to the thread. After demos, the car respawns like normal, but if you are holding any buttons like accelerate, reverse, or boost, your client will predict them, but be denied by server corrections. Every time. This disrupts the flow of the game because it seems like your previous inputs don't get sent to the server...

Read more

Swap is moving players across the field but the cars are still locked to their original position via a 2d constraint, so that's just physics sliding them back to where they should be.

I *think* the accelerate on respawn issue is fixed in next patch, I remember looking in to it a while ago.


12 Mar

Comment

Originally posted by HoraryHellfire2

Would you consider being able to change the sensitivity on smaller scales? So if my controller can have a 0.73 input in diagonals at lowest (tested using https://html5gamepad.com and halfway_dead's deadzone calculator), that would mean I would need a 1.369 sensitivity, but my options are only 1.3 or 1.4. I think it would be nice to have the option to place 1.37 sensitivity as I don't want any more sensitivity than necessary to reach the diagonals in full input, since the sensitivities also affect all movement.

will add for next patch


02 Mar

Comment

Originally posted by HoraryHellfire2

/u/Psyonix_Devin or /u/Psyonix_Corey

What sensitivity value is optimal to be able to reach 100% input the diagonals for controllers. I know there isn't a one-all be-all answer, since one controller may only reach 75% input in the diagonal, and another one can reach 80% input. So maybe we can have an estimate of what our sensitivity should be if a controller can reach only 75% input in the corners.

If the stick is perfect, then holding a perfect diagonal would give X and Y values of about 0.707 each. These values are multiplied by Sensitivity. So our math would be:

0.707 * Sensitivity = 1.0

Sensitivity = 1.0 / 0.707

Sensitivity = 1.41 (theoretically)


20 Feb

Comment

Originally posted by HoraryHellfire2

So to verify, you're saying that the speed of the impact point matters, and thus longer cars do hit harder, but the difference is only minor due to the way physics are handled uniquely in the game, correct?

Yes, very minor. We basically just use the physics engine for resolving intersections. Restitution is mostly disabled (between the car and ball).

Comment

Originally posted by Procrastinate_17

then why is every other ping a multiple of 4

Ping for other players are still a multiple of 4 (to save bandwidth). Your own ping is uncompressed.


07 Feb

Comment

You are correct, the ends of longer cars have a higher velocity than shorter cars when dodging. However the bulk of the impact force between the ball and the car comes from the extra forces that we add after the collision response is calculated by the physics engine, and these extra forces depend entirely on the relative linear velocity between the car and the ball. Angular velocity does not factor into the extra forces.


14 Dec

Comment

You can try disabling Steam controller integration for Rocket League. https://steamcommunity.com/groups/SteamClientBeta/discussions/1/144512942758259979/


13 Dec

Comment

Originally posted by djinnjer

And could you shed some light as to why my car turns and spins more freely on the workshop map? Or is the actual chassis of the car affected by gravity? (Which i assume it isn't)

It does not spin more freely on workshop maps.

Comment

Originally posted by djinnjer

I guessed as such, if you are aware what is the furthest degree of turning a car will have for a single jump air roll?

Looks like a little over 450 degrees

Comment

Many workshop maps don't set the correct physical material for the ground, so it's lacking the constant downward force that keeps the car planted to the ground. Without that force the car is able to jump higher than it should, which gives it more time to turn in the air before hitting the ground. Workshop maps that use the correct physical material for the ground behave the same as the normal game.


04 Dec

Comment

If supersonic and max speed were the same value, it would be very difficult to maintain supersonic. The car would constantly be fluctuating in and out of supersonic if it did anything besides driving in an uninterrupted straight line. The lower supersonic speed is to give some wiggle room to maintain supersonic.


13 Nov

Comment

Rocket League does not use variable timesteps.


02 Aug

Comment

We now send the rotation as a quaternion using 18 bits per component instead of 16. Implementation learned from https://gafferongames.com/post/snapshot_compression/ "Optimizing Orientation" Here's snippets of the code for deserial...

Read more

29 May

Comment

Originally posted by Halfway_Dead

Thanks for the comment! I'll try to sticky it in the video underneath my video to make sure people can see.

Input buffer size is not the same for everyone. It tries to grow or shrink depending on network jitter (variance in latency)

If that is true, then does that mean the server accepts inputs from some players later than others? That doesn't sound too fair to me. Or does your statement mean, that the client simulates even further ahead to create a bigger buffer for the inputs?

The issue you are seeing is not the actual ping going up with increased FPS.

I hope I didn't make it sound like I thought the real ping is higher just because it shows higher on the scoreboard.
The reason I made my assumption with the calculation was that I pinged the IPs of the servers manually and they gave me exactly the ping that I got at 60FPS but I guess that could've just randomly worked out and it's just inac...

Read more

If that is true, then does that mean the server accepts inputs from some players later than others? That doesn't sound too fair to me. Or does your statement mean, that the client simulates even further ahead to create a bigger buffer for the inputs?

What it means is, if a player is averaging packets arriving anywhere between 100 and 125 ms of latency (25 ms of jitter), they have (ideally) 25ms of input buffer to ensure they always have enough inputs in the buffer to last until they next packet comes in. This keeps the input buffer as small as possible so we aren't adding too much extra delay to processing their inputs.

If another player has very high jitter (packets taking anywhere between 100 and 150 ms), they need a 50ms input buffer to handle the 50ms of possible lull between incoming packets.


25 May

Comment

Great video as always! I wanted to clarify some things mentioned in the video:

  • Input buffer size is not the same for everyone. It tries to grow or shrink depending on network jitter (variance in latency).
  • We allow up to 10 frames of input history to be sent on every outgoing packet. We don't send inputs that the server has already confirmed. You were probably only seeing 4 inputs because you had a low ping and the server had already confirmed the older inputs. If you increase your ping, you will see the game sending more inputs per packet.
  • The networking options currently don't work because we chose to disable them via the backend while we narrow down server issues stemming from the last update. The networking options will be re-enabled shortly after the next update goes out.
  • A fix was just checked in to our dev build a few days ago that coincidentally fixes the scoreboard ping issue too. The issue you are seeing is not the actual ping going...
Read more

28 Apr

Comment

Hello! Thank you for this investigation. The heavy car issue is an elusive beast and we appreciate any community help in resolving this matter. Connecting to PsyNet with high latency should not have any effect on player input, but I'll try it out on Monday to see what happens. To aid in your investigation, here are some points regarding things mentioned in this post:

  • PC has only been using websockets since April 24. Prior to that communication with PsyNet has been through stateless https requests. So unless your issues just started in the last few days, I wouldn't assume websockets are the culprit.

  • ConnectionQualitySave just tracks your latency, packet loss, etc to the game servers over multiple matches. This information is used to display a pop-up linking to a support document if a user has recurring connection issues. It is not used to affect your connection settings.

  • The PsyNet.ServiceCalls metric is just metrics we record that me...

Read more

07 Oct