Search Unity

Feature Request Ability to increase reliable pipeline window size beyond 32

Discussion in 'Unity Transport' started by IgreygooI, Aug 15, 2021.

  1. IgreygooI

    IgreygooI

    Joined:
    Mar 13, 2021
    Posts:
    48
    The title says it all.
     
  2. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    The reliable pipeline is part of the transport, moving to the Unity Transport forum
     
  3. ThatDan123

    ThatDan123

    Joined:
    Feb 15, 2020
    Posts:
    11
    Bump.

    This feels like a really needed feature for any game with lots of players. Sending reliable data can be really important and sending it to lots of players will fill the small 32 packet window. Or I might be misunderstanding as to why it seems small?

    I know that TCP could be a better solution (On the roadmap) but theres lots of network libraries that just use UDP sockets and build a usable reliability layer on top which dont have the same limitations (larger than 32 packets).

    Ideally you should be able to use the fragmentation and reliable sequenced pipelines together and have no issues with many players and more than 32 packets per frame (if needed).
     
    Last edited: May 31, 2022
  4. simon-lemay-unity

    simon-lemay-unity

    Unity Technologies

    Joined:
    Jul 19, 2021
    Posts:
    441
    I understand that this limitation is frustrating, and increasing the limit is in our backlog. Unfortunately it's not as simple as it may seem and I don't know when we'll get to tackling this task.

    Just to clarify, though: the limit is not shared across all connections. Each connection to a player can have up to 32 reliable packets in-flight. In fact, the limit is per-connection and per-pipeline. So if you create multiple pipelines with a reliable sequenced pipeline stage, each pipeline (for each connection) will also have its own window of 32 packets. This could be used to create different "channels" of reliable data and (somewhat) work around the limitation.

    Until we get around to increasing the limit, we'd recommend handling the error returned when reaching the limit and buffering the messages on a queue on the side (I know, it kind of defeats the purpose). This is the solution that we're using on both Netcode for Entities and Netcode for GameObjects.
     
    ThatDan123 likes this.
  5. ThatDan123

    ThatDan123

    Joined:
    Feb 15, 2020
    Posts:
    11
    Ah ok, thankyou. That makes it a lot more usable.