Placeholder-Software / Dissonance

Unity Voice Chat Asset
69 stars 5 forks source link

How can we test for different networks or... #252

Closed hdev72 closed 2 years ago

hdev72 commented 2 years ago

Hello everyone Dear admins, Do you have a sample game used dissonance for group voice chat? Before buying, we need to test the performance of dissonance, like handeling unstable networks, packet loss handeling, reconnection, big scale online users or another things.

It is better to make a sample game yourself or introduce a game that uses dissonance.

hdev72 commented 2 years ago

Second question: I not found any server setup in documentation, all of networks is peer to peer? Im talking about media server

martindevans commented 2 years ago

Do you have a sample game used dissonance for group voice chat?

We don't have a sample game, the best way to test it is just to buy a single copy, that way you can use all of the inspectors/profilers etc from within the Unity editor to assess performance. If you're really unhappy with the performance I can authorise a refund for you :)

big scale online users or another things.

Performance of Dissonance in large sessions can be very good - usually your server bandwidth will be the limiting factor. It's about 2-3KB/s for a single voice stream and Dissonance will only send voice to people who need to hear it. So in a normal case you'll be speaking (one outgoing stream) and listening to maybe one or two people at most (4-6KB/s incoming). Of course you never want to hear more than a small number of people speaking simultaneously, so even in a huge open world with thousands of users you'd design your game to only be sending voice to nearby players.

An example of this is OrbusVR (a VRMMO). The entire game uses Dissonance with all players effectively in one massive network session, but using rooms to narrow down who can hear whom to smaller groups (nearby/party/guild etc).

I not found any server setup in documentation, all of networks is peer to peer?

Dissonance supports a large number of network backends (e.g. Mirror/Photon/DarkRift2 etc) and the server setup will be specific to the backend. Once the server is up Dissonance will run over that connection.

e.g. in Mirror the server is running the game scene, so you just have a DissonanceComms component in the server scene and all client scenes.

Im talking about media server

I'm not sure what you mean, sorry.

hdev72 commented 2 years ago

thanks for your help. pls see this images: https://millo-l.github.io/static/017a91d3df72ed6117dcdb47fab3c810/21b4d/webrtc-server.png Which architecture does dissonance use? in case mcu and sfu we needs media server.

As I understand it, I have to prepare my own network server, apart from dissonance, and dissonance dont has any documentation to help run backend server (like Mirror/Photon/Webrtc), right?

martindevans commented 2 years ago

Dissonance does all of it's networking through whatever network system you choose (possibly a custom network, we have support for writing your own backend using our base classes to do most of the work). This could be a separate voice server, but normally you don't need to do anything like that and instead you just setup so that it works through whatever network system you already have setup for your game/application.

https://millo-l.github.io/static/017a91d3df72ed6117dcdb47fab3c810/21b4d/webrtc-server.png

Keep in mind that Dissonance does not use WebRTC networking topologies at all, so it's not exactly any of those.

The closest is SFU - each Dissonance client sends an audio stream to the server which then forwards the audio on to other clients with no further processing. This is why Dissonance can scale to such large sessions - the server does not have to process every single audio stream.

In some network backends you can setup P2P routing between clients, in which case it can act a bit more like a mesh network (a server is still required, to act as a fallback if P2P connections cannot be made directly).