1. Neos VR
  2. News

Neos VR News

0.8.18.33266 - Many bugfixes, preventing data loss when saving worlds

A bunch of important bugfixes, particularly to prevent data loss with world saving. Sorry for the smaller builds now, I've been busy with a few other things and I'm designing the new font rendering system now.

New Features:

- Added ability to load worlds directly from a raw 7zbson and lz4bson file
-- This is mostly for auto-recovery purposes, do not use this as a distribution method
- Added FeetCollisionList & FeetCollisionListMode to VRIKAvatar
-- This lets you specify which objects will always be ignored from feet collissions or alterantively which ones will be used
- Added ability to unfavorite avatar by selecting it and clicking the heart (based on feedback by @Hayden (PolyLogiX - ZyroDesign) )

Tweaks:

- LogiX interfaces and wires for reference fields will now show the color of the reference target, rather than the reference field
- Made more tweaks to the chest effector to fix twisting shoulders when using chest tracker (based on feedback by @Reactant )

Bugfixes:

- Reworked logix input connection logix to fix certain scenarios where the right reference node isn't prefixed
-- This fixes the issue where reference field can't be correctly plugged to CreateReferenceUndoStep (reported by ProbablePrime )
- Fixed exception in save process when there's a malformed Uri in the saved data, breaking the save process (reported by @Medra )
- Added a guard against unexpected errors in the save process breaking the save completely
- Added a failsafe to world saving, which will dump the raw saved data to disk for manual recovery in case there's any unexpected exception in the saving process
- Fixed rare crash when upgrading/downgrading an asset variant (e.g. switching texture compression mode or filtering) and the relocation triggers nested relocation again (discovered in log from @Zane )
- Fixed broken texture exporting when only variants of the texture file are downloaded, but not the original (reported by @Kalash )
- Fixed textures with one dimension longer than 16384 (16K) not loading at all, due to inability to compute the variant
-- Neos will automatically request variant that has the longest side at 16K so it will get downscaled.
-- Please don't use textures this big, it's not supported by GPU's and the graphics API's, so it will just lead to waste of resources and quality loss
- Fixed LogiX evaluation contexts not properly clearing outputs
-- This fixes the Raycaster outputs getting stuck when nothing is hit (reported by @LucasRo7 , @Shifty )
- Fixed Full Body Calibrator avatar feet colliding with random objects - they will now ignore everything but the platform
- Made OneShotAudio instances non-persistent, so they don't get accidentally saved with the world
- Fixed race condition when filling empty avatar slots, causing exceptions or add behaviors
- Fixed streamer camera not being able to target other users after recent camera permission addition



Thank You Patrons for helping us build the metaverse!

Today is a #ThankYouPatrons day, so I and the rest of the team have put together this little video for our Patrons! Your support means a lot to this project and it has transformed Neos from just a bunch of code into a living breathing metaverse.

It's mindblowing to me that we have so many people believing in this project and makes me happy to work on it every day. Over the past year and half Neos has drastically transformed and improved into what it is today thanks to your support and feedback and I will continue pushing it along that path for many years ahead.

Seriously! I've spent years in the development thinking if anybody would ever use this thing I poured my life into. By the time I got to beta I was feeling ready to give up. But luckily we created a Patreon and immediately got incredible level of support.

People got what Neos was about and what our vision was and that was incredibly invigorating. Now I've feel more motivated to work on it than ever. It has become my home, I have found new friends through it and experienced so many cool things.

I don't worry about using it anymore, but just about making it better. And over the past year and half it has transformed in a ways that I never imagined it would and with each improvement pulled more support. I can't wait to see where will all this lead, but I'm all in it.

The future of the metaverse is bright. Thank you! ^^

[previewyoutube][/previewyoutube]

0.8.18.21280 - Tweening LogiX nodes, camera/item permissions, full body tweaks

Tweening nodes, camera/item permissions, new nodes, full body improvements and other tweaks and bugfixes! Android / Quest builds were updated to latest as well.

New Features:

- Added Tween Value Node, which allows smoothly tweening value of a field from one value to another on an impulse
-- Can be found under Actions
-- To use fields current value as To or From, simply leave them unplugged
-- It also gives you an impulse when it starts and finishes tweening
- Added CameraPermissions component (based on request by @Coffee and @Bom "Bitman" bomb (PolyLogiX) )
-- This lets you restrict which camera modes can be used and whether the user is allowed to frame other users or only themselves
- Added simple mechanism for adding/removing permission components from roles - each component lists out roles with a button to add/remove
-- This is temporary, a proper UI for managing permissions will be added in the future
- Added "Allow Saving Items" to World Permissions, which allows blocking saving of any items (requested by @Coffee )
- Added "Allow Swapping Avatars" to World Permissions as separate permission (based on feedback by @ProbablePrime )
-- This allow setting up spectator permissions which allow for avatar swap, but not spawning of items
- Added LogiX nodes for fetching some extra user metadata (based on feedback by @Blaze )
-- Ping, FPS, Downloaded/Uploaded Bytes, Download/Upload Speed (+ Max)

