Jump to content
Eifehr

VON Improvements - Feedback

Recommended Posts

Summary of VoN improvements:

  - A new codec implementation based on Opus.
    Selection of the codec implementation is possible with 'vonCodec' parameter in server.cfg (https://community.bistudio.com/wiki/server.cfg).

  - Optimization of the VoN messages retranslation:
 
    Previously when a client wanted to send a message to a list of targets (receivers), for every target a decision was made - to send it directly or to request retranslation through the server. That behaviour could result in many messages being sent to the server for retranslation differing only in the receive target, the data was identical. Thus exceeding the network bandwidth-limitation some messages were delayed or omitted. The situation worsened as the client's connection quality decreased or the number of targets increased.   
    The optimization is based on the idea to send the message data to the server only once with a list of retranslation targets.
    
  - Match-global settings for communications usage:
 
    Along with the separation of the Chat and VoN channels came a way to configure how those can be used through the server.cfg or description.ext.
    The syntax for 'disableChannels' was expanded so that there are two ways to configure this:

    disableChannels[]={channelID, channelID, ...}; // old syntax
    disableChannels[]={{channelID, disableChat<bool>, disableVoice<bool>},{channelID, disableChat<bool>, disableVoice<bool>},...}; // new syntax

    The 'disableChannels' attribute can be specified both in server.cfg and description.ext and the following are the conflicts resolution rules: 

 if (desc.ext has 'disableChannels') then {
        // settings from desc.ext will be used
    } else if (server.cfg has 'disableChannels') then {
        // settings from server.cfg will be used
    }

    if ('disableChannels' in server.cfg was overriden in desc.ext)
        // Print a warning message into the server RPT

    if ('disableChannels' is an array) then {
        if (its first element is an array) then {
            if (it has 3 elements) then {
                // We assume the new syntax is used.
            } else {
                // Print a warning message into the server RPT that
                // a 3-element array was expected.
            }
        } else {
            // We assume the old syntax is used.
        }
    }

    Simply put, the settings from description.ext have higher priority over those in server.cfg, if any.
    This was done so to preserve the mission maker's intentions to how communications should be used.
    
    On the script side two existing commands were extended to support working with Chat and Voice channels separately:   

    <channel> enableChannel [<VoN>, <chat>];

    Example:    

        1 enableChannel [false, true]; // Will disable chat and enable voice on the side channel.

    The old format for 'channelEnabled'    <bool> = channelEnabled <channel> is now deprecated, please use the following syntax:

      [<chatEnabled>, <voiceEnabled>] = channelEnabled <channel>

    Example:     

        _isGlobalChatEnabled = (channelEnabled 0) select 0; // Check if user can use text on global channel
        _isGlobalVoiceEnabled = (channelEnabled 0) select 1; // Check if user can use the VoN on global channel

    We're considering improving the whole communication system even further, especially on the part of the player's safety - going away from direct (P2P) VoN  will prevent the inventive players (hackers?) to misuse other players' IPs, which are easily available when there is no retranslation through the server, for any kinds of exploitation or DoS abuse. On the usability side a massive overhaul is in progress, including but not limited to separation of Chat and VoN channels, easily accessible muting of specific players or the whole channels and match-global settings for the communications usage.
    
    Our internal tests already show significant improvements both in the network traffic and overall performance of VoN communications during massive multiplayer battles with the purposely highly stressed server, and yet there is even more to come.

  • Like 16

Share this post


Link to post
Share on other sites

From my experience Opus's quality is extremely poor (vonCodecQuality=30) in comparison to the old Speex codec when compared directly. Any chance this is a bug or can we get some more quality settings for Opus?

On the scripted side of things, the addition of a command that will return a boolean result depending on if the player object passed is talking or not would also be useful. For example:

isPlayerTalking _unit
  • Like 3

Share this post


Link to post
Share on other sites

From my experience Opus's quality is extremely poor (vonCodecQuality=30) in comparison to the old Speex codec when compared directly. Any chance this is a bug or can we get some more quality settings for Opus?

can you please provide audio (or video with audio) recording of the bug

+ dxdiag log from client (and server if possible) experiencing this issue ?

Share this post


Link to post
Share on other sites

Are there any plans to allow access to some of the other parameters to the codec other than the current single quality control, or at least is it possible to document what these are hard coded to in the implementation, please.

 

F.e.: comp (Encod Complexity), framesize, expect-loss, max-delay, etc.

Share this post


Link to post
Share on other sites

Would love to see VON include power/range (even terrain) based noise/static/breakup on channels other than Direct (and also the squelch).

  • Like 4

Share this post


Link to post
Share on other sites

 

From my experience Opus's quality is extremely poor (vonCodecQuality=30) in comparison to the old Speex codec when compared directly. Any chance this is a bug or can we get some more quality settings for Opus?

On the scripted side of things, the addition of a command that will return a boolean result depending on if the player object passed is talking or not would also be useful. For example:

isPlayerTalking _unit

Thank you for the feedback.

The issue with OPUS quality being low was located and the fix will be released in one of the following updates.

 

Regarding the script command, could you please share any ideas on how you would use it? We might consider introducing such a command based the community needs.

 

 

Are there any plans to allow access to some of the other parameters to the codec other than the current single quality control, or at least is it possible to document what these are hard coded to in the implementation, please.

 

F.e.: comp (Encod Complexity), framesize, expect-loss, max-delay, etc.

We have not considered making any additional parameters available. What use would those bring?

 

The codec quality can be effectively configured with 'vonCodecQuality'. Making any implementation details known would limit us in updating and improving the existing architecture because of the community relying on some specific behaviour.

Simply put, we should be very careful with parameters we want to expose.

  • Like 2

Share this post


Link to post
Share on other sites

Thank you for the feedback.

The issue with OPUS quality being low was located and the fix will be released in one of the following updates.

 

Regarding the script command, could you please share any ideas on how you would use it? We might consider introducing such a command based the community needs.

Good to hear the quality issue was fixed.

 

Regarding the scripting command, one example when it would be useful to find out when a player is speaking would be nametags. I know ACE has something like it, basically displaying when a unit is speaking by drawing an icon above that units head. The current method for detecting if a player is speaking is pretty ghetto:

addMissionEventHandler ["EachFrame", {
  private _isSpeaking = !isNull findDisplay 55;
  if !(player getVariable ["speaking", false] isEqualTo _isSpeaking) then {
    player setVariable ["speaking", _isSpeaking, true]
  };
}];

Share this post


Link to post
Share on other sites

Regarding the scripting command, one example when it would be useful to find out when a player is speaking would be nametags. I know ACE has something like it, basically displaying when a unit is speaking by drawing an icon above that units head. The current method for detecting if a player is speaking is pretty ghetto:

addMissionEventHandler ["EachFrame", {
  private _isSpeaking = !isNull findDisplay 55;
  if !(player getVariable ["speaking", false] isEqualTo _isSpeaking) then {
    player setVariable ["speaking", _isSpeaking, true]
  };
}];

That is a good point indeed. We will consider introducing such a command as it might have a number of interesting applications. Thank you for sharing such a great idea.

  • Like 1

Share this post


Link to post
Share on other sites

In addition to previous suggestions, I'd like to request these changes on behalf of the whole roleplaying community of Arma (sorted by priority):

 

 

- Move the volume of Direct VON channel under VON slider instead of Effects slider in audio settings

  • I believe that this is, by far, the most important change when it comes to VON
  • currently the direct channel volume is very low compared to other sound sources ingame (and sounds from other programs like TeamSpeak)
    • since the direct channel volume is controlled by Effects slider, you can't increase the volume of direct channel to hear it better, because the volume of other sound effects is increased as much as volume of direct channel
    • currently you have two options:
      • adjust the volume based on general sound effects (then you can't hear the direct channel properly since it's too quiet) or
      • adjust the volume based on direct channel (which makes the general sound effects so loud that you might develop hearing loss)
  • there's craving need to move the volume of direct channel to be controlled by VON slider instead of Effects slider

 

 

- Change the functionality of custom radio channels

  • the current system is a good start, but the number of available custom radio channels should be much higher
    • if you want to utilize the custom radio channels to organize the communication of complex and/or large organizations, you're likely to need more than 10 custom channels (20-30 channels would be enough IMO)
  • to avoid huge number of custom channels in channel list of player:
    • give content creator possibility to show only the channels in which player is attached to (hiding the channels that don't include the player) or
    • hide the other channels by default
  • give content creator possibility to delete the radio channels on the fly (to make room for new radio channels)
    • I think it's more logical to delete the custom radio channel when it's not needed anymore and create new channel later, if there's need
    • currently the content creator has to keep track of status of custom channels manually, which becomes quite complex with high channel numbers (especially when the custom channel limit has been reached, because you have to start prioritizing the channels)

 

 

- Give content creator an option to customize VON transmission of player

  • let content creator to add background noise to VON transmission
    • this rather easy trick (?) would make broadcasts a lot more immersive
      • examples:
        • background noise of helicopter when player's transmitting from helicopter
        • vehicle engine sounds when player's transmitting inside vehicle
  • let content creator to add custom radio squawk sounds (start + end) to make transmissions more immersive

 

 

- Increase the range of direct channel transmission slightly

  • currently players only a few meters away might not hear you at all
  • even better option: let content creator to decide the range of direct channel of player (with similar parameters to custom sounds)
    • this could be used to eg. simulate broadcast from vehicle speaker (having much higher range than direct channel usually)
    • also whispering, talking and yelling could be simulated easily without mods
      • example scenarios where the functionality is needed:
        • crisis negotiation during demanding situations, where the parties can't get close enough to each other (surrounded targets in situations like robbery, hostage situation etc.)
        • giving important information to large audience near player in the gameworld (with eg. car speakers or by yelling)
  • Like 9

Share this post


Link to post
Share on other sites

Very interesting. You sure that's not confidential ? :D

no,

that's list of scripting improvements worked out with/from/for community (be it based on my older ideas or completely new ones)

it was made to keep some overview on the state of those and what was already requested to avoid repeated demands ...

Share this post


Link to post
Share on other sites

This isn't really feedback, more of a question. However, how hard would it be to get background noise into a comms channel, i.e, gunfire or a chopper. In other words, currently when speaking over comms it just the voice so if you're talking to someone in the middle of a firefight its sounds like they're doing nothing, however if there was the intensity of the gunfire/tank/heli/arty going on in the background of the relayed comms it would greatly enhance the immersion of the moment.

 

Kind of like Modern Warfare 2's Singleplayer DC invasion mission radio comms. You could hear the interior turbines in the background when they'd be talking to fast air pilots or the interior muffled growl of the tank when talking to tank crews.

 

 

 

- Give content creator an option to customize VON transmission of player

  • let content creator to add background noise to VON transmission
    • this rather easy trick (?) would make broadcasts a lot more immersive
      • examples:
        • background noise of helicopter when player's transmitting from helicopter
        • vehicle engine sounds when player's transmitting inside vehicle
  • let content creator to add custom radio squawk sounds (start + end) to make transmissions more immersive

 

Pretty much this but also more live feedback of whats going on.

 

For reference,

 

Share this post


Link to post
Share on other sites

Eifehr, thanks for all of your hard work on VON. On our server we switched to OPUS as soon as you released it and we have noticed a dramatic improvement. We hear VON breaking up less than in the past 3 years. It's still not perfect but much improved, kudos for that.

 

As for the future of VON, besides reducing the stuttering, improving security, and giving server admins more control over what's allowed to be on and off is there any conversation at BIS regarding the creation of an "Advanced VON."

 

Something like Task Force Radio / ACRE that gives us range based radios, meaning the radio is affected by range, cloud cover, mountains, buildings, forest, etc, and the ability to choose frequencies. It's the next phase of immersion that this game could greatly benefit from, really giving us a sense of scale and forcing players to stick together even more, because if they do, they lose comms.

Share this post


Link to post
Share on other sites

 

In addition to previous suggestions, I'd like to request these changes on behalf of the whole roleplaying community of Arma (sorted by priority):

 

 

- Move the volume of Direct VON channel under VON slider instead of Effects slider in audio settings

  • I believe that this is, by far, the most important change when it comes to VON
  • currently the direct channel volume is very low compared to other sound sources ingame (and sounds from other programs like TeamSpeak)
    • since the direct channel volume is controlled by Effects slider, you can't increase the volume of direct channel to hear it better, because the volume of other sound effects is increased as much as volume of direct channel
    • currently you have two options:
      • adjust the volume based on general sound effects (then you can't hear the direct channel properly since it's too quiet) or
      • adjust the volume based on direct channel (which makes the general sound effects so loud that you might develop hearing loss)
  • there's craving need to move the volume of direct channel to be controlled by VON slider instead of Effects slider

 

 

- Increase the range of direct channel transmission slightly

  • currently players only a few meters away might not hear you at all
  • even better option: let content creator to decide the range of direct channel of player (with similar parameters to custom sounds)
    • this could be used to eg. simulate broadcast from vehicle speaker (having much higher range than direct channel usually)
    • also whispering, talking and yelling could be simulated easily without mods
      • example scenarios where the functionality is needed:
        • crisis negotiation during demanding situations, where the parties can't get close enough to each other (surrounded targets in situations like robbery, hostage situation etc.)
        • giving important information to large audience near player in the gameworld (with eg. car speakers or by yelling)

 

 

I'd just like to second these suggestions regarding direct VON, it'll be a tremendous asset to organised communities that do not use many/any mods for various reasons (to reduce the barrier of entry and to save time, for example). Some uses include shouting for a medic, talking to people from other groups and squads, or general banter, without clogging up radio channels.

 

While I wasn't playing Arma before Arma 3, I've seen Arma 2 videos where people used direct VON a lot, and it would be great to get that experience in Arma 3 too.

 

At the moment direct VON isn't reliable in terms of volume - most people keep the Effects volume very low (maybe 40% or less) to hear Team Speak and in-game VON, and this results in direct VON being inaudible. Having the direct channel volume controlled by the VON slider or it's own independent slider would be great.

 

I don't know if it's asking too much, but it would be awesome if an in game volume control overlay could be included for direct VON (like ACRE's, for example) that went from "whisper" to "shout" (or "quiet" to "loud", etc).

  • Like 1

Share this post


Link to post
Share on other sites

Command Channel Broadcasting

 

Aside from the VON volume issue already raised above, the VON feature most requested by our community would be: group and command channel transmissions being broadcast in direct channel, as was the case in A2.

 

For example when a Team Leader is contacting the mission Commander via radio, units within range can hear what the TL is saying.

 

This feature gives a boost to immersion in multiple ways, and is something our community misses greatly (we never use mods, and only use vanilla VON):

  • During play, it allows regular units to be more involved in the process of organization/teamwork. It also reduces comm traffic - regular units often end up talking in group when the TL is trying to receive orders from - or relay info to, the commander.
  • During spectating, it allows the spectators to actually hear what is going on in the mission. In our scenarios players only receive one life, after which they must spectate until the next mission. In A2, we would have many players who were willing to - and actually enjoyed spectating the remains of a mission (it is in fact something we encouraged/enforced). Now, this often does not happen, and we see players dropping out of a game becasue of this, where otherwise they would not. In the past we would also use spectator to train green soldiers in our playstyle. This issue is exacerbated by the overly quiet direct channel and makes the life of a spectator a very quiet and isolated one indeed.

Direct Channel Range

 

After reading comments above re: the range at which direct channel can be heard, I found myself agreeing: The distance is not great enough.

 

The concept of having direct channel being broadcast at different ranges (whisper, talk, shout) got me thinking. I believe having to manually switch between modes would be clunky, and very un-splendid ;)

  • What if there was a command for content creators to return the volume at which a player was talking (e.g, getDirectVolume unit).
  • And what if there was a command to set the range at which direct broadcasts (e.g, unit setDirectRange range) - as suggested above.
  • Combining these two commands with the other suggested command (isPlayerTalking) would allow content creators to vary the broadcast range dependent on how loud the player was actually talking.

If this was something which was handled by the engine automatically - all the better :) However i'd happily settle for a scripted solution.

 

This would increase roleplay and immersion and give players a real reason to whisper vs shout in real life.

 

In TvT scenarios our community has played in the past, the sense of presence created when players start whispering to avoid detection - for example - is immense. Even in a coop scenario, being able to whisper to avoid detection by AIs, or being able to shout during a firefight to allow all your men to hear your cries for cease fire - would be such a boost to gameplay.

 

OPUS Codec & General Optimization

 

On our server we have noticed improvements to VON comms already. On behalf of the [TOUR] I want to thank you for your efforts with regard to the quality of communications, and the reduction of the stuttering issues. These aspects have plagued our vanilla-based community for a very long time. Thank you a million times. Keep up the good work!

 

Side Note

 

If anyone can provide me some input on how to indent my bullet points i'd be very grateful XD I've tried inserting bullets, then indenting after. And also indenting first, then inserting bullets after. With both methods the indent is removed upon posting - what am I missing lol. ezcoo you are a wizard i swear.

  • Like 1

Share this post


Link to post
Share on other sites

ezcoo, kain_lowsta

Move the volume of Direct VON channel under VON slider instead of Effects slider in audio settings

The reason why Direct channel behaves differently is in that it is simulated as a sound source in the game world, and the attenuation of perceived loudness is performed accordingly to the laws of physics.

Would you say that introducing more control over the volume of Direct channel, keeping the core principles of the way it functions same, could do us any good?

 

xxgetbuck123, ezcoo

- Give content creator an option to customize VON transmission of player
  • let content creator to add background noise to VON transmission
    • this rather easy trick (?) would make broadcasts a lot more immersive
      • examples:
        • background noise of helicopter when player's transmitting from helicopter
        • vehicle engine sounds when player's transmitting inside vehicle
  • let content creator to add custom radio squawk sounds (start + end) to make transmissions more immersive

even though this feature might improve the immersion dramatically, it would require quite a thorough analysis. In the current VoN iteration we haven't considered anything like it, but in case something like this pops up thanks to your great ideas and feedback, we will make the announcement through our usual channels.

 

spanishsurfer,

As for the future of VON, besides reducing the stuttering, improving security, and giving server admins more control over what's allowed to be on and off is there any conversation at BIS regarding the creation of an "Advanced VON."

no Ãœber-VoN for this iteration.

We thank you kindly for the feedback, do you still face stuttering with either OPUS or Speex, and if so, under which conditions?

 

kain_lowsta, thank you for the feedback and I have to admit that I personally very much like the idea you put into

In TvT scenarios our community has played in the past, the sense of presence created when players start whispering to avoid detection - for example - is immense. Even in a coop scenario, being able to whisper to avoid detection by AIs, or being able to shout during a firefight to allow all your men to hear your cries for cease fire - would be such a boost to gameplay.

Adjusting the volume (which will lead to the audible range being changed) of Direct channel depending of how loudly the player speaks would be quite a feature. If there is a room in the following VoN iterations, I shall do my best to push it there.

  • Like 5

Share this post


Link to post
Share on other sites

ezcoo, kain_lowsta

The reason why Direct channel behaves differently is in that it is simulated as a sound source in the game world, and the attenuation of perceived loudness is performed accordingly to the laws of physics.

Would you say that introducing more control over the volume of Direct channel, keeping the core principles of the way it functions same, could do us any good?

 

This is side effect of game volume being way louder then voice chat.Ideally it would be even and require no need to adjust.

Share this post


Link to post
Share on other sites

Adjusting the volume (which will lead to the audible range being changed) of Direct channel depending of how loudly the player speaks would be quite a feature. If there is a room in the following VoN iterations, I shall do my best to push it there.

 

Please don't do this. I don't want to yell or whisper in real life in order for my game character to yell or whisper. An alternative would be to introduce a in-game volume slider. 

Share this post


Link to post
Share on other sites

ezcoo, kain_lowsta

The reason why Direct channel behaves differently is in that it is simulated as a sound source in the game world, and the attenuation of perceived loudness is performed accordingly to the laws of physics.

Would you say that introducing more control over the volume of Direct channel, keeping the core principles of the way it functions same, could do us any good?

 

Yes. I'd be very happy with this. Just give players enough control over the volume of Direct channel (instead of just letting players to finetune the volume), as the current volume is ridiculously low. It needs to be like at least 400 % louder (instead of 25 % !) in order to hear it properly, so just give us enough room to control the volume and we'll be happy. The importance of controlling the volume of Direct channel volume is increased by the lack of ingame compensatory mechanisms that exist in real life (eg. yelling in noisy environments – see below), so there indeed is high need to compensate it otherwise. :)

 

