1. ChilloutVR
  2. News

ChilloutVR News

Status Report September 2024

Hello there, and thank you so much for checking in!

Further Scripting Progress - Persistence & More!

A new addition to our Lua Scripting system that has just been released to one of our Nightly branches is Persistence, which allows creators to store data on the user’s local machine and be preserved for later use.

This means that anything from simple toggles, to game save data, can be maintained across instances, worlds, and even play sessions. While the convenience of not having to flip the same settings in your favorite cozy world for every visit is exciting in it’s own right, we also hope it’ll allow creators to build games and similar content with longer-term play in mind. Saving scores and personal bests are a couple of great uses that come to mind, but there are limitless applications that can be realized and expanded upon.

While such use-cases may be obvious enough when it comes to Worlds, keep in mind that Scripting is also available for Props and Avatars as well, all of which may take advantage of the benefits that persistence offers.

So, how does it all work? As noted before, this data is stored on your local machine, but in two different forms: public and private. Public storage is a user-readable/editable JSON file, and can be used for simple preferences and configuration. Private storage is intended for something like game save states, and is an encrypted binary file designed to be secure and inaccessible to the user.

Additionally, we also plan to provide a server-side storage solution for persistent data down the line that will allow for even further security by not being stored on any user’s local machine.

Finally, in a recent Patreon meetup with the community, we were asked about our plans for scripting and what’s to come, so we’d like to share that here as well.

In an early Status Report discussing scripting and its features, we mentioned that additional languages would be added over time. One such language that is under heavily consideration is WASM, or WebAssembly. While plans for this are not necessarily set in stone, we are hoping to begin development on WASM when our current Lua implementation is in a more mature state.

Another new feature that we plan to make available to creators is the Scripting Network. This will allow creators to have more freedom and control over how scripts sync over the network, instead of being bound to spawnable/object sync, tailoring it to their specific needs.

More information to come on these features and more in the future.

If you would like to try out Persistence for yourself, and by extension the in-development Lua Scripting system, more information is available in our Community Discord server.
Deep Links

Recently, we introduced a new feature in the latest Stable release called Deep Links, which allow for interactions via url links such as joining an instance or viewing user/content details page with a link from outside of the game.

This can currently be seen and used by logging into our Hub, and joining a friend in an accessible instance via the 'JOIN - VR MODE' and 'JOIN - DESKTOP MODE' buttons. It is also possible to access the in-game details for users and content via a button on their respective Hub pages.

To enable Deep Links, upon launching the game, you will be prompted to install the necessary requirements. However, if wished, you may opt-out.
Community Documentation

One important bit of feedback that we often receive here at ABI about our relatively insufficient documentation. Admittedly, it is a problem of our own creation as it can be easy to lose track of these things throughout the development process. Though we have been striving to correct that and fill in the gaps, there is quite a lot of information to cover which takes time for a small team to juggle on top of working on additions to the game itself.

So, we’ve decided to open up our documentation for members of the community to contribute their knowledge and know-how of ChilloutVR! If you have any relevant information about playing the game or creating content that you believe would be useful to new, and even existing, users then we would be grateful for your support.

Instructions for contributing to the documentation can be found on our GitHub repository here: https://github.com/Alpha-Blend-Interactive/docs

We look forward to your submissions!
Groups Progress

Quick little update on Groups!

To briefly recap; Groups is a new feature coming soon to ChilloutVR that will make it much easier to organize and keep up with different groups of players for anything from small gatherings to larger events. Members of a group are able to join Group instances, including instance types that are exclusive and non-exclusive to the Group, and even display a preferred group in their profile for all to see.

We’re happy to say that we’ve made significant progress on this new addition, and expect an initial release to be available very soon. Most of the basic functions that will allow group leaders to create, manage, and customize their group, including new instance types, images, banners, and pre-defined roles, will be available on launch both from the hub and game itself. However, there is still more to come post-launch, such as announcements and post, and longer-term plans that are still in development including events, user defined roles, and the ability to display your preferred groups on your nameplate.