Tweaks:

- Tweaked chest target IK calculations (based on feedback by @Reactant )
-- This should make it behave better when sitting or lying down (let me know if it still glitches)
-- It affects the bending of the upper spine now, so vertical rotations are transferred as well. This subtly moves the avatar chest with breathing for example
-- Reverted the calibration of the chest tracker since it affects this as well now. Please recalibrate before testing
- Added extra debug diagnostic visuals for chest tracking
- Added extra diagnostics when assigning a destroyed parent (based on issue by @Zane )
- Added more error messages to inventory when the action is blocked by the permission system
- Removed Jump on pulse (DEBUG) (based on feedback by @Shifty )
- Upgraded to Unity 2019.3b11 (from beta 10)
-- This seems to fix libVLC crash on certain computers (reported by @pammematth )
- Updated NatMic library to the latest version (1.3.2)

Bugfixes:
- Fixed double permission validations for some objects, causing random issues
- Fixed permission validations not being correctly scheduled if the object is changed after being cleared, but before the validation testing
- Tweaked picking of the right session for P2P asset transfers to help prevent rare scenarios where locally improted assets wouldn't transfer (reported by @Alex from Alaska , @Hayden (PolyLogiX - ZyroDesign) )
- Tweaked Headless client update routine to fix some time-related issues (e.g. switching system time, daylight savings and similar)
- Added dummy audio callback to headless client, to fix behaviors dependent on audio updates
- Fixed Twitch Interface not working in headless due to a dependency library version mismatch



0.8.18.17135 - Fixed more instances of broken alpha + Oculus Quest build update

Fixing up few last instances of broken alpha due to the asset variant system. A few more tweaks too. Updates Android / Oculus Quest builds to the latest as well!

Tweaks:

- Added a mechanism for updating asset metadata
- Simplified object hierarchy for imported images - they are now represented by a single object, rather than adding a child.
-- This also fixes issue with thumbnail not using the actual texture when saving to inventory (reported by Iforgotwhosorry ;_; )

Bugfixes:

- Scheduled new metadata version to fix incorrectly generated metadata with invalid alpha information. This should help fix more cases of textures having black background instead of transparent ones (give it a load or two, for the old data to be purged/recomputed)
- Added auto-update for radius for the old SnapTarget components (this fixes the old ones before the change which made the radius in local space rather than global)



Asset Variant System with major performance and memory improvements

Hello again everyone!

Welcome back to our Friday update. We have an exciting milestone to talk about today! About a week ago, we’ve unveiled the first working implementation of our Asset Variant system. We’ll be going over what this means for Neos and its users.

We’re going to be live streaming on Twitch about when this post is 15 minutes old. If you would like to know more, please join us! We’ll be taking suggestions and answering questions about this optimization update as well as showcasing how it works! Also come try out our new interactive Twitch commands !bobblehead and !coffee.



Asset Variant System

This major feature helps to optimize the Neos experience by taking original assets and computing “variants” of them. These variants are versions of said assets that are much better optimized for your device, connection, and settings. Currently, this version of the system focuses on generating optimized textures.

This will lead to significantly less RAM and VRAM consumption, which will help Neos run much more smoothly. Complex worlds with a lot of large textures not only run better, but they load in a fraction of time they used to before too!

The textures are compressed using native Block Compression algorithms. Opaque textures are compressed with BC1, which allows the texture to be loaded using 8 times less memory, and alpha textures are compressed with BC3 which uses 4 times less memory. Additionally the textures are crunch compressed for smaller download and storage size.

Texture heavy worlds such as Club Fur used to take a long time to load, in some cases upwards of 5+ minutes. After the Asset Variant system implementation, we’ve seen load times as low as a few seconds! This is thanks to the reduction in computations needed to load assets and a much lower volume of data uploaded to the GPU.



These textures use a lot less memory bandwidth when rendering as well. For example Viridian Island would cut a lot of users FPS to an uncomfortably low level. Now, many users are reporting much higher frame rates while visiting!

Avatars with multiple 4K textures do not lag anymore when they load. Photogrammetry scans also tremendously benefit from this system as they often use dozens of high resolution textures.

The latency of the loading process has been improved as well by pipelining the mipmap levels. Textures are downloaded and loaded into the GPU piece by piece, with the lower resolution version shown as soon as possible, which will keep getting sharper as more of the texture’s data is downloaded. That way you don’t have to wait as long for everything to fully load.

This system works for locally generated assets as well (such as photos taken in-game or freshly imported 3D models and images), uploading parts to the GPU and other users as soon as they’re ready, while the rest is still being computed. The peer-to-peer asset transfer protocol has been extended to support this, improving the loading times and latency, especially for users with slower connections.



We have also implemented lots of tweaks, bugfixes and improvements since the first release of the asset variant system based on your feedback. The system should be much more reliable and stable now and the quality of the compressed textures should be improved.