In addition (assuming that it's a simple task), you could try adjusting the base loudness value of Direct channel sound source that's used in attenuation calculations to be higher than before (simulating louder voice). I assume this would increase the currently too short range of direct transmission.

 

I spent this day exploring the gamemodes currently played in Arma 3, and the results were consistent: I was absolutely unable to hear the Direct channel chatter if there was even slightest background noise (like car driving at a distance) and had still troubles hearing what the person speaking in Direct said even in completely silent environment. The other VON channels, controlled by the VON slider, I could hear perfectly. (Did check my audio settings and sound card driver settings before testing.)

 

 

kain_lowsta, thank you for the feedback and I have to admit that I personally very much like the idea you put into

Adjusting the volume (which will lead to the audible range being changed) of Direct channel depending of how loudly the player speaks would be quite a feature. If there is a room in the following VoN iterations, I shall do my best to push it there.

 

This is impossible to implement without standardized voice capture hardware, drivers & software (or you would need quite a functionality to adjust each player's microphone accordingly). Even programs containing dedicated functionality for adjusting the users' sound input struggle to get the balance of users' microphones right due to the massive differences in setups that people use. For example, I use SVN (Smart Volume Normalization) feature of my sound card that would mess up this kind of functionality completely. On the other hand, I could imagine this being relatively easy to implement via scripting commands.

 

 

TL;DR: Give players control over volume of Direct channel, and content creators control over range of Direct channel.

 

On a side note, I was stunned how good sound quality the new codecs have. The change is simply massive. Big thanks for that! :D

Share this post


Link to post
Share on other sites

spanishsurfer,

no Ãœber-VoN for this iteration.

We thank you kindly for the feedback, do you still face stuttering with either OPUS or Speex, and if so, under which conditions?

 

 

Well that's a shame on changes to VON. To answer your question, yes we occasionally hear stuttering with VON but not as bad as it was. We turned on OPUS the day it came out on vanilla. We host a public server with players who live in Australia to Europe and typically hear the stuttering when players live across the Atlantic/Pacific ponds and have 20+ players on the server. 

Share this post


Link to post
Share on other sites

remember he/me said 'for this iteration' / 'not yet' that don't mean we aren't looking onto more ways how improve VON experience (be it settings, UI, scripting, administration related)

Share this post


Link to post
Share on other sites

I'm having some issues with the new disableChannels command.

My server.cfg entry:

disableChannels[]={{0, false, true},{1, false, true},{2, false, false}};

In theory this should disable VON for SIDE&GLOBAL and completely disable COMMAND. (Btw.: In OP's post the comments appear to be reversed, i.e. claim that the bool value for disabling VON is the one to disable text and vice versa).

 

Observation in-game:
- Side VON is disabled as expected. ChannelEnabled 1 returns values as expected.

- Global works fully. ChannelEnabled 0 returns [true,true]. 0 enableChannel false does *not* disable Global.

- Command works fully. ChannelEnabled 2 returns [true,true]. 2 enableChannel false does disable command channel as expected.

 

Can someone confirm these observations? Will create a ticket if it's a confirmed to be a bug.

Share this post


Link to post
Share on other sites

WolfenswanFA, regarding

0 enableChannel false does *not* disable Global.

please note that the Global channel is always available to the admin.

 

In theory this should disable VON for SIDE&GLOBAL and completely disable COMMAND.

It should not disable anything on the Command channel. Please look at it this way, you have

disableChannels[]={{2, false, false}}

and where there is a 'false' it is like negation of the command's meaning, so we have 'not to disable chat' and 'not to disable VoN'.

  • Like 2

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×