Skip to content

Releases: Guribo/UdonVoiceUtils

1.0.0-rc.4

10 May 14:15
Compare
Choose a tag to compare
Release 1.0.0-rc.4

1.0.0-rc.3

03 May 21:22
Compare
Choose a tag to compare
Release 1.0.0-rc.3

1.0.0-rc.2

13 Apr 21:48
a2ef0aa
Compare
Choose a tag to compare
chore: prevent updating to unsupported UdonUtils versions

1.0.0-rc.1

19 Nov 15:53
98fc6f0
Compare
Choose a tag to compare

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
    • 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 support for de-/activating UVU at runtime
    • Disable/Enable either the GameObject with the PlayerAudioController or the PlayerAudioController component itself
  • 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()
  • 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 another PlayerAudioOverride upon receiving a LocalPlayerAdded or LocalPlayerRemoved event from a given PlayeraudioOverride
    • 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 upon Start

Deletions

  • Remove UdonCommon and other, similar library scripts from prefabs and use code statically
  • Remove AutoPlayerRange script (now part of UdonUtils)
  • Remove CustomAudioFalloff script (now part of UdonUtils)

Other

  • Rename from UdonBetterAudio to UdonVoiceUtils
  • Move from Assets/Guribo/UdonBetterAudio to Packages/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 into Demo and move to Packages/tlp.udonvoiceutils/Runtime/Scenes/Demo
  • Rework of example Menu and underlying architecture
    • Relies on MVC pattern introduced in UdonUtils
  • Move settings from former BetterPlayerAudio component to PlayerAudioConfigurationModel
  • 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 from UdonUtils
  • Renamed core prefabs to start with "TLP_"

UdonBetterPlayerAudio v0.8

26 Sep 17:10
Compare
Choose a tag to compare

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)

12 Jul 23:53
Compare
Choose a tag to compare

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
    image
    image
  • Added visual indicators for entries/exits for rooms
    image
  • Added indicators for related Overrides, both for VoiceOverrideRooms and for the main BetterPlayerAudio controller (you can click the ends of the lines to select the related UdonBehaviour).
    image
    image
    image
    image
    image
  • Added reverb support (lowpass etc. will be added again later)
    image
  • Removed 4 old example worlds (replaced by demo world shown)
  • Much much more...
    image
  • A lot of the code is now tested!
    image

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

12 Jun 17:00
Compare
Choose a tag to compare

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

10 Apr 20:23
Compare
Choose a tag to compare

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 and SyncedPlayerId.cs
      • OwnershipTransfer.cs can be used to take ownership of an entire gameobject hierarchy at once, used to transfer ownership to new microphone users
      • SyncedPlayerId.cs is a manually synchronizing behavior that synchronizes e.g. the current user of the microphone on demand without network overhead

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

15 Mar 21:28
Compare
Choose a tag to compare

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

      image

    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

16 Jan 00:06
Compare
Choose a tag to compare

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 occlusion with separate slider
    image

  • 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 option to control the rate at which players get updated
    image

  • added 4 example scenes
    image