Placeholder-Software / Dissonance

Unity Voice Chat Asset
69 stars 5 forks source link

Client disconnects at server side at change scene #200

Closed ghost closed 4 years ago

ghost commented 4 years ago

Hi, I'm using dissonance with mirror ignorance communication for a VR multiplayer game. When i change scene on server and client. The client is not connected on the server side:

In the picture you can see that the client is not connected on the server side. While it is connected on the client side.

Log Server:

image

[Warning] [Dissonance:Recording] (20:49:17.112) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.1524716) [Warning] [Dissonance:Recording] (20:49:19.478) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.1516264) [Warning] [Dissonance:Recording] (20:49:20.065) BasePreprocessingPipeline: Lost 255 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:49:20.311) BasePreprocessingPipeline: Lost 882 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:49:20.312) BasePreprocessingPipeline: Lost 882 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:49:20.546) BasePreprocessingPipeline: Lost 882 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:49:20.548) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:50:48.929) BasicMicrophoneCapture: Insufficient buffer space, requested 18081, clamped to 16383 (dropping 1698 samples) [Warning] [Dissonance:Recording] (20:50:48.930) BasePreprocessingPipeline: Lost 882 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:50:48.930) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:50:48.931) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] (2) [Dissonance:Recording] (20:50:48.932) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:50:48.933) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.3333333) [Warning] [Dissonance:Recording] (20:51:39.610) BasicMicrophoneCapture: Insufficient buffer space, requested 17199, clamped to 16383 (dropping 816 samples) [Warning] [Dissonance:Recording] (20:51:39.610) BasePreprocessingPipeline: Lost 696 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:39.611) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:39.612) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:39.612) BasePreprocessingPipeline: Lost 882 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:39.613) BasePreprocessingPipeline: Lost 882 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:39.613) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.3333333) [Warning] [Dissonance:Recording] (20:51:43.001) BasicMicrophoneCapture: Insufficient buffer space, requested 60417, clamped to 16383 (dropping 44034 samples) [Warning] [Dissonance:Recording] (20:51:43.002) BasePreprocessingPipeline: Lost 255 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:43.002) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] (2) [Dissonance:Recording] (20:51:43.003) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] (2) [Dissonance:Recording] (20:51:43.004) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:43.456) BasicMicrophoneCapture: Insufficient buffer space, requested 19845, clamped to 16383 (dropping 3462 samples) [Warning] [Dissonance:Recording] (20:51:43.456) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:43.457) BasePreprocessingPipeline: Lost 882 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] (2) [Dissonance:Recording] (20:51:43.458) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:43.720) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:43.721) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:44.984) BasicMicrophoneCapture: Insufficient buffer space, requested 56448, clamped to 16383 (dropping 40065 samples) [Warning] [Dissonance:Recording] (20:51:44.985) BasePreprocessingPipeline: Lost 882 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] (2) [Dissonance:Recording] (20:51:44.986) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] (2) [Dissonance:Recording] (20:51:44.987) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:44.988) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.2524641) [Warning] [Dissonance:Recording] (20:51:57.903) BasicMicrophoneCapture: Insufficient buffer space, requested 154350, clamped to 16383 (dropping 137967 samples) [Warning] [Dissonance:Recording] (20:51:57.904) BasePreprocessingPipeline: Lost 255 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:57.904) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:57.905) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] (2) [Dissonance:Recording] (20:51:57.906) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:57.907) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:51:57.907) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.3333333) [Warning] [Dissonance:Recording] (20:52:44.705) BasicMicrophoneCapture: Insufficient buffer space, requested 19845, clamped to 16383 (dropping 3462 samples) [Warning] [Dissonance:Recording] (20:52:44.706) BasePreprocessingPipeline: Lost 255 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:52:44.707) BasePreprocessingPipeline: Lost 882 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:52:44.708) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:52:44.710) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:52:44.711) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.3333333) [Warning] [Dissonance:Recording] (20:53:01.181) BasePreprocessingPipeline: Lost 255 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:53:01.182) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.1847145) [Warning] [Dissonance:Recording] (20:53:01.895) BasePreprocessingPipeline: Lost 255 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:53:52.384) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.1553768) [Warning] [Dissonance:Recording] (20:54:28.295) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.1507249) [Warning] [Dissonance:Recording] (20:54:32.717) BasePreprocessingPipeline: Lost 255 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:54:32.719) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.2120602) [Warning] [Dissonance:Recording] (20:54:42.739) BasePreprocessingPipeline: Lost 255 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:54:42.740) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.180047) [Warning] [Dissonance:Recording] (20:56:51.990) BasePreprocessingPipeline: Lost 696 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:56:51.991) BasePreprocessingPipeline: Lost 882 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] (2) [Dissonance:Recording] (20:56:51.992) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:56:51.993) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate [Warning] [Dissonance:Recording] (20:56:51.993) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.3333333)

