1. Neos VR
  2. News

Neos VR News

0.8.17.31742 - Oculus Quest build update small additions, tweaks and fixes

Some more smaller additions, tweaks and bugfixes. Also updated the Oculus Quest / Android builds to the latest version!

New Features:

- Added "Loading..." indicator to the inventory
- Changed ActiveUserRootOnly to ActiveUserFilter on TouchToggle (based on request by @H3BO3 )
- Added inspector support for SyncBags
- Android builds now also include the headless server (requested by @Anomalous )

Tweaks:

- ValueUserOverride and ReferenceUserOverride now use SyncBag instead of SyncList for storing overrides (based on feedback from @Coffee )
-- This allows concurrent changes from multiple users without the changes overriding due to conflict resolution on the list
- Various small procedural mesh generation optimizations
- Various async/background processing optimizations for inventory browsing
- Small memory and CPU optimizations for SyncBags, inspector ListEditors and other elements
- Patreon badge is preserved for users who have already supported the project, but aren't currently pledged
- Spinner, Wiggler and Panners will now reset to a default position when disabled to ensure same state for everyone

Bugfixes:

- Fixed "Parent under world root" undo step not restoring original transform (reported by @H3BO3 )
- Fixed repeated attempts to capture and upload thumbnail when the upload fails, causing performance degradation
-- The upload is attempted several times with a wait period in between
- Fixed exception in TextEditorParser when the TextEditor component is missing
- Fixed inventory items not saving when the folder hasn't loaded yet
- Fixed not being able to save items with users parented under, that have the SimpleAvatarProtection (the user won't be saved)
- Fixed 360 rendering on Android (Quest) resulting on blank textures

0.8.17.36210 - Many additions, tweaks, optimizations and bugfixes

Lots of various additions, tweaks, optimizations and fixes!

New Features:

- Added ability to pick node type from existing nodes by pointing LogiX tip at them and briefly pressing secondary (implemented by @Coffee )
- Added "ReferenceCopy" under Transform/Drivers (based on feedback from @Coffee and @Bom "Bitman" bomb (PolyLogiX) )
- Added "CreateOverrideOnWrite" to ReferenceUserOverride (requested by @Coffee)
- Added "Filter Invalid" LogiX node which will filter NaN or Infinity values by switching to a fallback value ( based on feedback from @tehturk , @Anomalous , @Bom "Bitman" bomb (PolyLogiX) and @H3BO3 )
- Added IsNan, IsInfinity nodes
- Added first person camera roll to the interactive camera control (requested by @Medra )

Tweaks:

- Updated to latest Assimp version from source (requested by @Karel )
-- This is the public release version 5.0.0
-- Contrains lots of improvements and bugfixes for various model formats
-- Added the new PBR support for FBX (mainly exported from Maya)
- Added a detection for zero-length bones when setting up IK to avoid avatar glitching due to a broken rig
-- This fixes many avatars with VRChat full body hack on import (existing avatars are unaffected)
-- It's strongly recommended to fix the rig instead though to get best behavior out of the IK system
- Categorized "ReferenceUserOverride" under Transform/Drivers (based on feedback from @Coffee )
- Avatar Anchor now fires OnReleased event when the user is destroyed (based on feedback by @H3BO3 )
- Reverted default state of UnparentEverythingOnDestroy on AvatarAnchor back to false
-- This fixes incorrectly configured avatar anchors from spilling out their contents when destroyed
- Added IsNan and IsInfinity protection to SmoothLerp and ConstantLerp nodes ( based on feedback from @tehturk , @Anomalous , @Bom "Bitman" bomb (PolyLogiX) and @H3BO3 )
- When saving objects users are automatically ignored (based on feedback by @H3BO3 and @GearBell )
-- This makes it safe(er) to save avatar anchors or avatars with other users parented under them
-- The users are also excluded from the item thumbnail

Optimizations:

- Rewrote the cloud API communication to use System.Text.Json for serializing/deserializing with direct reading/writing of Utf8 streams for Neos client itself, with memory pooling
-- This significantly improves performance and memory usage (causing less GC churn)
- RSA cryptography keys are now generated in parallel with the login process, speeding up the login
- Optimized bulk record querying in the cloud server to exclude large manifests
-- This speeds up inventory browsing and world searching by using less overall bandwidth, processing and memory
- Optimized world search caching on the cloud server
- Cloud Settings are saved as Local Settings if possible now. This makes sure that last settings are kept locally even when not logged in

Bugfixes:

- Fixed particle systems stopping when SteamVR overlay is enabled (reported by @tehturk )
- Fixed broken global material replacements in the material gun due to recent Undo system changes
- Fixed global material replacements not working for meshes without a mesh collider
- Filtered thread abort exceptions out of the log when shutting down Neos

0.8.17.27905 - Final cloud fixes, lots of improvements and fixes

I think I've finally got the root cause of the cloud server issues! Ironically it seems to be Azure's App Insights diagnostic service, after removing it completely the random drop-outs are gone. I'll be slowly re-enabling things and see how it goes and hopefully we'll be able to get resolution from Azure support, so we can re-enable the service.

There's also a bunch of other improvements, additions and bugfixes in this build! Going onto finishing the asset variant system soon!

New Features:

- Added Tooltip Touch Type "None" which will disable all additional tooltip behaviors (based on feedback by @Coffee )
-- This includs remote or proximity touching and item shelf pointing/swapping and so on
-- This is ideal for things like weapons and other interactive items
- Undo system for spawning/deleting objects now saves all the external assets as well and restores them if they have been deleted in the meanwhile
-- This fixes issue where undoing a destroyed object whose assets were deleted by someone in the meanwhile will have broken assets (e.g. missing material)
-- It also fixes the asset cleanup system from causing missing assets as well (reported by @Dante )
- Added dynamicImpulseString, dynamicImpulseInt and dynamicImpulseFloat commands to the headless client (based on request from @Bom "Bitman" bomb (PolyLogiX) )
-- These allow you to send dynamic impulses with value in the scene

Tweaks:

- Changed "Hide Badge" to "Hide Badges" for interactive camera control, which will now hide badges of everyone in the camera view (based on feedback by @Nexulan)
- "Live" badge is now always hidden from the camera view of the owner user (based on feedback by @Nexulan and @Theofilus the Folf )

Optimizations:

- Added more caching optimizations to the cloud server
- Gave mesh downloads higher priority than other assets. This will help when initially loading into environments as meshes will mostly load first, then textures
- Upgraded to SteamVR Plugin 2.4.5 (SDK 1.7.15) from 2.3.2 (SDK 1.4.18)

Bugfixes:

- Removed Azure Application Insights from the cloud service
-- This fixes the cloud server instability. There seems to be some strange incompatibility/conflict with the diagnostic services with the latest .NET Core and SDK's.
- Added specific Undo/Redo handler for asset references, rather than using generic one
-- This keeps the assets referenced, which prevents them from being cleaned up
-- This fixes cases where undoing material change to a material that has been cleaned up by the asset cleanup or deleted by user will break the material (reported by @Dante )
- Fixed exceptions in Projecion360 material when the texture format is unknown
- Fixed some missing request validations on the cloud server
- Fixed exception in AssetFrameSlot on startup when the frame size is not assigned (found in log from @Somowo )
- Fixed exception in positioning objects in front of users when they're deleted from the world (found in log from @Somowo )
- Fixed invalid instantiation of font sprite assets (found in log from @Somowo )

0.8.17.28049 - Cloud optimizations, streaming status and headless additions

More optimizations and fixes to the cloud infrastructure, hopefully last to ensure the stability of the service. Also some new additions and improvaments!

New Features:

- Added "Live" badge to avatars whenever interactive camera mirroring is enabled or OBS is connected and recording/streaming
-- It can also be manually shown by clicking the "Show Live Badge" in the interactive camera dialog
-- You can make a custom badge by using the AvatarLiveIndicator component under Users/Common Avatar System
-- This is to help make users aware when someone is streaming or recording (based on feedback by @Zane , @Dante , @Veer and @Mr. MegaTronic )
- Added ability to set specific role for each user in the headless server config rather than just admin (based on request from )
-- This replaces the previous setting listing admin users
-- Use a JSON dictionary/value mapping - the key is username and value is the role name
- Added ability to automatically spawn items on headless by listing their URL's in the config file (requested by @tehturk )
- Added ability to list and accept friend requests from headless client (requested by @Dante )
-- Use the friendRequests and acceptFriendRequest commands
- Added keepOriginalRoles setting for the headless server which will preserve the saved roles in the loaded world (requested by @tehturk )

Optimizations:

- Redeployed the cloud server from scratch to fix database connection issues which prevented the service from responding
- Upgraded CosmosDB SDK to help with database connection problems
- Tweaked database retry limits and timeouts to help avoid server congestion
- Added parallel processing for record preprocessing and asset upload finalizations to cloud worker to reduce client-side wait
- Moved App Insights to the same region as cloud servers to help reduce startup and bandwidth issues
- Switched to Self-Contained deployment for the cloud services
- Groups are fetched serially on login rather than all at once, fixing other cloud information (e.g. settings and online status) taking a while to load for users with several groups
- Added clientside header caching when making requests to improve performance and reduce memory usage

Bugfixes:

- Fixed incorrect throttling on sent messages in the chat
- Fixed cloud worker endlessly trying to preprocess outdated records
- Fixed Steam rich presence status showing private worlds to friends (reported by @Coffee )

0.8.17.28465 - More cloud infrastructure optimizations and other improvements

More optimizations to the cloud infrastructure for better reponsiveness, faster syncing/uploads, better scalability and handling for really big worlds/items which would previously fail to sync. Also new feature to prevent running worlds from bloating.
Let me know how things run for you, I'll be monitoring the infrastructure for any issues!

New Features:

- Added periodic unused asset cleanup (default on)
-- This will periodically remove unused assets from under "Assets" in the world. This should help long-running worlds stay healthy and quick to load
-- You can enable/disable this and change the interval in the "Session" dialog
- Added diagnostic texture operation in inspector: Invalid floats (will visualize any pixels that are NaN or Infinity)

Optimizations:

- Reworked record synchronization to use background worker service on the cloud rather than being done within the request
-- This greatly improves API server resposivness and improves synchronization speed
-- This also fixes issue where worlds/objects with many assets (thousands) would fail to sync due to request timeout (previously reported by @Bom "Bitman" bomb (PolyLogiX) , @SHFR_H , @BIOHAZRED and others)
- Implemented a chunk based asset upload. This improves asset upload reliability (allowing much larger assets to be uploaded), server congestion and upload speed by uploading multiple chunks in parallel
- Offloaded asset hashing and verification to separate worker service. This will greatly improve API server responsiveness and improve synchronization speed (especially when object/world has many assets)
- Reworked asset and thumbnail data upload to decrease server load and improve upload speed
- Adjusted server and Neos configuration to optimize interaction with the REST API and asset uploads
- Added response compression for the cloud API
- Some security improvements for the cloud server
- Reworked internal JSON serializations in the cloud server to use the new .NET Core 3.0 high-performance JSON API
- Various async processing optimizations on both Neos client and cloud server
- Various resource leak fixes on the cloud server potentially causing degraded performance under load

Tweaks:

- The root of Audio Players is now marked as ObjectRoot
- Upgraded to Unity 2019.2.9 (from 2019.2.8)
- Upgraded to Oculus Plugin 1.41.0 (from 1.40.0)
-- Includes update for the Oculus Audio Spatializer & Lip Sync

Bugfixes:

- Fixed resource leak when uploading assets to the cloud during sync process
- Projection360 material will implicitly apply value clamping when using HDR textures.
-- This fixes certain HDR skyboxes from corrupting ambient lighting, turning everything black (reported by @pek in Nature Assets world)