1. Neos VR
  2. News

Neos VR News

0.8.19.34421 - Bugfixes for new issues due to rigorous resource cleanup and more

A bunch of bugfixes for the things broken after the introduction of more rigorous cleanups to fix memory/resource leaks and improve memory usage. Should hopefully fix all the major problems reported, let me know if you find some more. A few unrelated bugfixes as well.

[h2]Bugfixes:[/h2]
- Removed expensive (and unecessary) Unity resource cleanup when closing a world, causing Neos to freeze up for a second or two (based on report by @Alex from Alaska)
- Fixed exceptions when trying to register change of component update order when it was already disposed
- Fixed user respawning not working correctly (based on report by @Turk )
- Fixed invalid encoding of string primitves starting with '@' symbol, preventing worlds or items with those from being saved (reported and sample model provided by @EroSensei)

Following were discovered in log from @Coffee (should fix issues reported by @Groxxy and @Turk):
- Fixed AudioStreams throwing exceptions if read during/after world disposal
- Fixed static asset providers continuing load process after they have been disposed, potentially leading to asset resource leak
- Added guard to brushes, which prevents from trying to add new points if the currently drawn mesh has been destroyed in the meanwhile
- Disposed components that didn't go through the destroy process are now handled as removed as well (will evaluate to null in references)
-- This fixes certain bugs where they're accessed when they shouldn't be
-- This should fix dynamic bones randomly breaking due to invalid accesses when evaluating colliders
- Fixed logix driver nodes being evaluated after they were already destroyed
- Fixed FocusManager throwing exceptions on events after it has been disposed

0.8.19.16069 - Numerous memory/resource leak fixes, 2019 user badge and more

After two days of staring and poking through raw memory, losing sanity, summoning Cthulhu and plugging a bunch of memory leaks this build is finally ready! :smile: Has significant improvements in memory/resource usage, things should be garbage collected properly in most cases. There are some relatively drastic changes, be on a lookout for new bugs/crashes. Also a bunch of other improvements and fixes!

[h2]New Features:[/h2]
- Everyone who registered in 2019 now gets a special unique badge!
- Neos Dash now shows the specific Patreon perk as the account type
- Added extra storage for higher Patreon levels
- Added "Force Full Garbage Collection" to the debug dialog
- Added gc command to the Neos Headless to invoke immediate full garbage collection

[h2]Tweaks:[/h2]
- Built missing libmsdfgen.so for the Linux headless
- Built FreeType 2.10.0 from source for Linux for the Linux headless
- Neos will now skip attempts to initialize and connect to Emotiv Cortex service if it's not installed in the system
- Added protection against setting SimpleAvatarProtection to non-persistent (based on report by @Lewi-bean)
- Tooltip Multiplexer now properly emulates active tooltip, which fixes tooltip actions that depend on it
-- This fixes developer tooltip not being able to open inspector (reported by @CodeF53 and others (sorry I forgot who originally reported it ;_;))
- Upgraded to Unity 2019.3.0f4 (from 2019.3.0f3)

