Releases: Guribo/UdonVoiceUtils
1.0.0-rc.4
Release 1.0.0-rc.4
1.0.0-rc.3
Release 1.0.0-rc.3
1.0.0-rc.2
chore: prevent updating to unsupported UdonUtils versions
1.0.0-rc.1
1.0.0 Change Notes
Additions
- Add
PlayerAudioConfigurationModel
component- One is used for current global configuration
- One is used as default settings
- used when the
Reset All
button on the example menu is pressed
- used when the
- One is used to synchronize the master with all other players
- when UVU is used combination with the example menu
- Rely on new Execution Order defined in
UdonUtils
- Add AnimationCurve
HeightToVoiceCorrelation
to change voice range automatically in relation to avatar height (off by default)- Add to global
PlayerAudioConfigurationModel
- Add to
PlayerAudioOverride
- Add to global
- Add support for de-/activating UVU at runtime
- Disable/Enable either the GameObject with the
PlayerAudioController
or thePlayerAudioController
component itself
- Disable/Enable either the GameObject with the
- Add
DataDictionary
of UdonBehaviours mapped to PlayerIds (int
) that can be used to get notified whenever a player is updated- DataDictionary name:
PlayerUpdateListeners
- Keys: playerIds (integer)
- Values: UdonBehaviour
- Expected public Variables on listening UdonBehaviours:
public bool VoiceLowpass
public float VoiceGain
public float VoiceDistanceFar
public float VoiceDistanceNear
public float VoiceVolumetricRadius
- Expected functions on listening UdonBehaviours:
public void VoiceValuesUpdate()
- DataDictionary name:
- Add
PlayerAudioView
component which takes care of receiving input from the example menu and takes care of updating the menu in return - Add
VoiceRangeVisualizer
prefab that updates and displays each players voice range in real time for debugging/testing purposes - Add
DynamicPrivacy
script that can update the privacy channel of anotherPlayerAudioOverride
upon receiving aLocalPlayerAdded
orLocalPlayerRemoved
event from a givenPlayeraudioOverride
- Allows creating complex privacy channel setup, e.g. stages with private production areas (please check the demo world for such an example)
Fixes
- Fix "memory leak" in which new GameObjects would get instantiated every time a player entered a zone leading to decreased performance in long running instances which relied on zones
- The objects are now pooled and re-used
- Fix bug in
VoiceOverrideRoom
that caused in rare cases the list of players to not being updated - Fix issue making players already inside of triggers not being affected by
PlayerAudioOverride
when entering the world by briefly toggling all relevant triggers off and on again uponStart
Deletions
- Remove
UdonCommon
and other, similar library scripts from prefabs and use code statically - Remove
AutoPlayerRange
script (now part ofUdonUtils
) - Remove
CustomAudioFalloff
script (now part ofUdonUtils
)
Other
- Rename from UdonBetterAudio to UdonVoiceUtils
- Move from
Assets/Guribo/UdonBetterAudio
toPackages/tlp.udonvoiceutils
- Convert to VRChat Creator Companion package
- Update to latest Udon API where appropriate
- Rely on GUIDs instead of Assembly names in Assembly Definitions
- Rename
PrivateZones
demo scene intoDemo
and move toPackages/tlp.udonvoiceutils/Runtime/Scenes/Demo
- Rework of example Menu and underlying architecture
- Relies on MVC pattern introduced in
UdonUtils
- Relies on MVC pattern introduced in
- Move settings from former
BetterPlayerAudio
component toPlayerAudioConfigurationModel
- Simplify usage and explanations of occlusion values
- Change update rate to no longer depend on time but on rendered frames --> more predictable performance on slower PCs/Quest
- Extensive rework of main
PlayerAudiController
- Remove workaround to determine avatar height and use avatar eye height of
VrcPlayerApi
instead - Change behaviour of private channels to only mute people on the outside if the boolean
muteOutsiders
is set to true- previously just being in a private channel muted all players on the outside by default
- Change previous event handling to use new class
UdonEvent
fromUdonUtils
- Renamed core prefabs to start with "
TLP_
"
UdonBetterPlayerAudio v0.8
Features/Changes
- added workaround for some generic avatars that don't have head tracking data
this should fix most if not all issues of some players/avatars not being audible
- added support for enabling/disabling VoiceOverrideTriggerZone
UdonBetterPlayerAudio v0.7 (Unity 2019 update)
Requires the latest UdonSharp version and VRChat World SDK version.
Features/Changes
- Update to Unity 2019
- The
BetterPlayerAudio
UdonSharpBehaviour no longer applies special effects like occlusion/directionality by default! - Added the world shown off at the community meetup including all new features.
You can find it in Assets/Guribo/UdonBetterAudio/Examples/PrivateZones.
- Added private zones/channels/rooms/doors
- Added visual indicators for entries/exits for rooms
- Added indicators for related Overrides, both for
VoiceOverrideRooms
and for the mainBetterPlayerAudio
controller (you can click the ends of the lines to select the related UdonBehaviour).
- Added reverb support (lowpass etc. will be added again later)
- Removed 4 old example worlds (replaced by demo world shown)
- Much much more...
- A lot of the code is now tested!
Special Thanks
Thank you Merlin for creating U#!
Thank you to the flyboys Sacchan, Zweikaku, Nonn and all of the Sacchill discord for helping me test my weird stuff every now and then!
Huge Thank you to the VRChat Community Meetup people for allowing me to show it off and test it with all of you!
Special thanks goes to CyanLaser and Squid for hosting this awesome event and allowing me to re-test a feature at the end of the meetup after the first test turned out to be too short.
Thank you all very much!
UdonBetterPlayerAudio v.0.6
Features
- completed rework of new networking implementation
- added VoiceOverrideZone behaviour (check the tutorial here on how it was created and how it can be used)
- lowered the default values for directionality
- allowed higher ranges for voices (matches VRChat documentation now)
- made code base more modular using UdonUtils
Fixes
- minor microphone issues fixed
UdonBetterPlayerAudio v.0.5 network-beta
Note: this is a pre-release because the networking beta is still open, there may be bugs and changes in behaviour due to the ongoing development of VRChat. Further more: this release can not yet be used in the Open Beta or on the Live version of VRChat. Please use the Networking Beta
Features
- complete rework of networking implementation
- uses now no bandwidth at all except when settings are changed
either when someone picks up a microphone or when the master changes menu sliders
- added two new scripts:
OwnershipTransfer
andSyncedPlayerId.cs
OwnershipTransfer.cs
can be used to take ownership of an entire gameobject hierarchy at once, used to transfer ownership to new microphone usersSyncedPlayerId.cs
is a manually synchronizing behavior that synchronizes e.g. the current user of the microphone on demand without network overhead
- uses now no bandwidth at all except when settings are changed
Fixes
- fixed a bug that prevented the UI from resetting all values at once
was discovered because there is now only one single deserialization event instead of a continuous stream of update deserialization events
UdonBetterPlayerAudio v.0.4
Demo: https://twitter.com/GuriboVR/status/1371191149742940164
Fixes
- fixed issue with multiple microphones being used at the same time
previously all but the last user stopped being affected as soon as someone else picked up another microphone
Features
-
added BetterPlayerAudioOverride component
-
one such component can be used to override the settings for one or many players
This allows having effects like occlusion when e.g. using a microphone. The previous method of ignoring players is additionally still available as an alternative.
-
for each player only one override can be active
Adding a player to another override and applying this new override using
betterPlayerAudio.OverridePlayerSettings(...)
will replace the existing override for this player
Code example for one player being affected by the microphone (full example can be found here):
// adding a player to be affected by the current override var newMicUser = VRCPlayerApi.GetPlayerById(newUser); if (!Utilities.IsValid(newMicUser)) { return; } if (Utilities.IsValid(betterPlayerAudioOverride)) { betterPlayerAudioOverride.AffectPlayer(newMicUser); } playerAudio.OverridePlayerSettings( betterPlayerAudioOverride); // removing a player from the current override var currentMicUser = VRCPlayerApi.GetPlayerById(oldUser); if (Utilities.IsValid(currentMicUser)) { if (Utilities.IsValid(betterPlayerAudioOverride)) { betterPlayerAudioOverride.RemoveAffectedPlayer(currentMicUser); } playerAudio.ClearPlayerOverride(currentMicUser.playerId); }
-
-
example scenes were updated to use the new system
Notes
Special thanks goes to Niyah for suggesting the idea of microphones being affected by occlusion.
UdonBetterPlayerAudio v.0.3
Demo: https://twitter.com/GuriboVR/status/1350226603964510210
VRChat demo world: https://vrchat.com/home/launch?worldId=wrld_54499500-9003-42c6-8ae8-72110adbcdef
Fixes
- #4: fixed players leaving or joining muting everyone (reported by owlboy)
- fixed audio controller breaking when used without the menu
Features
-
added player exclusion system
- added pickup microphone as example usecase
var currentMicUser = VRCPlayerApi.GetPlayerById(oldUser); if (currentMicUser != null) { playerAudio.UnIgnorePlayer(currentMicUser); } var newMicUser = VRCPlayerApi.GetPlayerById(newUser); if (newMicUser == null) { return; } playerAudio.IgnorePlayer(newMicUser);
- added pickup microphone as example usecase
-
added option to control the rate at which players get updated