1. Neos VR
  2. News

Neos VR News

2021.8.14.443 - Fix Shift+ not working, fix issue due to system time change

Just a small patch, fixing up a regression and some system time related issues. Compatible with current!

[h2]Tweaks:[/h2]
- Merged Korean locale update from @MirPASEC
- Merged Czech locale update from @rampa_3 (UTC +1, DST UTC +2)

[h2]Bugfixes:[/h2]
- Added a guard against large changes of system time resulting in invalid world time parameters being calculated, resulting in random corruptions (reported by @Shadow Panther [RU/EN, UTC+3] and mateon1, GH #2572)
-- This should generally fix worlds breaking when system time is shifted forwards or backwards, e.g. when syncing system time
-- Note that other 3rd party behaviors might still break, as they depend on the system time
- Loosed up detection of stale session data, to prevent sessions disappearing when the system time is slightly out of sync (reported by @Shadow Panther [RU/EN, UTC+3], @Epsilion, GH #2571)
-- Note that if user crashes or their internet dies, you will now see their last session linger for longer
- Fixed regression where certain Shift+Key combinations (e.g. Shift+Enter) wouldn't work on virtual keyboard (@[USFN] Skywind Kitsune, @Shadow Panther [RU/EN, UTC+3], @Earthmark, @Ukilop)

2021.8.13.612 - Shuffle world browser option, MultiAudioClipPlayer and more

Hello everyone, I got another extra build for you today with some more goodies! There's now a Shuffle option for browsing worlds, which lets you discover worlds old and new with ease! :smile: It re-shuffles every hour or so.

Also related to previous component, there's another one for playing audio clips in perfect sync (it should be down to a precise sample if the clips share same samplerate and playback rate), this version trades off varying the speed dynamically for having the playback position synced across all users in the session, which should cover a whole bunch of other use-cases.

There's some smaller goodies too, like PingPong movement for Panner (also exposed as its own function in LogiX), computing Greatest Common Divisors and Least Common Multiples, OnEquipFail and OnDequipFail impulses, visually impaired badges showing in the session menu and bunch more!

[h2]New Features:[/h2]
- Added new "Shuffle" world category which lists published worlds sorted in a random order (requested by PointerOffset, @GearBell, @Shadow Panther [RU/EN, UTC+3], Yugioh-web, GH #2566, prioritized based on GitHub votes)
-- Note that the random order is same across everyone and only changes roughtly every hour
- Added MultiAudioClip player, which allows playing multiple audio clips together in perfect sync
-- This has a shared playback, which is synced across players - this will ensure that the position of all the clips is synced across all players in the session (this makes it useful for speed or dynamic ambinace/music where all players having same audio cues matter)
-- You can vary the volume of each clip dynamically. Clips with 0 volume are internally skipped to avoid taking performance
-- You can also set RelativeSpeed of the clip (relative to the playback speed), but this cannot vary dynamically, as changing this will change the position within the clip
-- If the playback is not looped, the length will be the length of the longest clip
-- If the playbak is looped, the length will be the approximate least common multiple of all lengths (with random lengths this can end up really long)
-- It's strongly recommended to use clips with the same encoding, lengths (or multiples of same length) and sample rate

- Added PingPong to Panner components (requested by @Toxic_Cookie | NTC CEO, GH #1915, prioritized based on GitHub votes)
-- Instead of the value wrapping around when reaching the repeat, it will reverse direction
- Added PingPong LogiX node (under Math)
- Added Least Common Multiple and Greatest Common Divisor nodes (under Math) (previously requested by @pek)
- Tooltip Equip/Dequip nodes now have OnEquipFail and OnDequipFail impulses respectively (requested by @GalexY and @3x1t_5tyl3, implemented by @ProbablePrime | Docs, GH #1164)

[h2]Tweaks:[/h2]
- CreditsStatus now has HasAnyBalance bool field, which indicates whether the user has any balance of given token
- Token Facet preset now doesn't display CDFT when given user doesn't have any balance (suggested by @Karel | CEO)
- Implicitly allowed API endpoint is now narrowed just to "mentor.neos.com" to prevent potential abuse (based on suggest by @runtime)
- Permission user minimum and maximum scale is now respected by the DefaultUserScale and SetUserScale (based on report by @AshtonSparx, GH #2758)
- Visually Impaired badge now shows up in the session menu (reported by @Mysticporo, implemented by @ProbablePrime | Docs, GH #2782)
- Neos Pro now automatically uses separate data folder, to avoid clashes with the regular Steam version (based on request from @Karel | CEO on behalf of others)

- Merged Korean locale additions by @MirPASEC
- Merged Japanese locale additions and tweaks by @Aesc/あすく
- Merged Russian locale additions and tweaks by @Shadow Panther [RU/EN, UTC+3]

[h2]Bugfixes:[/h2]
- Fixed exporting objects through inspector reference exporting the export dialog, instead of the referenced object (reported by @Enverex, GH #2780)
- Spawn areas now respect the Enabled state (reported by @Turk, GH #2785)
- Fixed headless sessions not inheriting the UniverseID properly (based on report by @Karel | CEO and @VRxist)
- Fixed UniverseID of world being persistent
- Fixed virtual shift triggering for other users in world-space virtual keyboards (based on report by @Earthmark)
-- Note there are more planned changes and fixes coming, but need certain things resolved around them first

2021.8.12.1293 - Updated logo, join sessions on startup, LerpingMultiClipPlayer

Hello everyone, I got a new build for you after a while, this time featuring the new version of our logo! There's a bunch of other smaller goodies too, like ability to automatically join sessions on startup via Config.json, ability to play and lerp between multiple audio clips and some other smaller additions and tweaks. We've made some security improvements based on community reports too.

It also features important bugfix for the cloud interface, which would cause things like user's profiles and other information to stop updating.

Also sorry for the lack of updates lately! Most of my time is focused on trying to finish up BEPUv2 upgrade now and some other internal things and it's a bit trickier to squeeze other things in (plus I got my 2nd shot a few days ago which didn't help >///>), you can check progress on that in #devlog, but I hope these small changes help nonetheless! ^^;

[h2]New Features:[/h2]
- Added support for automatically joining sessions on startup using the Config file (based on request by @Karel | CEO and @VRxist)
-- List of sessions to join can be defined under autoJoinSessions
-- Following fields are supported:
--- url - direct session URL to join. When specified, all other filters are ignored
--- sessionID - session ID to join. Use "*" to join any session that matches the other rules. Used when URL isn't specified
--- lanOnly - filter only sessions running on LAN
--- headlessOnly - join only sessions hosted on headless
--- onlyUniverseId - join only sessions in particular Universe ID
--- autoFocus - automatically switch focus to the world on join
-- This allows joining any session that matches particular rules, which can be useful for companies and other automated scenarios.
-- When searching for any session matching the rules, Neos will make 5 attempts to lookup the session, with 5 second waits in between
- Added 'universeId' configuration option for the headless
- Added LerpingMultiClipPlayer which allows playing and blending between multiple audio clips (implemented for @Kal)
-- Each clip has a starting and ending lerp position, which indicates in which range of the Lerp property it'll play
-- You can define starting and ending speed of each clip (relative to its range within the lerp)
-- You can also define the start and end volume transition range
-- Position within the clip is NOT synchronized between players. It's recommended to use this only with relatively short clips or clips where position within the clip doesn't matter (e.g. ambiance, engine loop noises, but avoid using for speech and similar)
-- It will resync the clips position locally each time one of the clips starts playing. If all clips are the same speed, they will be perfectly synced to each other. If they have different speeds they will diverge
-- This can be ideal for various sound effects, e.g. engine noises that transition based on speed, ambiance or effecitiently gradually varying speed of a one or more clips

- Added Mouse Button 5 as alternate binding for Press To Talk
- Added M keybind to toggle Mute/Umute (requested by @AshtonSparx, GH #2085)
- Added WorldAwayKickEnabled and WorldAwayKickMinutes LogiX nodes (implemented by @ProbablePrime | Docs, requested by @I'm Erin.)
- Added sound effects for press to talk and mute/unmute (sounds by @Lewis Snow | Lead Audio Designer, feedback on those is welcome as we keep iterating on them!)

[h2]Tweaks:[/h2]
- Updated icon and startup screen to the new versions
- When Neos is started from Steam Remote Play, it will now automatically default to screen mode, rather than VR (requested by Iforgotwhosorry ;_;)
- World browser now sorts the sessions based on the total number of users in nested sessions as well, instead of the number of users in the direct session (reported by @Shadow Panther [RU/EN, UTC+3] and @Shifty | Quality Control Lead, GH #2747)
- neos.com and its subdomains are now implicitly allowed hosts
-- This removes the requirement to accept host when using the Mentor Signal by @Earthmark

- Merged new Twitch chat locale English strings by @Raith (CytraX) | Programmer
- Merged British English locale fix by @ProbablePrime | Docs

- Merged Polish locale additions and fixes by @art0007i and DarkSugar
- Merged Chinese locale additions and tweaks by @Holy
- Merged Russian locale additions and tweaks by @Shadow Panther [RU/EN, UTC+3]
- Merged Spanish locale additions (including MTC rooms) and tweaks by @Ruz
- Merged Finnish locale additions and tweaks by @Napo and @Toni Kat
- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)

[h2]Security:[/h2]
- Audio Clip Player playback speed is now clamped to 32, to prevent excessively large values from breaking the global audio (based on report by @Birdthings, ticket #828882)
- Removed DebugCrash component to prevent abuse (removed by @ProbablePrime | Docs, based on report by @art0007i, ticket #256023)
- Added guard against too many active delays with Delay and Delay with Value nodes, causing Neos to become unresponsive or crash (based on report by @Duskitten, ticket #457981)
-- If you run into issues with existing setups, let us know, we can fine-tune the limits, but it should be set pretty high right now for regular use
- Added guard against changing shader URL to an unofficial 3rd party variant to prevent content breakage and potential security issues

[h2]Bugfixes:[/h2]
- Fixed Cloud Variable proxies getting unregistered while they have buffered values waiting to be written to the cloud, resulting in exceptions (based on report by @kazu0617 Neos:kazu, @rhenium_75#1015, @orange and @あむ(Rabbuttz), GH #2767)
- Added a guard against exceptions in the cloud variable manager causing the rest of the cloud API to stop updating (based on report by @kazu0617 Neos:kazu, @rhenium_75#1015, @orange and @あむ(Rabbuttz), GH #2767)

Neos Festa 3, Japanese Community Interview, Press To Talk, New Procedural Meshes

Hello everyone and welcome to another of our weekly updates!

This week things were a bit quieter, as most of the effort goes to the BEPUv2 upgrade now, but regardless we have released a few smaller additions, tweaks and bugfixes, mostly some small quality of life improvements.

Notably desktop mode now has Press To Talk key. We added two new procedural meshes, hollow cone and a ramp. LogiX has gotten some new nodes for storage, string comparisons and formatting improvements and inspector has received a few small tweaks too.

In terms of community content, this week has been very eventful! The Neos Festa 3 has officially opened. This festival held by our Japanese community showcases creativity of users from all over the world in a very unique and fun way. If you haven't checked it out yet, definitely visit in Neos!

We have also interviewed members of the Japanese community on our recent livestream. If you have missed it, you can give it a watch in the video below!

The BEPUv2 upgrade is now also nearing feature parity and should be ready for testing relatively soon (no exact ETA is known yet, but it's getting close)! Keep an eye on #devlog and #testing channels on our official Discord for more.



[h2]Neos Festa 3[/h2]
The festival of creativity in Neos VR held by our Japanese community has returned for the third year! Neos Festa 3 officially opened a few days ago, bringing forth dozens of incredible submissions by Neos users from all over the world, in a number of categories.

You can view them simply by searching “Neos Festa 3” in the world browser. From within the futuristic library, you can browse all the submissions in a fun, unique way, as the world around you transforms.

You can also find more at festa.neos.com or in the video below. If you haven’t seen it yet, we strongly recommend checking it out!

[previewyoutube][/previewyoutube]

[h2]Interview with the Japanese Community[/h2]
We have done another of our interview livestreams! In the last one, we had a number of members from the Japanese community, including Orange! If you missed this very special interview, you can check out the recording below:
[previewyoutube][/previewyoutube]

[h2]July community showcase[/h2]
Another of our recent livestreams showcased some of the awesome community creations from the month of July. If you missed it, you can check it out here, to see a sampling of some of the great community content:
[previewyoutube][/previewyoutube]

[h2]Press to talk and better tool dequipping in desktop[/h2]
Desktop mode now has press to talk! Since it was one of the popular requests, we decided to prioritize it, to give users a fair bit more control. To use it, simply mute yourself first through the dash and then press and hold the “V” key on the keyboard to talk. We plan to add a bit more to it in the future, once we have on-screen indications and input binding customization, but we hope it’ll serve well for now.

When switching tooltips with the alphanumeric keys, any existing tooltip is now also dequipped, instead of being destroyed. This should help fix cases where users have accidentally lost tools and other gadgets by switching to another one while having it equipped.

[h2]New Procedural Meshes[/h2]
The family of procedural meshes in Neos has grown a little! It now includes a hollow conical shape. This is similar to the regular conical frustum, where you can adjust the top and bottom radius, but with a hole in the middle, which has adjustable radius on both ends as well. The other one is a ramp, which is a simple ramp with adjustable length, width and height.



We’ve seen people use those meshes to build some amazing content in-game without having to use external modelling programs, so we’re always happy to expand this toolset bit by bit. You can find samples of those meshes in Neos Essentials / 3D Models / Procedural Meshes.

[h2]LogiX additions and improvements[/h2]
For anyone programming with LogiX, we have added some small quality of life improvements. The register nodes for storing values have all been merged into a generic ValueRegister component, instead of individual types for each type. Thanks to this, any value type is now supported, including enums.

There are also new string nodes for comparing strings, which can be useful for sorting text and other operations. The LogiX node browser will also color code the types when selecting a generic type, to make it easier to find the right type in the list.

Several nodes for formatting values, dates and other text now also accept culture as an input. This gives you more explicit control over which culture is used to format various values and ensure you get consistent results, regardless of the user's system locale.

[h2]Security improvements[/h2]
Based on exploit reports from our community, we have made several security improvements to prevent cases of crashes caused by malformed LogiX or using invalid types with certain generic components, due to inherited rules not being validated.

If you find any security issue, you can report them through our moderation ticket system at moderation.neos.com. We appreciate all the security reports, as responsible reports allow us to track and patch various holes or plan more robust solutions to certain classes of problems.

Big thanks to everyone for their reports!

[h2]Other quality of life improvements
[/h2]The inspector has received some small improvements as well. The quick operations for Slots have been reorganized to conserve space and a new option for parenting items under your current space has been added. The buttons and some labels can now also be localized. Procedural textures can now also be baked into static assets with a new option on the corresponding components.



[h2]BEPUv2 upgrade nearing completion[/h2]
The upgrade of the physics engine to BEPUv2 has been our major focus for a while (with some interruptions in between) and has progressed further. We have completed several major tasks to bring the integration to the feature parity with BEPUv1 to allow a (nearly) seamless swap over.

Notably we have implemented fast boolean sweeps into the BEPUv2 engine itself, since the engine doesn’t provide this functionality by itself. This is particularly important for Neos, because certain operations, like grabbing or releasing items, overlaps a sphere to determine objects within a certain area.

Certain items use dense mesh colliders and the traditional sweep tests every single overlapped triangle, resulting in a stutter that can last several seconds in some cases. To avoid this, we implemented an alternate version of the convex sweep, which stops testing after the first hit triangle, which is sufficient for determining whether the object overlaps or not.

We have also completed contact events implementation. Those are responsible for triggering events when colliders enter each other, allowing different systems to react to this. Thanks to BEPUv2’s low level customizability, this integration is much more efficient and in line with Neos’ own systems, preventing unnecessary computations when they’re not needed.

https://www.youtube.com/watch?v=JLJuOVClZp4

The last major piece for feature parity, character controllers, are currently in development. They represent the last major piece before feature parity is achieved, with only smaller tasks remaining afterwards, after which we can begin testing and perform the official swap.

The integration of character controllers is also notably different from BEPUv1. Neos will now allow using any of the colliders as the base shape, instead of it being implicitly a capsule shape, allowing for a greater range of flexibility. This should potentially allow for compound colliders to be used too, but this is yet to be tested.

It will also allow some other new features, such as unlocking rotation, which will be useful for interesting Zero-G experiences and other uses. While there’s nothing to show inside of Neos itself as the implementation isn’t complete, here you can see some of the experiments with the BEPUv2 demo, to better understand its inner workings and testing some mechanisms before integrating them into Neos:

https://www.youtube.com/watch?v=eWSUUYxGE1A
https://www.youtube.com/watch?v=gmPIuayqqNk
https://www.youtube.com/watch?v=NkNq5Ox9Whs

We’re excited about BEPUv2 getting close to completion. There’s still quite some things to do and other things we plan to do after reaching feature parity, but those can be done after the integration is officially released, bringing in some performance benefits as a result.

Stay tuned for updates, you can always watch the #devlog channel on our official Discord to see the developments as they happen, but we’ll always make sure to sum them up in these weekly updates.

And again big thanks to everyone supporting this project, building awesome content or just being part of the community! We couldn’t do this without you!

2021.8.2.936 - Push To Talk, floatQ field initialization, bugfixes

Just a small update, this has mostly additions to educational version of Neos, but there's a few small goodies as well, mostly notably Press To Talk on desktop! It's quite simple now and will have a bunch more added to it, but hopefully it'll help now as well. A bunch of bugfixes as well!

Compatible with previous build.

[h2]New Features:[/h2]
- Added simple Press To Talk mechanism (based on voting on GH #320)
-- First Mute yourself on the dash. Then press and hold V to talk.
-- Adding visuals to indicate that this is active and binding customization are planned

[h2]Neos Classroom Updates:[/h2] (requested by @Karel | CEO on behalf of Virtual Lab)
- Added button to stop/resume animation in Neos Classroom
- Added ability to call on students in Neos Classroom
-- This gives only given student ability to grab items and displays a text
- Added "Practice" quiz mode, which allows students to practice labeling of the model, immediatelly showing results
- Added ability to select environment

[h2]Tweaks:[/h2]
- All value fields are now initialized to specific datatype defaults
-- This should fix cases of floatQ fields (and some others, like matrices) having degenerate/invalid values (based on report by @Axius and @Shadow Panther [RU/EN, UTC+3] and others, GH #2728)

- Merged Russian locale additions by @Shadow Panther [RU/EN, UTC+3]
- Merged German locale tweaks by @Rubber Duck Shobe
- Merged Japanese locale additions by @Aesc/あすく
- Merged Korean locale additions and tweaks by @MirPASEC
- Merged Czech locale additions and fixes by @rampa_3 (UTC +1, DST UTC +2)

[h2]Bugfixes:[/h2]
- Fixed unregistered users not being able to join sessions
- Fixed some cases where the desktop rendering would get corrupted due to invalid quaternions
- "Skip and adjust avatar" button on full body calibrator is now grayed out when not wearing a full body avatar (based on report by @torch89 and @Shadow Panther [RU/EN, UTC+3], GH #2704)
- Changed DateTime string encoding to use culture invariant version that gets parsed to the same version regardless of the culture
-- This might potentially fix non-UTC DateTime cloud variables failing to write on non-US OS locales (reported by @Shadow Panther [RU/EN, UTC+3], GH #2731)