Log Client:

image

[Dissonance:Recording] (02:56:57.463) BasicMicrophoneCapture: No microphone detected; disabling voice capture UnityEngine.Debug:LogWarning(Object) Dissonance.LogMessage:Log() (at Assets/Plugins/Dissonance/Core/Log.cs:64) Dissonance.Logs:SendLogMessage(String, LogLevel) (at Assets/Plugins/Dissonance/Core/Log.cs:96) Dissonance.Log:WriteLog(LogLevel, String) (at Assets/Plugins/Dissonance/Core/Log.cs:179) Dissonance.Log:Warn(String) (at Assets/Plugins/Dissonance/Core/Log.cs:385) Dissonance.Log:AssertAndLogWarn(Boolean, String) (at Assets/Plugins/Dissonance/Core/Log.cs:516) Dissonance.Audio.Capture.BasicMicrophoneCapture:StartCapture(String) (at Assets/Plugins/Dissonance/Core/Audio/Capture/BasicMicrophoneCapture.cs:62) Dissonance.Audio.Capture.CapturePipelineManager:RestartTransmissionPipeline(String) (at Assets/Plugins/Dissonance/Core/Audio/Capture/CapturePipelineManager.cs:340) Dissonance.Audio.Capture.CapturePipelineManager:Update(Boolean, Single) (at Assets/Plugins/Dissonance/Core/Audio/Capture/CapturePipelineManager.cs:205) Dissonance.DissonanceComms:Update() (at Assets/Plugins/Dissonance/DissonanceComms.cs:619)

[Dissonance:Recording] (02:56:57.464) CapturePipelineManager: Failed to start microphone capture; local voice transmission will be disabled. UnityEngine.Debug:LogWarning(Object) Dissonance.LogMessage:Log() (at Assets/Plugins/Dissonance/Core/Log.cs:64) Dissonance.Logs:SendLogMessage(String, LogLevel) (at Assets/Plugins/Dissonance/Core/Log.cs:96) Dissonance.Log:WriteLog(LogLevel, String) (at Assets/Plugins/Dissonance/Core/Log.cs:179) Dissonance.Log:Warn(String) (at Assets/Plugins/Dissonance/Core/Log.cs:385) Dissonance.Audio.Capture.CapturePipelineManager:RestartTransmissionPipeline(String) (at Assets/Plugins/Dissonance/Core/Audio/Capture/CapturePipelineManager.cs:373) Dissonance.Audio.Capture.CapturePipelineManager:Update(Boolean, Single) (at Assets/Plugins/Dissonance/Core/Audio/Capture/CapturePipelineManager.cs:205) Dissonance.DissonanceComms:Update() (at Assets/Plugins/Dissonance/DissonanceComms.cs:619)

martindevans commented 4 years ago

It looks like there may be a couple of few here:

First of all the server is running in Server & Client - this means the server is also capable of sending/receiving voice. Is this what you want, or do you just want the server to act as relay?

Secondly, the warnings you're getting in the server log:

[Warning] [Dissonance:Recording] (20:49:19.478) CapturePipelineManager: Detected a frame skip, forcing capture pipeline reset (Delta Time:0.1516264) [Warning] [Dissonance:Recording] (20:49:20.548) BasePreprocessingPipeline: Lost 441 samples in the preprocessor (buffer full), injecting silence to compensate

Indicate poor performance (e.g. Delta Time:0.1516264 in that message indicates that the last single frame took 151ms). If this just happens when the scene is loading it's not too bad - you should mute/deafen yourself before loading a new scene and then after the scene has loaded call DissonanceComms.ResetMicrophoneCapture before unmuting/undeafening yourself. However, if this is happening constantly you won't be able to get quality realtime voice.

Third, the connection issue. It looks like what may be happening is the connection is lost during the scene transition on the server end but the client is never informed that the connection has dropped. Then you're in a state where the client thinks it is in the network session but the server doesn't know it exists!

I think to solve issue 2&3 you should move the Dissonance components out of the DontDestroyOnLoad category - this way when you change scene they will be destroyed and recreated in the new scene and a new Dissonance network session will be established.

ghost commented 4 years ago

Hi, Many thanks, that seems to solve the issue