[h2]Optimizations:[/h2]
- Neos will now break up references to world on disposal of many classes, components and primitives, to allow for better/sooner garbage collection and reuse of memory
- Fixed variety of different memory leaks (thanks to @Shifty and @alex derpy avali 🐩 for providing some leads)
-- Fixed Local Slots not being properly disposed
-- Fixed Root components not being properly disposed
-- Fixed session network listener not being properly disposed
-- Fixed memory leak in background world processor, retaining references to the last background task, causing objects to not be deallocated as soon as they should or at all (if there's no more background work)
-- Fixed streams and users not being properly disposed (e.g. when user leaves or world is closed)
--- This also fixes native Opus Encoder/Decoder resource leak due to not being freed up
-- Fixed Unity connectors not always getting fully cleaned up
-- Fixed session thumbnail management from preventing world memory from being freed up
-- Fixed SyncElementBags not disposing their elements when disposed
- Fixed UserComponents not being properly disposed
- Fixed World sync members not being disposed when the world is closed
- Fixed encoding delta data of sync elements that were disposed in the meanwhile
- Fixed UserAudioStream not always unregistering audio source events
- Fixed TrackingOffsetCompensator not always unregistering input system events
- Fixed ClipboardImporter not always unregistering drag and drop event handler
- Fixed links propagating to the disposed parts of the hiearchy
- A bunch of others that I forgot to write down...

[h2]Bugfixes:[/h2]
- GET_String and POST_Strings now catch request exceptions and trigger OnError impulse, rather than logging exceptions (found in log from @Medra)
- Fixed resource leak in GET_String and POST_String LogiX nodes
- Fixed exception in updating MultiLineMesh with smooth normals on caps when there's currently just one segment (found in log from @Medra)
- Fixed error when saving worlds with nested worlds that require further processing (found in log from @Medra)
- Fixed audio events not running for all headless worlds

0.8.19.39448 - Assimp importer library update, up to 8 UV channel support

Another smallish build. Updated Assimp native importer library to latest, added arbitrary UV channel and 3D/4D UV support to internal mesh format.

[h2]Tweaks:[/h2]
- Added support for arbitrary number of UV channels for the MeshX (Neos' internal mesh format)
-- This is futureproofing the system. Currently up to 8 channels will be uploaded to the GPU
-- Model importer will import all channels that it finds
- Added support for 3D and 4D UV channels, in addition to standard 2D
-- This allows packing extra data into the meshes. This is necessary for certain TiltBrush brushes that @0utsider is working on
- Updated Assimp importer library to latest version from source (over 300 commits)
-- This has numerous improvements and fixes, including improved FBX compatibility (e.g. some more PBR textures should now import)
- Added protections against deleting or moving some crucial slots in the world that would cause issues (based on feedback by @Shifty and @RueShejn)

Happy Holidays from the Neos team and polish for the new text rendering system

Welcome again to our weekly update!

We all hope that you’re having great holidays so far and spending time with your friends and family. You may have thought we were taking a break for Christmas, but Frooxius has been hard at work getting the bugs out and polishing the new text rendering system!

Nevertheless this week has been quieter, as we all spent time with our family. If you’re reading this right at the release and have some time to spare, join us for a livestream right now on Twitch!



[h2]Text rendering system polish[/h2]

After the initial release of the new text rendering system this Sunday, it has received a lot of extra polish to fix-up various issues and improve the quality of the rendering. For example glyphs randomly becoming blank were fixed, as well as rounding errors in calculations causing some of the symbols to become deformed or smaller than they should be, especially characters like dashes, hyphens, commas, periods, semicolons and so on.

Unicode coverage has been improved as well, the system now handles characters outside the Basic Multilingual Plane as well, assuming they don’t require complex shaping (e.g. Arabic) and extra fallback fonts (Noto Symbols 2 and Noto Math) were added for various symbols, like arrows, shapes and other small graphics.

[previewyoutube][/previewyoutube]

Parsing of some missing tags and parameters was also fixed up as well as some line-wrapping layout issues, so most of the existing text should work the same way it did before with no manual fixes necessary. If you still encounter any issues, let us know in the Discord!

The system should be pretty reliable now, so the work has already started on designing a new UI framework around it to replace the current system and allow us to start on the UI/UX overhaul.

[h2]Community Highlights[/h2]

Secret Santa and Christmas Megajam!



The Secret Santa gift giving ceremony has gone underway and all of the participants have opened their presents, with many others joining in as well!

Frooxius got a bowl of delicious fruit from ProbablePrime, which he promptly scarfed down!



So many more gifts were given this night, and you can see all of the presents being unwrapped here in the Christmas Megajam video!



[previewyoutube][/previewyoutube]

Kurotori’s Japanese Keyboard

We’ve had a user making great use of our new Text Rendering engine, utilizing LogiX and built-in buttons to make a keyboard for typing in Japanese. Awesome job, Kurotori!



[h2]What’s next?[/h2]
The work has already begun on engineering a brand new UI framework for Neos, that will replace the current one built around the Unity UI, which is currently one of the oldest and ugliest parts of the codebase.

Similarly to the text rendering, this will be a fully custom system, designed to be asynchronous, multi-threaded and generally highly performant.

It will also give us a full level of control over the UI and ability to quickly and easily build new UI elements and interactions. Using this we’ll be able to overhaul the actual look and feel of Neos’ UI and ensure long term growth of the platform.

We thank you all for being with us throughout this year! The Neos team is hoping you’ve had a happy holiday season and wish you to have a very happy New Year. We’re all very excited to see what the next year and even the next decade brings, and we’re so happy to have you along with us!




0.8.19.36896 - Correct UTF-16 surrogate pair handling, symbol math fonts

Small build, but with some important improvements for the new Text rendering system. More Unicode symbols now should display correctly!

[h2]Tweaks:[/h2]
- Text shaping for new TextRenderer now processes UTF-16 surrogate pairs correctly, fixing symbols outside of the Basic Multilingual Plane not being displayed (e.g. 𠈓)
- Included Noto Symbols and Noto Math fonts as fallbacks by default, fixing many Unicode symbols not displaying (e.g. arrows, shapes, misc small images and more, based on feedback by @sirkitree)
- Badge textures now use clamp wrap mode, preventing artifacts around the edges

[h2]Bugfixes:[/h2]
- Fixed creating of Uri from string in LogiX not working correctly when certain symbols or escape sequences are used (based on report by @ProbablePrime @kurotori4423)