Android & Quest port of the asset variant system
The Asset Variant system has now been ported to our Android and Quest builds. This is a crucial step for mobile devices to be able to use Neos, as these devices have both low memory and low memory bandwidth.

Opaque textures use ETC2 RGB8, which compresses textures down to 4 bits per pixel and alpha textures use ETC2 RGBA8 which compresses down to 8 bits per pixel. Same as on desktop, the textures are crunch compressed and load from the smallest mipmap, getting progressively sharper.

The mobile build now bypasses Unity’s texture pipeline, using native OpenGL to upload textures to the GPU directly. This allows Neos on mobile to spread the upload over several frames rather than all at once, which stops Neos from hanging when loading textures and reducing overall CPU and memory usage.

This was the major part of the porting process, which took a lot of time, effort, and native code. The desktop version was already using DirectX 11 to upload textures to the GPU directly, but it has received some improvements as well, fixing GPU driver crashes reported by some users.



This is a major step towards Neos being available publicly on mobile and Quest. Worlds that previously crashed Quest now load and run reasonably well, even when they’re originally made for desktop. For example Viridian Island would just crash the Quest build before, but now it loads and runs at upwards of 40 FPS.

Your content is future proofed

One major benefit that the asset variant system brings over traditional in-engine compression is future compatibility. All of these optimizations are fully automatic for all submitted worlds and items, regardless of when they were first uploaded. As a creator you don’t have to do a thing!

We take compatibility very seriously and design our systems so they do not permanently break any user submitted content and don’t require reupload anytime we publish a major update like this. If you have already submitted content before, the textures have been automatically optimized for both desktop and mobile, with more to come.

The asset variant system is capable of gradually reprocessing all assets in the cloud whenever we implement new improvements, better compression and optimization methods or fix reported issues and ensure that even content uploaded years ago can receive the benefits of the latest technology.

Other Updates

Besides the release of the Asset Variant system, we’ve pushed out a few upgrades and bugfixes. Frooxius has fixed a startup crash due to SteamVR Input bugs, such as having more input devices plugged such as gamepads and joysticks, running Oculus through SteamVR, or using less common headsets like Pimax.

We’ve upgraded to Unity 2019.3 beta for its engine improvements and bugfixes and will be taking advantage of new high-performance mesh API’s soon. Both SteamVR and Oculus SDK’s have been updated to their latest versions as well.

There were dozens of other bugfixes, tweaks and additions as well, check out the #neos-updates channel on our official Discord for full changelog!

Community Highlights
Medra has been hosting weekly Creator Jams, where the community comes together and, based on the weekly theme, creates content for the rest of the community. They’ve hit the 6 month mark after 24 jams, the most recent theme centering around NPC’s and Robots.

One user made a wall-detecting Roomba (featured in our Twitch streaming house!) while another user made a follower robot NPC! Feeling creative? Feel free to join! They’re hosted every week on Sunday.

Medra is currently making a trailer for the Creator Jams, and needs members of the community to be a part of it. He’s in need of 10+ actors, so give him a message, he more than likely needs a few more to make a full scene.

As he’s stated in our #meetups channel, this will be a fun and playful type of environment, but some shots may take 4 or more takes. He’s done a lot to bring wonderful content to Neos, so if you’re feeling inclined to help him out, please do!

The Sydney Human Factor Research (Known as SHFR on our Discord and in Neos), who have been our long time academic users, are preparing for a big presentation at the Sydney Festival of Inclusion at the Centre for Disability Studies.

If you’ve been facing challenges like agoraphobia, anxiety, immobility, deafness or others and have found Neos or VR in general to help you in some way, you can get in touch with prof. Hamish MacDougall on our Discord (@SHFR) and share your story for the event. All stories will be anonymized.

You can find more about the event here: https://cds.org.au/event/festival-of-inclusion/





Coming next: The UI Overhaul


We are beginning work on phase one of the major UI Overhaul. There are two major phases to this. The first phase is a technical backend phase which will be replacing the old hybrid Unity/Neos frameworks with our completely custom high-performance ones and give us the full control for the next phase.

Phase two is the visual and UX overhaul phase, where we will see a major improvement to user friendliness, customization possibilities, and way more!

First on the list is our own font rendering system which will be a replacement to Unity’s. Loading large amounts of text will not lag anymore as everything will be generated asynchronously on background threads.

This upgrade will also allow you to import your own fonts in-game, improve the text editing ability (for example by being able to click anywhere in the text to place the cursor) and allow 3D mesh fonts in the future too. It will support dynamic symbol generation for languages such as Japanese, Chinese and others that have lots of symbols.

The asset variant system that we just implemented will actually help us with this upgrade as well, allowing to store pre-generated font atlases as a variants of given font access. If we add new rendering method for new devices (e.g. using on GPU vector rendering) in the future, it will mean simply adding another variant and re-generating it for all already uploaded fonts.

We’ll keep you updated as we progress on this. Check out our official Discord for daily updates and peek behind the scenes and don’t forget to join our livestream as well, where you can chat with us about these updates and ask us questions.

See you next time!