Improbable Icon

Voip questions

v9-1-2

#1

Hello everyone good morning.
I was very interested in getting voice chat working with my project and I had previously looked at one solution which was a pretty clever little voip plugin for unity which works with almost any networking solution, but I wanted to ask if you guys could give me a little insight.
The requirements for what they need to send over the network is as follows.

  1. The raw data (encodedFrame.RawData) is a byte array, I know spatial support byte arrays.
  2. Frequency ID (encodedFrame.Frequency) is a one byte value, which I believe is supported.
  3. The frame index (encodedFrame.Index) is an incrementing unsigned long value, this is the one that gets me.

Is the frame index just and unsigned integer with a different name? I don’t want to buy a package which is impossible to use, no matter how cheap it is, and since this isn’t in my feature requirements list for my first playtest I was gonna hold off on it. Any thoughts would be appreciated, is this not gonna work, or perhaps would it be easy to implement?

Here’s their documentation: http://daikonforge.com/dfvoice/?page_id=37

EDIT: Scratch that, I’m going with a more complete package, for any googlers or searchers, this is what I ended up using, it’s a little more complicated, but all the info their sending can be done with spatial, now if I’ll have this running any time soon is up to debate.
https://www.assetstore.unity3d.com/en/#!/content/70078


#2

Hey Bonkahe,

I’d be interested to hear how you get on with this. We’ve done some very basic voip before (basically just reading the audio bytes and replaying them on the other end) but nothing this comprehensive. The basic idea is quite straight forward to implement yourself though. Unity lets you read the audio data directly (see https://docs.unity3d.com/ScriptReference/AudioClip.GetData.html for an example). Then you can send that off in a component event, and replay it on any client that has that player visible.

For reference to your earlier question,yes, you can send unsigned longs in SpatialOS. The schema type is uint64.

Good luck!


#3

Hello Chris,
Awesome, I might actually buy both and try out both, I hear bad things about cpu usage with the daikon forge, but I would be willing to give both a shot, and daikon seams much easier to implement, but I may have to go with the other one if the performance is unsustainable, either way when I’m done I’ll try to remember to do a write up about it with code examples of how I implemented it.
If you see me doing a playtest with voice chat remind me to do a write up! I may forget :slight_smile:


#4

Awesome, thanks!


#5

@bonkahe The new plugin (only been out for a couple weeks!) you pointed out looks promising. I can tell you that DF Voice is only ok, some of the feature just don’t work and the devs have stopped supporting it.


#6

@cbdileo Yea I heard that they dropped it, the appeal of it is the simplicity of it, it looks pretty easy to implement. And if it fails I’m only out like 30 bucks.

Edit: So I’ve been looking into it further, and it’s not complicated at all really, the hardest part is getting compression working properly. I believe that when I do it (likely not before my first play test) I will just do a custom work based on Fholms work.

His work can be found here, it’s actually pretty simple.

https://github.com/fholm/unityassets/tree/master/VoiceChat/Assets/VoiceChat/Resources

In any case I’ll let this die until I get around to actually working on voip.


#7

@bonkahe have you made any progress with this? I’ve implemented my own basic voice chat without any compression just now. Works fine on a good network, but as expected the Commands time out on a poorer network. I tried looking into the compression techniques in the fholm assets you link, but didn’t get any successful results out of it.


#8

@Soluis Unfortunately I had to scrap the build and start over with a blank project, I have been making progress and in the next week or so I will likely be revisiting this subject myself, I read into opus and I think it’s the way to go as far as compression, and I think a lot of the timing out will be fixed when the compression has been introduced, without it the information transferring is ridiculous. When I do come back to this I’ll definitely post a thread on the subject and we can kinda semi collab on it and see if we can get something stable going, I think that we can probably use pretty aggressive compression and make up for it by using unitys reverb system and a dampening system so you can’t talk through walls, to make up for the loss in quality, but I could be wrong. Wont know until we try. :slight_smile: