1. Neos VR
  2. News

Neos VR News

2021.6.14.1031 - Hidden Context Menu, Locale auto-reload, security improvements

Hello everyone, just another small build sorry! Still focusing mostly on BEPUv2, but there are some small additions, improvements and some security improvements based on community reports, as well as fixed strings for the MTC Streaming & Recording Hall.

[h2]New Features:[/h2]
- Added "Hidden" to ContextMenuSubmenu, which will only render the context menu to its owner when opened (requested by Iforgotwhosorry ;_;)
-- IMPORTANT: This is purely cosmetic and not a security mechanism to prevent tampering. If you want security, put your UI in Userspace and use cloud variables to sync to world
- Neos will now automatically reload locale when the files are changed, making it easier to preview translation changes live (requested by @3x1t_5tyl3)
-- Note that this follows same rules as switching locale - certain strings will not be updated immediatelly and will require regenerating the UI (e.g. Context Menu needs to be reopened)
- Added LinearColorMapper (requested by @Honzackcz and @Shadow Panther [RU/EN, UTC+3])

[h2]Tweaks:[/h2]
- "Turn off UI Edit mode" and "Remove All Instances" on SimpleAvatarProtection are now localizable
- WebsocketClient now respects the "Enabled" property and will disconnect when disabled (reported by @Delta)
- Read/Write Cloud variable LogiX nodes now have nice names showing the actual type name (based on report by @Lexevo)
- When attaching UIX Mask, Image will be attached automatically as well if no graphic component currently exists (suggested by @3x1t_5tyl3)
- Merged fixed MTC locale strings by @Rue Shejn | Artist 3D
- Upgraded youtube-dl to 2021.06.06 from 2021.05.16
- Merged Esperanto locale overhaul by @Yellow and @Inferus
- Merged Japanese locale additions (including new MTC Streaming Hall) and tweaks by @Aesc
- Merged Korean locale additions (including new MTC Streaming Hall) and tweaks by @Titancube, @MirPASEC and @R3C0D3r
- Merged Russian locale additions (including new MTC Streaming Hall) and tweaks by @Shadow Panther [RU/EN, UTC+3]
- Merged Icelandic locale additions (including welcome page) and tweaks by @Nammi
- Merged British English locale additions by @Nammi

[h2]Security:[/h2]
- Added delegate validation, which allows referencing only methods that are part of the data model and avoids running undesired actions (e.g. directly requesting Neos shutdown) (reported by @ThomFox, @guillefix, @Cyro and others)
-- This shouldn't affect any official existing Neos functionality. If you notice any actions broken, please send us a report and corresponding log file. Any methods assigned via hacks will however break.
- SimpleAvatarProtection now asks for confirmation when being removed

[h2]Bugfixes:[/h2]
- Fixed counting of present contacts in a session sometimes throwing an exception when the current session info is null
- Fixed headless banById and banByName commands not checking if the user is already banned, causing the bans to stack (reported by @Glitch)

2021.6.10.457- Context Menu Injection additions, SteamVR init improvements, more

Hello everyone, just another small build to push a few additions, tweaks and bugfixes out, most of the work still goes into BEPUv2 integration, but hopefully these help!

There's some extra goodies for Context Menu Injection, improvements for SteamVR detection and controller handling and some bugfixes to audio system breaking in some cases.

[h2]New Features:[/h2]
- Added "IsContextMenuOpen" LogiX node (under LogiX/Interaction) that indicates whether given user has their context menu open or not (requested by @3x1t_5tyl3)
-- By default it assumes the local user (one evaluating the node)
- Added "AllowDrag" to ContextMenuItemSource which will prevent the button interaction from stopping when moving the pointer (based on feedback by @3x1t_5tyl3)
-- This allow you to receive the button pressing events more easily

[h2]Tweaks:[/h2]
- When SteamVR is detected to be currently running, the Oculus Runtime will be skipped during Autodetect initialization (based on feedback by @Groxxy but Face Tracking lul and @H3BO3)
-- This should improve issues when launching Neos from SteamVR bigscreen or when trying to use trackers with Oculus devices
- On Linux, the Oculus runtime initialization is skipped during Autodetection since it's not supported
- ButtonValueShift now multiplies quaternions rather than adding them, resulting in correct rotation offsets (based on report by @Shifty | Quality Control Lead)
- Neos will now remap new Left/Right controllers in SteamVR when they're introduced to the system, allowing you to swap to another pair of controllers without rebooting (based on feedback by @Sox)
-- Note that this is currently untested, so it might misbehave, please report any issues
- Merged extra MTC Streaming & Recording Hall English locale strings from @Rue Shejn | Artist 3D

- Merged Japanese locale additions for the MTC Streaming & Recording Hall by @Aesc

