I'm curious about a particular aspect of how network messages function in parties. Recently support was added for allowing direct connections on PC, and the documentation on that noted that direct connections use more upstream bandwidth on a user for voice chat.
This got me wondering how network messages act between direct and relayed connections. Each call to SendMessage allows for the ability to add multiple endpoints to the message, so how does this act exactly in terms of upstream? If a single SendMessage call sends a message out to all other endpoints in a network, and all endpoints are on the relay, does the sender send only one packet to the relay which then gets split out, or does it send out multiple packets for every endpoint in the list, even if it's an identical message to the same relay?
The ultimate question being, if I designed the game's underlying netcode to transmit game updates as grouped messages to all endpoints instead of individually, would it actually save upstream bandwidth on the player assuming they are connected to the relay?
In addition, how would this act if the player had a mix of direct and relayed connections (say between PC and other platforms)?