Multiplayer question regarding Bandwidth Profiles

Get help using Construct 3!

Post » Fri Sep 22, 2017 8:19 pm

The multiplayer plugin has 2 bandwidth profiles - 30 Hz updates w/ an 80ms buffer for games played over the Internet, and 60 Hz updates with a 40ms buffer for games played over LAN. I have 3 questions:

1. What is the buffer actually for? (The manual doesn't explain this)

I learned recently from the developer of a multiplayer game that feels incredibly responsive (w/o any client input prediction), that his game only sends 20 updates per second (vs the MP plugins 30), with his server receiving and processing updates immediately (which happens every 50 ms).

2. Does this mean that his game is essentially using a Bandwidth Profile of "20 Hz updates w/ a 50ms buffer"?

3. If so, would this be recommended if it gives my game a better feel? I have chosen not to use client input prediction, due to the issues that come with it, but I still want my game to feel fairly responsive on the clients side. What would the implications be of decreasing the buffer from 80ms to 50ms, and reducing the updates from 30 to 20? I've tested the change and it feels okay, but on a larger data transfer scale, what does this mean?

Thanks in advance!
B
86
S
29
G
10
Posts: 100
Reputation: 10,535

Post » Tue Oct 10, 2017 11:16 pm

I'm still wondering about question 1.

Does anyone know what the Multiplayer Buffer is?
B
86
S
29
G
10
Posts: 100
Reputation: 10,535

Post » Wed Oct 11, 2017 8:22 am

It is for interpolation for smoothing out jitter and/or packet loss.

https://www.scirra.com/tutorials/892/mu ... pts/page-6

Roughly speaking you can think of it as the engine having 80ms worth of artificial latency - all peers under 80ms will percieve the same level of responsiveness from the host, and the player/host ideally won't notice any network lag unless the actual ping (or time between updates) becomes greater than 80ms.
Mistakes were made.
B
54
S
28
G
115
Posts: 1,705
Reputation: 65,083

Post » Fri Oct 13, 2017 4:56 am

oosyrag wrote:It is for interpolation for smoothing out jitter and/or packet loss.

https://www.scirra.com/tutorials/892/mu ... pts/page-6

Roughly speaking you can think of it as the engine having 80ms worth of artificial latency - all peers under 80ms will percieve the same level of responsiveness from the host, and the player/host ideally won't notice any network lag unless the actual ping (or time between updates) becomes greater than 80ms.


@oosyrag

Thanks for the help! But question... I'm not using client input prediction for various reasons, if I don't want any artificial latency what's the harm in putting this buffer to 0ms? I've tested it with simulated latency and it seems a lot more responsive (the delay between key press and client side movement is reduced greatly).
B
86
S
29
G
10
Posts: 100
Reputation: 10,535

Post » Fri Oct 13, 2017 3:41 pm

Honestly if you understand the implications and know what you are doing, there shouldn't be any harm. Although it is pretty standard and common among netcode implementations to have some sort of buffer, for the aforementioned smoothing out of latency issues for a more consistent experience for peers at low latency levels.

It will seem more responsive under good conditions, but any intermittent packet loss or jitter will be more pronounced when it does occur.
Mistakes were made.
B
54
S
28
G
115
Posts: 1,705
Reputation: 65,083

Post » Fri Oct 13, 2017 4:33 pm

Thanks for sharing your knowledge @oosyrag. I plan on using an additional Player object for each Peer, and interpolating client side to the correct position. This should fix those jitter problems, while still making the game feel fairly responsive.
B
86
S
29
G
10
Posts: 100
Reputation: 10,535


Return to How do I...?

Who is online

Users browsing this forum: No registered users and 0 guests