[h2]Bugfixes:[/h2]
- Added validation to AudioOutput parameters to prevent audio system from breaking when fed invalid parameters (e.g. NaN, infinities and so on) (reported by @Kisaki and @MattyK)
- Fixed material inspector incorrectly configuring the locale string, showing "waiting" instead of the actual string and throwing exception in the background (reported by @Shadow Panther#5154, @H3BO3#7957, @AshtonSparx#5050, @Enverex#6528 , @3x1t_5tyl3#0001 and others)

Minecraft Importer, New Recap Stream Format, 3K Twitch Followers - 24h stream

Hello everyone and welcome to another of our weekly updates!

This one is a bit lighter on features as I was on my break for the last week or so, but we still have lots of cool goodies for you! One of the fun projects I did was a functional importer for Minecraft worlds, which can import even pretty large maps with ease and set them up with a culling system.

It also serves as a good stress test (there's already few optimizations planned based on it!), inspiration for our own planned features (like the terrain system) and I've even made source of the importer public as a reference, so it should still provide some benefit to Neos!

The context menu injection has receives some polish as well and overall we've released numerous small additions, tweaks and fixes in the past few days, closing over 50 GitHub issues submitted by you, our community!

In other news, we tried out a brand new Recap Stream format during our last Friday livestream, to make it easier to digest all the additions and changes. There's still lots of things to tweak with the format, but we hope you liked it regardless!

Speaking of the livestreaming, we finally hit 3K followers on Twitch! We'll be doing a special 24 hour livestream this Friday, with some fun prizes, so make sure you don't miss it!

Also the weekly Creator Jam has celebrated 2 years recently! This is an incredible achievement by Medra and other organizers as it's the constantly longest running event on Neos by far and source of some of the best content on the platform.

We've also decided to change our major focus on the BEPUv2 upgrade, as it's the highest voted major feature. Switching over and reworking the integration will provide some performance boost on itself, as well as pave the way to many other significant optimizations and full rigidbody physics down the line, so stay tuned!



[h2]Recap Stream[/h2]
Last week on Friday, we added some more additions to our new stream format, the Monthly Recap Livestream. This monthly stream allows us to act as a one stop shop for all the updates that can happen in one month development, but also give NEOS a public face as well. It will give folks a place to check in when they don't have all the time in the world to keep up with how fast Neos changes each week, and a TownHall Q&A for folks who want some questions answered with development. This week we were Neos Bots to really sell the professional vibe. Hope you enjoy it!

[previewyoutube][/previewyoutube]

Going forward we'll be refining the format, but if you have any feedback let us know in #bugs-n-feedback on the main discord or send your thoughts to Turk or mentors, as this was made from their feedback! We want these streams to be a good source of information and reliable updates, so we are gonna try to improve as much as we can.

[h2]3000 Follower 24h Live-Stream[/h2]
Congrats! We finally did it, we now have reached our goal of 3000 followers for our main Twitch channel. To celebrate we are gonna be doing a 24 hour live stream hosted by our Producer Nexulan. I hear there's gonna be another Twitch Chat pizza order! So come on by and partake in some celebrations! I know there will definitely be a surprise here or there.

[h2]Minecraft Importer[/h2]
As a fun side project during my break, I have implemented a way to directly import Minecraft Worlds into Neos, since it’s one of my favorite games and part of inspiration for Neos itself. The importer is based on the Substrate C# library for reading the Minecraft world data (which I’ve extended to support the newer versions of Anvil format), as well as the excellent Mineways tool which exports the actual geometry.

The Substrate library is used to read the world data and figure out how many chunks there are in the world and what’s their positioning. This is used to generate an export script for Mineways, which exports the entire map in 64x64 chunks by default.

Once those chunks are exported, they’re imported using the same importer as for any other 3D models and those chunks are then setup with proper materials, collisions and culling system. The meshes are also further baked to reduce the overall amount of assets. The culling system in particular makes sure that the chunk meshes aren’t loaded until they become visible to the user.

This way really big maps can be handled relatively well. Still, this fun side project also helps as a good stress test for parts of Neos, which can be a good source of optimizations (in fact, we’re already looking into some of them!) and messing around with Minecraft’s underlying format provided some good inspiration for our own future systems as well (like the planned terrain system!).

[previewyoutube][/previewyoutube]

I’ve also published the source code for the importer here, both for contributions and as a reference to showcase how some of the Neos’ internals works for writing your own plugins and importers in the future. This way, even though it was a fun side project, it should still provide some overall benefit to Neos.

And of course, if you’re not interested in any of the technical stuff, you can just import your Minecraft Worlds into Neos easily now! Simply download the Mineways tool and place it in the “Tools/Mineways” folder in your Neos installation, drag and drop the folder containing your Minecraft world and pick “Minecraft World” from the importer!

[h2]Community Maps[/h2]

[h3]Neos Museum by Gearbell[/h3]
For quite some time folks were wondering when we’d ever get a Museum of Neos. It’s only been 2 years since some folks have been here, but a lot has changed over the time. Props to Gearbell getting all the old assets together and showcasing how different everything used to be! Does anyone remember the wrist menus? Or the old old context menu. Much to explore here!



[h3]Black Mesa Train Ride by Elektrospy[/h3]
A map almost 1-2 years in the making is finally here! Have you ever wanted to do Half life in VR? Well I mean the train ride at least to Black Mesa. With all kinds of small touches, little aesthetics, and plenty and plenty of vending machines, this map will show you the effort, time and energy that went into making this map as comparable to the recent Black Mesa release. There’s a huge credits board in the map, so feel free to read up, as there’s a lot of different tools and showcases to share how the map was made! Thanks Elektrospy! Thank you everyone who assisted or helped in the madness



[h3]Hangout n Chill by Major Remp[/h3]
An amazing map and heavenly atmosphere is in this map as you spawn near a well maintained pond on top of this shrine somewhere in the sky. You can even see little spirit foxes and butterflies frolicking in the map as you explore. Seriously Good Job Major Remp! It’s a really well put together map!



[h3]Pack.png by Nicole+[/h3]
With the recent additions folks have been fast at work to import all their Minecraft maps that they’ve had from years past. Even iconic maps such as Pack.png have been involved in the import shenanigans. Thanks Nicole for setting this up for everyone! PS. Pack.png is the picture you see for the default texture pack in Minecraft.



[h3]Treehouse at Dusk by Cataena[/h3]
A Map by Cataena and Crew, a lovely treehouse in a forest in the middle of somewhere. You can hear the cricket and evening critters come alive as you scrummage around the treehouse to see what is around. There’s even an outhouse with a heart on it! Just in case you need to feel a little comfort in nature. Thanks Cataena!



[h3]Unwind by June[/h3]
A lovely light in the dark, this map shows off the creativity of users' abilities and what you can do in Neos. While a simple map, you can see the waves of grass ebb and flow into the dark ether. A map that just has a really nice aesthetic and shows off some really cool techniques with grass! Thanks for the map June!



[h2]Community Current Events[/h2]

[h3]Beat Syndicate NeosVR Soft Launch[/h3]
With the recent closing of WaveXR VR division, the community over there has been slowly migrating to other platforms, bringing good times, vibes and music to party to! With an initial launch lineup of Trash Tanuki, Glitch Euphoria, G-DUB, DJ Dett, TOTC, SynthaKat, Diamonddoge, and QueenHidi, it was quite the thriller this weekend!



[h3]Metaverse Showcase[/h3]
Recently, The Metaverse had a Metaverse Showcase hosted by DAWKY for users to all come together and show off what they had been making for the month of May. It was the first of it’s kind and folks really enjoyed the atmosphere! It’s the kind of place where folks can show off things they make, and grow as folks give feedback, or positive reinforcement to encourage people to grow and learn and make even more cool things! Try to make the next one if you can! It’s a good feeling to be here!



[previewyoutube][/previewyoutube]

[h3]Creator Jammaversary[/h3]
It’s the 2-year anniversary of Creator Jam! And this past week was an entire party of celebration of all the past creations and jams that folks have been making! Make sure to check out all the maps that Creator Jam has posted and the recent MeMe Off they did as well!



[h3]Community Updates: Mentors Wave 2 Closing,Mentor Workshops, & Office Hours[/h3]
Hi Everyone Turk here! Just a heads up Mentors Wave 2 will be closing soon, so if you haven't applied yet please do! I'll be taking all the applications into account and then updating everyone on the results personally. Thanks to everyone for making this community great!

After Wave 2 is closed we will be beginning Mentor Workshops! A day each week or other week hosted by Mentors, for new users to have hands on help, or learn techniques and tricks for folks to get into Neos. This will act as a stomping ground for many mentors, but also for many new users to come and learn. So stay tuned!

Alternatively Neos Team Members will be hosting 30min AMA type meetings where folks can join in, ask questions, and also give folks a little time each week to speak to Team Members about issues, or upcoming changes, or development questions. For more information look in the #office-hours channel in the NEOS discord.

[h2]What's Next: BEPUv2 upgrade[/h2]
With the first phase of desktop implementation done, we were facing a decision on which of the major features to put our main focus on next. Reworking more of the UI and UX has been one of the candidates, as well as the marketplace and licensing system, but since out of the major features BEPUv2 upgrade has the most votes both on GitHub and Patreon, we decided for this one instead!

The work has already started on replacing the physics engine with this higher performance version. Not only is the engine itself going to provide a speed boost, but we're redesigning how is it integrated with rest of Neos as well to get additional performance gains and fix variety of issues that have been plaguing Neos for a long while.

The upgrade is also a prerequisite for numerous other optimizations as well, notably with various efficient culling systems, utilizing some of the BEPUv2's acceleration structures.

You can watch the progress on our official Discord in #devlog as well as on this roadmap on GitHub. It will probably take some time to get a working version, but we'll be doing some public testing to catch any major breakages before it goes live, so keep an eye on the Discord if you'd like to help out!

And as always, huge thanks to everyone for supporting this project, notably our Patreon supporters and our creative community. Without you the place wouldn't be the same and we couldn't keep improving it every day!

2021.6.9.396 - Readd reverted fix for IK legs randomly jumping up

A tiny patch, mainly re-adding fix for legs jumping up that accidentally got reverted, new MTC strings for the upcoming release and some default generic types for some components! I'll be working on some bigger things and I'm not sure how long it'll take, so I wanted to get this out ASAP.

Compatible with previous build, don't need to update right away (unless you have the glitchy legs problem and you want to get rid of it).

[h2]Tweaks:[/h2]
- Merged MTC Streaming Room Locale strings by @Rue Shejn | Artist 3D
- Added default generic version templates for several components (added by @ProbablePrime | Docs)
-- ButtonValueSet/Cycle/Shift
-- ValueOptionDescriptionDriver
-- DynamicValueVariableReset
-- ValueDriver
-- ValueTextFormatDriver

[h2]Bugfixes:[/h2]
- Re-added fix for Slerp function that got accidentally reverted in the last build
-- This should re-fix the avatar legs randomly jumping up (regression reported by @Cael Thunderwing and @Earthmark)

2021.6.8.685 - Foot bHaptics support, Nullable LogiX improvements, tweaks, fixes

Hello everyone, a smaller build this time, I'm spending more time poking around BEPUv2 now, but there are some goodies anyway! Leg haptics are now supported! (specifically for bHaptics right now, but it's generalized) Also some new nodes and changes to make it easier to work with Nullable values. There's more to do with those, but hopefully these help a bit already! A bunch of additions for the Context Menu Injection too (filtering primary/secondary and tools)!

[h2]New Features:[/h2]
- Added support for leg haptics (requested by @Rue Shejn | Artist 3D, @Aegis_Wolf | Creative Director and @Ryuvi | Technical Artist on behalf of bHaptics)
-- Added LegHapticPointMapper which maps the haptics of avatar's leg to the haptic device (existing avatars are auto-initialized)
-- Legs are mapped from hips to angle (position along 0...1) with angular offset from the front facing (where knee/foot is facing) going left (negative) and right (positive)
-- Added support for bHaptics Foot mapping
- Added PackNullable and UnpackNullable nodes (under Operators/Nullable) (based on general feedback)
-- These allow you to unpack (get whether value exists and the value itself) and pack (set whether value exists and the value itself) of nullable struct types
- Added "Exclude On Tools" to RootContextMenuItem which allows excluding the option from being injected when opened with a hand that has active tool (requested by @Electronus)
- Added "Exclude Primary/Secondary Hand" to RootContextMenuItem which allows excluding the option based on whether it was opened with user's primary or secondary hand (requested by @Shadow Panther [RU/EN, UTC+3])
- Added "Reverse" input to the For node, which will run the loop backwards (requested by @Gawdl3y, @Shadow Panther [RU/EN, UTC+3] and bentallea)

[h2]Tweaks:[/h2]
- Nullable type wires now use the color of the base type, but semi-transparent
-- We'll very likely change this when the visuals are fully redesigned, but it'll take some time to get to that
- Changed context menu Sprite reference to use more general IAssetProvider rather than specifically the SpriteProvider component
-- This fixes ValueOptionDescriptionDriver, ReferenceOptionDescriptionDriver and other components that use more general references and drives not working with ContextMenuItemSource and other parts of the system (reported by @Shadow Panther [RU/EN, UTC+3] and @seif1)
- DynamicVariableInput node name is now consistent with rest of the dynamic variable nodes and uses nice name (reported by RobertBaruch)
- Avatar heuristics will no longer detect "UnderEye" as eye bone (reported by @Sveny)

[h2]Bugfixes:[/h2]
- All variable nodes now initialize proper default values (e.g. floatQ is initialized to identity, rather than an invalid rotation quaternion) (based on report by @Shifty | Quality Control Lead)
- ButtonValueSet and ButtonValueShift now initialize proper default values for all their fields (same as above) (reported by @Shifty | Quality Control Lead, @Ian Corvid)