While we have mentioned in the past that this would likely be introduced sometime after the release of the UI 2.0 update, we’ve instead decided to include Groups in the game’s current UI while we continue to work with your feedback on the preview shown in August.

We know this has been a very highly anticipated addition for our community, one we can’t wait to get in your hands.
Final Notes

As always, thank you for your continued interest and support of ChilloutVR's development.
[h3]Social Media[/h3]
Find us on social media with the links below:

Discord

Twitter (Company)

Twitter (Status)

YouTube

Reddit
[h3]Support Alpha Blend Interactive[/h3]
Like every company, we need financial support to be able to push updates and improve our product. We are grateful for every bit of support we get.If you want to support us you can do so from our Patreon

We are more than thankful for your support!
[h3]Not in our Discord server yet?[/h3]
Use the link above to join our discord server and get in touch with our wonderful community, find help with creation-related topics, and meet new people to play with!

ChilloutVR 2024r177

We have just released a Stable update to ChilloutVR that includes various fixes and improvements, in addition to the new Deep Links feature.

  • Added a Notification when loading an unknown URL and the whitelist is disabled. (Can be disabled in settings; On by default)
  • Added a VideoPlayer Unknown URL notification.
  • Added instance type parameter stream
  • Added pickup disable push/pull option
  • Added some measures to prevent the avatar loading from stop working
  • Added Deep Links, which can trigger game actions by clicking on links.
    • You can enable this feature by accepting the prompt the first time you open the big screen
    • You can use `--skip-deep-link` as launch argument to disable deep link install prompt and and behaviour while the game is running (it won't prevent the game from starting)
    • After Installing you should be able to click links to:
      • Join an instance (will start the game if the game is closed)
      • Open the details pages on the main menu (only works if the game is already running)
  • Attempt to fix crash issue with the Portable Camera's Image Saving system
  • Finished implementing Auto-Switch on SteamVR Quit as an Experimental Setting
  • Fixed `CVRInteractable` Teleport Player with gravity alignment option not working
    • It works both with world and gravity zones gravity (depending which one has higher priority)
    • Respects the same rules for aligning as the normal gravity alignment
      • You won't be aligned if the winning gravity result has alignment disabled
      • You won't be aligned if the resulting gravity is `0`
  • Fixed Alignment Issue with Nameplates and Loading/Distance Avatars
  • Fixed an issue that prevents hearing other Users
  • Fixed an issue with AssetFilter causing crashes.
  • Fixed an issue with Avatar Reload Spam when other players get Reconnected
    • Now when players disconnect their avatar won't be deleted right away, there is a short period which the game waits for them to reconnect
  • Fixed an issue with Avatars not Reloading properly
  • Fixed an issue with Background Threads not awaiting for Main Thread Jobs in MTJobManager.
  • Fixed an issue with CPU Flooding on AMD CPUs from unmanaged Thread.Sleep calls.
  • Fixed an issue with CVRFaceTracking not staying within BlendShape array bounds
  • Fixed an issue with FixedDeltaTimeAdjuster getting overridden by outside sources
  • Fixed an issue with Loading Avatar showing 0% when actually loading assets
  • Fixed an issue with Nameplate Height Offset being incorrect for Loading Avatars at Distance
  • Fixed an issue with not Validating Players when receiving Prop Spawn requests from the Game Server.
  • Fixed an issue with Player Join/Leave Notification Spam when other players get Reconnected
  • Fixed an issue with Players being invisible until their Avatar Download starts
  • Fixed an issue with Prop Spawning that deleted Props upon Update
  • Fixed an issue with Prop Spawns breaking Loading Avatars
  • Fixed an issue with PuppetMaster spamming errors when an Avatar's Animator isn't initialized
  • Fixed an issue with RCC_Exhaust spamming errors
  • Fixed an issue with some Avatars breaking the instantiation queue
  • Fixed an issue with TTS sometimes using the wrong Pitch and Rate values on some systems
  • Fixed an issue with World Loading causing Instance Desync.
  • Fixed a threading and crash issue with Comms_AudioTap.OnAudioConfigurationChanged
  • Fixed Custom Physics Collision matrix from worlds not affecting the Local Player
  • Fixed interactable not spawning objects
  • Fixed Re-joining a world that has been updated does not load the new version the first time
  • Fixed Render Issue with Loading/Distance Avatars
  • Fixed Scaling Issue with Loading/Distance Avatars
  • Fixed some cases where the asset filter would error with null references from already destroyed objects.
  • Fixed the Jump & Gesture Toggle Buttons not being able to be bound to the opposite hand.
  • Fixes late sync for prop video players.
  • Implemented and Exposed `SetGuid` method call for `CVRAvatarPickupMarker` and `SpawnablePickupMarker`. This must be called from `CVRInteractable` Method Call
  • Implemented a Rate Limiter to the VideoPlayer
  • Implemented Close Menus On Join Setting
  • Implemented Instance Connected HUD Notification Setting
  • Improved the Join/Disconnect notifications to clear the pending same user notifications when new ones are arriving.
  • Merges three AVPro players down into one per player
  • Optimized the mirror by masking the area that the mirror actually needs to render.
  • Preparation for new pointer interaction
  • Reworked Connection Handling to fix an issue with all Avatars being reloaded on Auto-Reconnect
  • Reworked Stale Player Reference checking to be more reliable
  • Reworked the download manager
  • Updated MagicaCloth 2 to 2.10.0
    • Release Notes available here
  • Updated SteamVR Unity Plugin to v2.8.3-beta

Status Report August 2024

Hello there, and thank you so much for checking in!

Progress on UI 2.0


“Wait, the UI 2.0 update is real???”

Yes, yes, we haven’t just been teasing it for nothing. As many in our community will no-doubt remember, we have been discussing a redesign of our UI for quite some time now. Over the last few months, we’ve managed to make significant progress on the design and implementation of it, and have finally approached a point where we can provide a little sneak peak of what can be expected.

Here is a short preview of it in action:



Keep in mind that this design is still far from complete, and still contains more than a few placeholders, but we wanted to give everyone a general idea of our progress so far.

The UI backend has been completely reworked with further expansion in mind, so future additions, and even mods, will be able to implement new UI elements and features much easier going forward.

Also, as you’ll notice, we’ve introduced a new Tabs system at the top so that multiple pages may be stored and revisited with ease. Now you will be able to view someone’s profile, check out a world, spawn a prop, change your settings, and much more without having to repeatedly navigate to those pages.

While we do not yet have a timeframe for when this will be available, we hope to spread some of the excitement for this that we’ve been feeling here at ABI. Improving the general user experience is very important to us, and this is just another step in that direction. Please look forward to more news regarding further UI updates in the future, and let us know what you think!

Changes to Public Testing Builds


Earlier this month, we discontinued our public Experimental branch in favor of a new testing format. It was meant to allow our community to test and preview new features ahead of time, before being pushed to a stable release of the game. However, due to the large amount of changes that were usually present in Experimental updates, it would take some time to address community feedback and conduct internal QA testing before another update could be provided.

So, we figured we’d cut down on a lot of that time and switch to a Nightly format that consists of much more frequent, and at times less stable, releases. This allows those who provided feedback on certain issues to test related changes as soon as possible, which can be a major positive for the occasional unique issue that takes time to make it to a stable release.

Additionally, our Lua scripting system that had been introduced in the last few Experimental updates has been moved to its own Scripting Nightly branch. This was done so that it has time to mature, and allow the development team to work on other features and fixes without having such a major feature halting future stable releases before it’s ready. Not to worry though, creators can still easily access this branch by simply joining our community Discord server and snagging the beta code.

Improving User Input


We are aware of various issues that have been affecting user input with certain UI components in the game, specifically when it comes to interacting with them using the VR laser pointer. Props seemed to exhibit this behavior a bit more, but such issues weren’t unique to that content. So, we have began working to resolve them by making changes to how we work with Unity UI.

For the technically inclined: This was due to Unity UI being manually driven instead of driving it through Unity’s Event System, which works far better in virtually every case.

We are currently looking for feedback to ensure a smooth transition for when these changes make it to a stable release, aka nothing is horribly broken as a result. An Interaction Nightly branch is now available for public testing, and as usual all relevant information is available in our community Discord server.

Addressing Avatar Reloading when Recovering Connection


Occasionally, players will be disconnected and reconnected from our game server, which is most noticeable by the fact that all avatars worn by other players are reloaded as a result. This can happen for a number of reasons, which we are working to mitigate over time. However, in an attempt to make it as seamless as possible, regardless of the reason, players are immediately reconnected to the same instance, in the same position, without any loading screens or world transitions.

As mentioned, an unfortunate side-effect of being disconnected from the instance in the first place is that player avatars are unloaded, requiring them to be loaded yet again. Sometimes, especially in severe cases, this can break the loading queue and prevent any avatars from loading further.

We know that this has been a point of frustration for players, and so we have begun rolling out some fixes to address these issues to one of our public testing branches available alongside the regular Nightly releases. While the solution on the surface is to simply not unload avatars in such situations, it’s a bit more involved than that, but that is more or less the end result. Expect these fixes to be included in a stable release in the near future.

Final Notes

As always, thank you for your continued interest and support of ChilloutVR's development.

[h3]Social Media[/h3]
Find us on social media with the links below:
Discord Twitter (Company) Twitter (Status) YouTube Reddit

[h3]Support Alpha Blend Interactive[/h3]
Like every company, we need financial support to be able to push updates and improve our product. We are grateful for every bit of support we get.
If you want to support us you can do so from our Patreon

We are more than thankful for your support!

[h3]Not in our Discord server yet?[/h3]
Use the link above to join our discord server and get in touch with our wonderful community, find help with creation-related topics, and meet new people to play with!

ChilloutVR 2024r176

Major Changes:


[h2] New VR Login Room [/h2]
We have created a new VR login room from the ground-up when logging into ChilloutVR

[h2] Steam Sign-up [/h2]
New Players can now sign-up using the Steam account they are currently logged in to when launching the game for the first time!

[h3] Changes: [/h3]
  • Added Facetracking interpolation for remote clients
  • Added Modern Procedural UI Kit to the Spawnable whitelist
  • Added the ability to login with the Steam account linked to you ABI account (you can associate in the hub)
  • Adjusted Main Menu in VR to have a slight pitch to better center within view (15 degrees)
  • Adjusted Main Menu in VR size to not engulf the entirety of your view (75% of og size)
  • Adjusted mute sound to be deeper in pitch
  • Adjusted one handed VR controls to open Quick Menu with press and Main Menu with hold
  • Adjusted Quick Menu on Desktop to scale with aspect ratio like Main Menu
  • Adjusted Show Distance Avatar setting to Enabled by Default
  • Adjusted the default blinking interval to be between 3 and 8 seconds instead of 0.4 and 8 seconds (only affects the CCK 3.10+)
  • Changed the login screen to always present the 2D UI on the desktop display, even when starting the game in VR
  • Cleaned up slight hiss in mute/unmute audio clips
  • Completely replaced the VR Login room
  • Destroy duplicated animator controllers
  • Disabled rotateChestByHands for Halfbody VRIK
  • Disabled saved cal by default as Universal Calibration persists between restarts since last update
  • Enforced culling settings on all Magica Cloth 2 components on Avatars
  • Fixed a bug allowing a new blink being able to start while a previous blink was still progressing
    • Resulted in the current blink being cutoff
  • Fixed a Cohtml crash
  • Fixed a crash issue with Steam Audio on Props by rewriting the fix for Worlds
  • Fixed a potential race condition that would result in cohtml native crashes
  • Fixed an issue that could cause the avatar/world loading stuck
  • Fixed an issue where AAS was being needlessly applied to distance hidden avatars
  • Fixed an issue where a remote player camera indicator would not be updated if an avatar is hidden
  • Fixed an issue where an avatars head-hiding would still run on occluded mesh
  • Fixed an issue where an avatars Shadow Clone would not reflect the visibility state of an occluded mesh
  • Fixed an issue where Beautify and AzureFogScattering components persisted between world changes
  • Fixed an issue where CVRMovementParent would calculate fixed velocity when not in use & when not using Parent Velocity Inheritance Mode
  • Fixed an issue where menus could be interacted/opened during the initial load
  • Fixed an issue where remote avatars playing Emotes did not disable NetIK
  • Fixed an issue where some camera settings were not reset properly when going from a world with a reference camera specified to one without
  • Fixed an issue with Audio Processor disposal not working properly
  • Fixed an issue with BBC sometimes not retrying connection
  • Fixed an issue with CVRObjectLoader throwing errors and breaking Instantiation Queue
  • Fixed an issue with DarkRift sometimes failing to Finalize Connection
  • Fixed an issue with DarkRift's UnityClient.ConnectInBackground when Connection fails
  • Fixed an issue with Disconnect HUD Notification throwing an NRE
  • Fixed an issue with Distance and Loading Avatars not scaling to the user properly
  • Fixed an issue with GameInstanceController Erroring on World Load
  • Fixed an issue with GameServer and Host Resolve timeouts causing voice to not reconnect
  • Fixed an issue with HUD Communications Indicator becoming desynced
  • Fixed an issue with Interactables Erroring when using SetComponentActive
  • Fixed an issue with Loading Avatars not showing on first join
  • Fixed an issue with Magica Cloth 2 Gravity Interaction not working as expected in some cases
  • Fixed an issue with Menu Headlook breaking VR Input
  • Fixed an issue with Opus Bitrate calculations being incorrect
  • Fixed an issue with Opus causing a crash due to race condition
  • Fixed an issue with Opus Encoder not having the appropriate Default Values applied
  • Fixed an issue with Opus handling leaking memory
  • Fixed an issue with Player Voice AudioSources getting stuck Mute
  • Fixed an issue with Player Voice Volume Curve Generation not generating a new curve when Falloff Distance gets changed
  • Fixed an issue with PlayerPhysicsProxy running for players who were distance hidden
  • Fixed an issue with Props being Spawned & Deleted at the same time breaking CVRObjectLoader
  • Fixed an issue with Remote Player Visemes staying open when Muting
  • Fixed an issue with Rich Presence spamming logs
  • Fixed an issue with Scene Unloading happening too early
  • Fixed an issue with SkinnedShadowClone throwing an error
  • Fixed an issue with Steam Audio causing crashes from not unloading Scene Objects properly
  • Fixed an issue with Steam Audio not having it's used Camera set
  • Fixed an issue with SteamAudioSource throwing an NRE if it doesn't have an AudioSource
  • Fixed an issue with SteamAudioStaticMesh causing a Crash on World Unloadchanged
  • Fixed an issue with TTS Initialization causing crashes on some Windows installs
  • Fixed an issue with World Transitions not checking for Setting changes
  • Fixed an issue with Worker Thread MTJob Task Disposal stalling threads
  • Fixed an issue with Worker Thread MTJob Tasks causing abnormal CPU usage on certain systems
  • Fixed Avatars uploaded with disabled Animators causing issues
  • Fixed CVRDistanceLod measuring from playspace center instead of player position while in VR
  • Fixed CVRDistanceLod not measuring 2D distance correctly when player is rotated via Gravity
  • Fixed CVRParticleSound simulateSpeedOfSound option to use player camera position instead of playspace center for determining distance from sound
  • Fixed DistanceTo core parameter defaulting to 0 when remote player is created (now defaults to -1f)
  • Fixed Download Percentage Indicator not properly over-rendering UI
  • Fixed Error spam With FluidVolume Materials
    • Stream material properties will now apply to the entire renderer instead of the first material
  • Fixed hard limits for blink interval and blink duration being swapped
  • Fixed leaking materials
  • Fixed LocSwimmingBackward CCK animation clip
    • Swimming backwards no longer rotates legs sideways
  • Fixed not being able to disable CVRBlitter
  • Fixed not being connected properly to the API after logging out and then logging in
  • Fixed OnFailedVRModeSwitch disabling all input instead of returning it
  • Fixed OnVRModeSwitchRequest being invoked after force closing the UI
  • Fixed Post Processing not rendering properly
    • Fixed color banding on photos
  • Fixed remote clients incorrectly cancel emote when player is ungrounded
  • Fixed remote player collision being plump and round
  • Fixed remote player collision not being scaled correctly prior to first avatar load
  • Fixed SceneLoaded Job
  • Fixed Shadow Clone breaking in certain scenarios (thanks NotAKid)
  • Fixed SkinnedShadowCloneFallback not casting shadows in some setups
  • Fixed spawnable subsyncs not being interpolated properly
  • Fixed standing on Non-Convex Mesh Colliders that were read/write enabled nuking performance depending on how complex the mesh was
  • Fixed sub sync pickup locking on props when moved with physics
  • Implemented Global and Per-User Settings for Player Voice Normalization
  • Implemented noise suppression
  • Implemented normalization for player voices
  • Implemented optimization where SkinnedTransformHider will not constantly check for runtime bone changes if Magica Cloth is not used on the loaded avatar
  • Implemented StateMachineCallbackSender State Behaviour & CVRStateMachineCallbackManager to handle it
  • Implemented Steam Sign-Up
  • Improved BBC Client, Multi-Threading, and Connection Handling
  • Improved network IK latency
  • Improved the Avatar loading and Avatar hiding by distance
  • Improved the initialization process, resulting in slightly faster loads and smoother loading screens from starting the game to joining the your home world
  • Listen for DesktopVRSwitch binding manually instead of using CVRInputManager so Virtual Keyboards can use the binding
  • Matches local player collision scaling again
  • Potentially fixed legacy standard in VR (which caused some worlds to show up weird)
  • Prevent the initial load fade out and the vr switch transitions from being disabled by setting transition to none
  • Reduced the number of allocations we're doing in the update loop
  • Refactored WorldTransitionSystem to allow to add new cameras easily
  • Removed global textures on updater destroy
  • Replaced Opus SoftClip with Manual Clamping
  • Switched Player Voices to use a Generated Logarithmic Volume Curve instead of a Preset Volume Curve
  • The video player domain whitelist/blacklist system has been rewritten.
    • The json file structure has been changed. There is a migration process that will take your current configuration and update it properly. The native whitelisted domains will be removed from the user configured whitelist.
    • During the Migration, a backup of the old configuration will be created on the folder ConfigBackups next to the config.
    • Policies can now use regex when using urlHost that start with ^ and end with $ (The \ characters need to be escaped by adding a second one). Example: ^(www\\.)?example\\-regex\\-deny\\.com$
    • Policies can now use wildcards, if the wildcard is preceded by a ., the . becomes optional. Example:
    • .example-wildcard-deny.com
    • Policies will default to exact match if both those cases were not used. Example: example-exact-match-deny.com
    • Reworded bad URI error to be more informative
    • Note: The urls defined on the whitelist are just the host part of the url. Basically subdomain and domains. It doesn’t include the protocol (eg: https://), nor anything after the top level domain (eg: .com)
    • Added Kick to the native whitelist
  • Updated Magica Cloth 1 to v1.12.13
    • Release Notes available here

ChilloutVR 2024r175 Hotfix 5

We have just released a Hotfix update to ChilloutVR that addresses crash-related issues primarily affecting systems that use AMD CPUs.