1. Neos VR
  2. News

Neos VR News

First phase of Input Binding system finished, community highlights

Hello everyone and welcome to another of our weekly updates!

This week we have some exciting news on the progress on the desktop mode. One of the major pre-requisites, the first phase of an input binding system, has been completed, finishing a large rework of Neos' internals in order to support new functionality. There's still lots of work to do before the desktop mode is in usable state, but with the new system it was already quick to add locomotion support, with more to come.

We also have another important change to our guidelines, to reduce some vagueness and anxiety it has caused. You can read more details below, on what we changed and why.

There are also many awesome community highlights, including a 3D snake game, some beautiful worlds and even a snowboarding mechanic in Neos. We showed off some of our own progress on the MTC Streaming & Recording room on our latest livestream.



[h2]Important update to the guidelines[/h2]
Veer, our chief of moderation, has made an important change to our guidelines based on feedback we have received from you, the community and discussion with the moderation team. Specifically we have removed this guideline: “ii. Publicly display fetishes or lifestyles in a blatant manner that may make others uncomfortable.”

While our original goal was to ensure that users will avoid using avatars and tools in public that tend to make a lot of people uncomfortable, we have found that this statement ended up being too vague and caused some anxiety over what constitutes as fetish/lifestyle and what does not.

Because we want Neos to be an open and tolerant space where people can freely express themselves, we have decided to remove this particular guideline as it was too subjective. Note that actual adult content is still not allowed in public, but other than that we don’t want the guidelines to be too strict or unclear.

To deal with people becoming uncomfortable around particular people and/or avatars, we’d like to direct users to use self-moderation tools instead, whether that involves politely asking them to change their avatar or banning them from your own sessions. We can also prioritize avatar blocking features and similar solutions to expand the set of tools available to everyone to make their experience more comfortable.

You can read the latest guidelines here.

[h2]MTC Streaming & Recording room showcase livestream, pizza[/h2]
If you missed our regular Friday livestream, you can check out the recording below. We have showcased some work in progress on the upcoming MTC Streaming & Recording room, which will teach users how to use Neos' built in streamer camera functions as well as provide a place to host events and record with a pre-built green screen.

Nexulan has also let the chat pick ingredients for his pizza order for some hilarity, thanks to generous Twitch sub gifts!

[previewyoutube][/previewyoutube]

[h2]First phase of new Input Binding system complete[/h2]
After some long major reworking of Neos’ input handling internals, we have released the first phase of our new Input Binding system! Originally Neos’ input handling code has grown organically over the years and had a lot of hardcoded rules and checks for specific controllers and combinations of input methods.

This has made it harder over time to add support for new VR controllers, but especially other input methods, like keyboard & mouse or gamepads for the desktop. We’ve also had requests for being able to customize the controls and add more different input devices over past years.

To solve this problem, we have designed a proper Input Binding system that replaces the hardcoded rules with a generalized system, while at the same time providing more flexibility and makes it easier to add support for new devices.

[h3]Input Groups & Actions [/h3]
The new system is based on a concept of “Input Groups”. Anything in Neos that needs to receive inputs defines one or more input groups, each with a list of actions (boolean, analog, 2D and 3D) that it receives.

These groups are then registered with the input binding system, which fill search and match bindings for those actions and handle sorting and blocking of inputs based on the priority of each group.

This way, if a particular input source (controller Trigger button for example) is used by a higher priority input, it will naturally block for any other inputs that might want to use it, rather than those blocking rules having to be hardcoded. This way the system adapts to customized controller bindings too.

Thanks to the new system, we could greatly simplify the code of common interactions, tools, locomotion system, avatar anchors and other inputs, removing all the old controller-specific code and replacing it with a more unified system, that is easier to extend and build upon, effectively serving as an abstraction layer between input devices, ensuring that any Neos behaviors don’t need to worry about any specific input devices.

The rework of Neos’ input internals has taken a while and currently only provides small improvements in behavior. For example we have fixed handling of dead zones and movement exponent curve, which was computed incorrectly. Thanks to this you should now have better control when moving in Neos, but you might also need to tweak your deadzone and movement exponent settings a bit if they become too sensitive.

Thanks to the rework we also discovered some serious performance bugs, which have been fixed and have done general cleanup of related systems, removing a lot of the cruft. While the surface benefits of the first phase of this new system are relatively minor, the main improvements are yet to come.

[h3]Locomotion in desktop mode & future additions[/h3]
Thanks to the flexibility and ease of use of the new Input Binding system, it has taken us less than 5 minutes to add locomotion support to the new desktop mode, giving users the ability to walk, fly and jump around.

While the desktop mode isn’t in a fully usable state yet, having this new input system implement is a major milestone towards its implementation. With it finalized we can now continue adding more features and building out necessary pieces to make the desktop mode properly usable, so stay tuned, there’s a lot more to come now!

[previewyoutube][/previewyoutube]

We’ll be also adding support for other input devices, like gamepads, giving you more options on how to play Neos. Once the system stabilizes a bit more internally, we’ll also start looking into exposing it for user configuration, allowing you to customize the bindings. This will be likely done through a configuration file first and UI later on.

[h2]Community Highlights by Turk[/h2]
Hello everyone! I hope everyone’s week went wonderfully! This week has been a little exciting as stuff has been a bit busy amongst the Neos community. New things have appeared through the creative void that is the Metaverse that is Neos. So let us shine a light on some of the things people have been making!

[h3]3D Snake by Joe Sylva & Napo[/h3]
Showcased at the Metaverse Meetup we have 3D Snake! With a Maximum of 8 players you can grab your own snake and proceed to enjoy some VR quality fun as you twist, turn, pull, and push your hand all around to get that snake into those tight nooks and crannies. Be careful to not crash into anything! Your snake will explode and then you’ll have to restart your score all over again! (There’s also skins too! Instead of a Worm you can use a Dragon!) Props to Joe Sylva and Napo for showing him the ropes! This only took 2 weeks to make and the time shows!



[h3]Boolean Beach by Aetoriz[/h3]
An amazing map that took alot of our inspirations by storm! Enter this gentle beach filled with multi tones of gray black and white. Watch as all the trivialities of life fade into the dull and mundane. Jump and climb over the beach’s cliffs and dunes. This map has some nice styling and is definitely a sight to behold! It truly feels like you're in a different place entirely. Props to you Aetoriz! Thanks for making the map!


[h3]Donut Dimension by QueenHidi[/h3]
A wonderful idea to instill the spirit of the donut into everyone. The “Donut Tutorial” as called by many wanting to get into 3d Modeling made by the BlenderGuru. Shows as a nice world to showcase the example of everyone's donut! Thanks to everyone who contributed a Donut and Thanks Hidi for making a neat interesting map!


[h3]256fes Room by Danyy59[/h3]
The 256fes challenge is back in season! People in Neos have been coming together to try and make assets with only 256 triangles! Now you might ask, why do that in this modern day and age? Well of course limitation breeds creativity! There have been all kinds of things made like avatars, maps, or even toys and tools! If you want to partake in the 256fes challenge just get into Blender and make something with only 256 triangles :) Thanks Danny for sharing your passion and showing us other parts of the modeling community!



[h3]Delvr Community One Shot by Chris and Tomo[/h3]
The boys over at DelVR have some cool things to show us with the new DnD system being used live and with a community behind it. They had their first community oneshot and it seems pretty packed! Check out part 1 of their vod to see how it went down. Thanks Chris & Tomato!
[previewyoutube][/previewyoutube]

[h3]VR Snowboarding by orange[/h3]
Thought the vehicle craze was over yet? Guess not! We had Geese, we had cars, now we have snowboards! As the Japanese Community in Neos was participating in a VR Snow Festival, all kinds of snow toys and maps are being made! Anyone feeling for some SSX Tricky in VR? While not released yet this got a lot of interest on twitter, so I figured it was appropriate to showcase the cool and new things users are cooking up in Neos!


https://twitter.com/i/status/1362339826003943427

-------------------------------------------

That's all for this week, we hope you had a great one and we're excited to bring you more progress on the desktop mode now with one of the major pre-requisites implemented, as well as clean up some other features, tweaks and bugfixes in the queue over the next weeks, so stay tuned!

And as usual, big thanks to our community for supporting this platform and allowing us to improve it every day. See you next week!

2021.2.22.855 - Input Binding system tweaks & bugfixes, new notification sounds

First round of tweaks and fixes for the new input binding system and some other stuff that's been waiting in the queue! Including a mechanism for the keyboard inputs (whether physical or virtual) to be blocked while typing, preventing you from moving (sorry for the inconvenience it has caused, unfortunately it wasn't caught during danger nightly testing ^^; ).

A bunch of other behaviors were tweaked and improved, which should prevent some oddities (e.g. being able to move super fast by combining keyboard & VR controller), NoClip not respecting the scale, diagonal movement being faster on some controllers and so on.

A bunch of other things got fixed up as well and a few minor additions, including new credits send/receive notification sounds by @Lewis Snow | Lead Audio Engineer! More to come soon, pushing this out now so you don't have to wait on those!

[h2]New Features:[/h2]
- Added "Add White/Black Background" processing option to static texture
-- This will replace the alpha channel of the texture with either solid white or black color

- Added new credits (NCR/KFC) send/receive notification sounds (created by @Lewis Snow | Lead Audio Engineer)
- Added blue "Neos Pro" badge for users who have the full commercial "Neos Pro" license for business use (based on request by @KG6LSE#0881)
-- Currently the process of assigning this badge to account isn't fully automated, if you'd like this badge to be displayed, please contact us



[h2]Tweaks:[/h2]
- Keyboard inputs are now blocked when a world element has active focus
-- This fixes typing on virtual or physical keyboard causing player movement (reported by @Lewis Snow | Lead Audio Engineer, @Freyar, @Raith (CytraX), @Mentalish, @Tok, @ArcticGamez, @Geenz | Graphics Programmer, @OctopusMan388, @Shadow Panther [RU/EN, UTC+3] and others)
- Analog actions are now scaled to the maximum magnitude of each individual binding, rather than raw sum
-- This prevents using multiple input methods (e.g. keyboard + VR controller) from producing exceedingly large values (e.g. resulting in the user moving too fast, as reported by @Shifty | Quality Control Lead)
- Base axes for VR locomotion direction are now clamped to unit magnitude
-- This fixes diagonal movement being too fast compared to pure horizontal/vertical with some controllers (reported by @Epsilion)
- SetSlotPersistentSelf input boolean is now named Persistent instead of Active (based on feedback by @Zyzyl)
- Added heuristic to detect broken user presence in the headset (headset/SteamVR reporting that user is not in the headset, while they are) to fix blocked interactions, closed eyes and auto-away status (based on reports by @Rue Shejn | Artist 3D, @Rukio, @Princess and others)
-- The presence status will be reset if there are at least 8 trigger presses detected within last 15 seconds, while headset or controllers are moving

- Merged Korean locale additions by @MirPASEC
- Merged Japanese, Esperanto and Chinese locale additions by @Melnus
- Merged French locale additions by @brodokk

[h2]Bugfixes:[/h2]
- Fixed NoClip locomotion speed not respecing the user's scale (reported by @DeliriousJax and @Cyro)
- Improved File Browser security (based on feedback by @Psychpsyo)
- Fixed WebSocketClient failing to connect to a secure (wss://) websocket when it uses newer versions of TLS (reported by @techy, @runtime, with root issue found by @Epsilion)
- Fixed TransformStreamDriver providing invalid user space in some scenarios
- Fixed DuplicatorTip not working when holding objects with a laser (reported by @Epsilion, @Medra and @Cataena)
- Fixed interaction laser going through the context menu on the first frame when opening it, causing it to flicker to large distance and immediatelly close it in cases there's userspace element behind it (based on report by @Shifty | Quality Control Lead)
- Fixed DynamicBoneSPhereCollider still being active when the component is disabled (reported by @3x1t_5tyl3)

2021.2.21.1425 - New Internal Input Binding system, additions, tweaks & fixes

Hello everyone, I finally got a new build for you all. I'm sorry that it took so long, it involved a lot of reworking of old Neos' interaction internals and transitioning them to a brand new Input Binding system and making sure everything still works as it should (big thanks for @Danger Tester's for helping to iron out all the major bugs before it went public!), plus I've been taking more breaks recently to better deal with stuff.

Right now the system is mostly internal, meaning you can't customize your bindings quite yet, but that's coming at some point in the future (probably through config files first). It already offfers some benefits though, as some of incorrect input handlings were fixed in the rework and parts of system made more efficient. It's a big milestone towards the desktop support and other planned features (gamepad support, new controllers, customizing the bindings and so on) - you can already use locomotion and move around, which has been trivial to add after this rework. More desktop features should now start following up soon!

There's a bunch of other smaller additions, tweaks and bugfixes as well, I plan on doing a batch of them after this build too to cleanup some of the queue since a lot of it got held up by the large rework, so builds should start coming out more frequently again. Thank you to everyone for your patience and understanding!

[h2]New Features:[/h2]
- Implemented first phase of Neos' new Input Binding system and reworked Neos' internal input handling to use this new clean, generalized system
-- This greatly simplifies Neos' input code, removing old tangled hardcoded controller checks and rules and replacing them with a generalized system of "Input Group" with "Input Actions"
-- This makes it significantly easier to add support for new controllers, gamepads, keyboard & mouse controls and other input methods and reduce number of bugs
-- Currently the input bindings cannot be customized (I want the system to stabilize a bit before we get to that), but will be in the future
-- Common interactions (grabbing, clicking), tooltips, locomotion, avatar anchors were all reworked to use this new system
-- Handling of movement exp and deadzone has been reworked, correcting previous incorrect implementation which would result in wrong behavior (e.g. deadzone cutting part of the range)
--- You might need to readjust your in-game deadzone and movement exp settings, as those changes make some controls more responsive/sensitive
-- Big thanks to Danger Testers who helped to bugtest this system before it went live: @Shifty | Quality Control Lead, @H3BO3, @Robyn (QueenHidi), @DeliriousJax, @Cyro, @Shadow Panther [RU/EN, UTC+3], @Epsilion, @Wolfie, @/home/JellyOsaurusPC and @Zyzyl

- Added "Split Submeshes" advanced model import settings, which will import each submesh as individual object
-- This can be used for compatibility with programs that export multiple objects on the same scene node (e.g. Anyland, as reported by @Alex from Alaska and @Dirk#3000)
-- It's highly recommended to not use this setting unless necessary, as it will produce incorrect results for most models and/or produce suboptimal results
- Added "Convert To Point Cloud" processing option to static meshes, which will convert all submeshes into point clouds (based on feedback by @H3BO3)

- You can now use PhysicalLocomotion in the proper desktop mode (currently bound to WASDQE + Space bar, subject to change)
-- Note that the proper desktop mode is still in heavy development and not recommended for general use yet

[h2]Tweaks:[/h2]
- PriorityIssue summary now uses HTML URL to the issue, rather than the API one
- TipJar now receives IButton events (suggested by @かず (kazu / GitHub: kazu0617)#0617, @rhenium_75#1015 and @AshtonSparx)
- Reworked PrimaryLocomotionController setting into a more general "Primary Hand" (old setting should auto-convert)
- Improved moderation tools to automatically notify any banned users on which ban is applied to their account, for how long and for what reason (based on feedback by @Veer | Chief Moderation Officer and the rest of the moderation team)
- When your current Patreon priority issue is closed, you will get notified in Neos (suggested by @Shifty | Quality Control Lead)
- Tweaked the mentor username badge colors (based on suggested values by @Turk)
- Anchors now fire events from the user who actually got anchored
- Improved sanitization of user Patreon information in the public API (based on issue by @AshtonSparx)
- Updated voice icons to use a microphone graphic, instead of speaker to be more clear (icons created by @Coffee | Programmer, based on feedback by @Yellow#0930 and others)
- Normalized volume of the new audio message notifications (based on report of them being too quiet by @Turk)

- Removed old ToolBase and ToolSlot components, removing unecessary complexity of double tool system (CommonTool being equipped into Tool system and Tooltips being equipped to CommonTool)
-- CommonTool is now the top level component that's directly put on the user, rather than being dynamically equipped

- Merged Korean locale addition and fixes by @MirPASEC
- Merged Japanese locale additions by @Aesc
- Merged Esperanto and Chinese locale additions by @Melnus
- Merged Czech locale additions and tweaks by @rampa_3 (UTC +1, DST UTC +2)
- Merged French locale additions by @brodokk
- Merged Russian locale tweak by @Shadow Panther [RU/EN, UTC+3]

[h2]Optimizations:[/h2]
- Fixed CommonTool registering user interface edit mode events when destroyed, resulting in potentially significant CPU and memory usage bloat over time, as users are (re)spawned and worlds opened/closed
- CommonTool undo and laser events are now only registered for the user actually owning the tool
- Parts of CommonTool are not instantiated and/or initialized for users other than its owner, reducing some resource usage

[h2]Bugfixes:[/h2]
- Fixed flat object positioning (used by GrabbableReceiverSurface among other things) still using Trigger colliders for part of the positioning mechanism (reported by @Toxic_Cookie)
- Fixed Neos sessions crashing when trying to encode enum values that are negative (based on testing by @Cyro and @Komdog)
- Fixed held tooltips receiving trigger press event on trigger release
- Fixed HyperlinkOpenDialog working outside of Userspace (reported by @marsmaantje)
- RaycastOne now validates input values, preventing performing raycasts when fed invalid values (e.g. NaN origin, direction or distance) and resulting in huge amount of exceptions (found in a log from @Cyro)
- Added exception guard to missing struct fields for old instances of MemberEditor to avoid polluting the log with errors (found in a log from @Zyzyl)

Geenz joining team as graphics programmer, ticket system, prioritizing issues

Hello and welcome to another of our weekly updates!

A quick note before we get started, we’re now officially moving the weekly update from Sunday to Monday to make it easier on our schedules (especially with Creator Jam going on Sunday) and to keep our weekend more free.

We have a few important things to announce, but first, we hope that everyone had a great Valentine’s day! We have welcomed a new member to our team. Geenz has joined us as a graphics programmer, bringing his large expertise with rendering systems to improve our current graphics pipeline as well as any future ones.

Our moderation team has now unveiled an official ticketing system to provide a clear line of communication for any moderation issues available at moderation.neos.com. We also released another update to our guidelines based on feedback from our mentors and shared some info on how we prioritize features.

In the meanwhile, we’re progressing on implementation of the desktop mode, with the new input binding system being nearly implemented. Keep an eye on the #testing channel as we’ll be in need of testers soon!

And last, but not least, we’d like to wish a happy birthday to Karel, our co-founder and CEO! Thanks to his hard work, Neos has kept going everyday ever since its inception, making sure that we stay afloat, sustainable and focused on improving the platform based on your feedback. Happy Birthday Karel!



[h2]Happy Valentine’s Day![/h2]
We hope that everyone had a fun Valentine’s day, whether you spent it in Neos or elsewhere! To share some of the love with you, we gave away 30 GB of total storage to 6 lucky winners on our regular Friday livestream through a game of pictionary. It was quite fun, some of the words were really challenging, not just for you, but for us to draw as well!

If you missed the stream, you can watch the recording below. We also showed live lip tracking support inside of Neos, more on that to come soon! If you missed your chance, don’t worry, we plan to do more of these events in the future, make sure to follow us on Twitch if you haven’t so you don’t miss it!

[previewyoutube][/previewyoutube]

[h2]Geenz Joining the team as graphics programmer[/h2]
We have a new addition to the team! After a few months of discussions and getting familiar with their work, we have decided to officially onboard Geenz!

Their background includes working with some of the world’s biggest and most innovative AR and VR companies and helping to refine other metaverse platforms’ rendering systems to bring them more in line with modern rendering principles. Their work in Neos will focus on improvements to the existing graphics pipeline and its future iterations.



Part of our focus is now getting them up and running with our codebase and as part of that we’re also using it as an opportunity to improve our internal build process as well, making it easier to iterate and automate more tasks in the future.

[h2]New Moderation Ticket System[/h2]
Our moderation team has been busy over the past few months as well, setting up processes to better handle and keep track of any moderation problems. Developed by Raith, we now have a new ticketing system available at https://moderation.neos.com



Here any user can submit a moderation report, report exploits or appeal a ban that might’ve been issued to them. The system doesn’t require registration, simply supplying your email and Neos username is sufficient.

As our community grows, having formal systems for handling problematic situations becomes more important to keep things nice and clean and provide everyone a clear line of communication and we hope this system will serve this task well!

[h2]How are features prioritized?[/h2]
One of the common questions we get is what the prioritization process for features and bugfixes is. This is a pretty complex topic and to give you some more insight into it we put together an overview on our GitHub, as well as here.

At any time, there are many different features and issues that we’d like to implement or fix, but there’s only a few that can be worked on at the time. There are several factors that determine the priority:

  • Severity: If it’s something with serious global impact on usability or security of users, it will be very high on the list.
  • Demand: The more people request a given feature or issue to be fixed, the higher its priority. This changes over time, so don’t hesitate adding your voice even if it was already requested. Becoming a supporter or donating will give your requests higher priority as it helps grow and support our team.
  • Complexity: Some things are significantly quicker to implement/fix than others. If something is a trivial fix it might get addressed very quickly even though it doesn’t have as high demand or severity
  • Prerequisites: Certain features or issues cannot be (efficiently) addressed without other, much bigger features or architectural changes done first. Our goal is long term sustainability and stability of the codebase, so certain things can take a lot longer to get addressed despite the demand. We will try to communicate whenever this is the case.


Note that the priorities are constantly shifting and evolving based on the feedback and demand from you, the community. If something is determined to be low priority at the moment, it doesn’t need to stay that way, just make sure your voice is heard through the right channels and we’ll listen!

If the request is not feasible on our end, we'll try to offer alternatives or explain why it can't/won't be implemented. We know it sucks getting a request denied, but we'd rather be upfront about it rather than give an empty promise on something we know we can't deliver.

Sometimes you might also see certain features being done out of order completely. Developing can be quite a draining task sometimes and we like to work on certain things just for fun or for the satisfaction of it to refocus our brains. Plus it makes sure that certain low demand, but nice things get attention from time to time too!

[h2]Progress on desktop mode - input binding system nearly implemented[/h2]
Our work on the proper desktop mode is now in a full implementation swing. With the design of the new input binding system mostly set, we have started the hard task of transitioning Neos’ code to this new system.

This is a pretty tedious task, as it requires reworking, cleaning up and reimplementing larger chunks of code that deal with user interaction, from the tools, grabbing, locomotions to avatar anchors, while making sure we don’t break anything major.

It’s a task that’s definitely worth it in the long term though, as some of the code we’re throwing away is pretty crusty mess of hardcoded interaction checks, some of it dating back all to the early alpha versions. Replacing it with a much cleaner, newer design makes it easier to do adjustments and build new features in the future.

With the transition nearly done, we’ll be in need of testers pretty soon. Keep an eye our on our #testing channel on our official Discord - you can also request a Danger Tester role to receive pings whenever we have builds available for public testing to catch any major issues before they go live.

[h2]Community Highlights by Turk[/h2]
Hello there everyone! I hope you all had a wonderful Valentines Day! Hopefully everyone had plenty of the 3 C’s! Cheese, Chocolate, and Candy for all! This week we don’t really have a theme to go for the community updates so I figured I’d throw out some of the interesting creations this week.

[h3]Retro Basement Hangout[/h3]
Hey all you retro fiends! Hope you are in for some good content, or a good whiff of the dank. Take a step downstairs and take a look at some prime nostalgia. This might not apply to all, but sometimes you know you just wana go down to your basement? Well then proceed to play games in your basement and snack on stuff all day, Thanks to TinyBear & Aegis Wolf you can do it VR! Good job you two! I expect people to chill here and play some Doom or Mario Kart in the future.



[h3]Valentine’s Day World[/h3]
Hope everyone’s Valentine’s Day was well, if not that’s okay! This world has plenty of candy and sweets for you to enjoy and partake in! Wanted to make something out of chocolate? Wanted to share your love with everyone by giving them hearts? Maybe ride a vehicle powered by love? No worries then! Orange has uploaded a map to let you get creative with your Valentine endeavors, thanks orange!



[h3]The Great Meander[/h3]
Inspired by that one episode from Adventure Time, it’s a pillow fort world! This was a part of Creator Jam 89 as it was a build day set aside for everything pillow and pillow fort related. We have custom pillows, bunk beds, blankets, couches or even pillow weaponry! Many a fort was sieged this day and many a feather was fluffed. I even see some cache of body pillows somewhere. Many thanks to everyone who participated! Thanks CJ team for hosting the event!



----------------------------------------

Anyway that's all for summary of this week, we'll see you next Monday with more updates! And remember, you can always see the latest on our official Discord as it's happening. We'll be working on getting the new input binding system out as soon as we can and then tackling some of the highly voted GitHub issues when we do, since we've gathered a good amount of votes.

If you missed it, check out our last weekly update to learn more about how you can vote on issues to bump up their priority and let us know what's important to you: https://store.steampowered.com/news/app/740250/view/3017944343703302357

And as usual, big thanks to everyone for your support!

Priority Issue voting for Patreons, removing climbing lag, progress on desktop

Hello everyone and welcome to the weekly update!

This week we bring a new feature specifically for our Patreon supporters - ability to formally give a priority vote to specific GitHub issue, giving it a greater weight when we decide what to prioritize. Currently it takes form of a simple Neos bot command, but will be expanded upon in the future.

We also bring you latest updates on the progress on the desktop mode, having designed more underlying subsystems (notably the input binding system) and implemented more parts, like automatic audio input switching between desktop and VR or basis of a neck model for more natural movement.

From the community highlights we have a look at some of the groups and events taking place in Neos, from game jams, exercises to meetups!

[previewyoutube][/previewyoutube]



[h2]Priority Issue voting for Patreon supporters[/h2]
Over the past several months, we have been moving bug reports, tweaks and feature requests to GitHub, to keep things better organized and more manageable as the volume of requests grows. However this has made it more difficult to track which requests are from our Patreon supporters and which are not, causing confusion on how to make the priority support requests.

We have now made the first step towards resolving this, by giving any Patreon supporter the ability to mark a single GitHub issue as their priority using a Neos bot command. Simply send /priorityIssue message to the Neos bot account in your friends list in Neos and it will give the issue with the given number your vote!

You can see a list of all voted issues on this URL. The issues show both how many individual votes they get and how many points each one has, based on the level of support on Patreon. While far from perfect, we hope this will give you a clear way to put spotlight on issues that matter to you the most and help us when deciding what to prioritize.

Whether you're a Patreon supporter or not, voting on GitHub itself is still a good way to help indicate what’s important too. Deciding which issue to prioritize is a complex combination of votes (with Patreon ones being given greater weight), implementation complexity, prerequisites, impact on the codebase and community, maintenance burden, security impact and even our current focus.

Voting helps tilt the scales, but it doesn’t also guarantee that the issue will be resolved immediately. For example easier issues might get implemented sooner with fewer votes, while for the more complex ones we’ll have to steer general development and large scale priorities over course of time to be able to fulfill them.

In the future we will expand on this functionality, incorporating it directly into in-game UI as well as giving you the ability to spread your vote over multiple different issues at the same time rather than a single one.

[h2]Removing climbing lag, optimizations, bug fixes[/h2]
While our focus is mainly on the proper desktop mode, we still sprinkle smaller additions, tweaks and improvements throughout and this week was no different. One particularly notable one is the new reference streaming mechanism, which now streams the user's coordinate space along with the coordinates.

Not only does this improve behavior when the user’s coordinate space changes (e.g. when being parented under a vehicle or elevator), preventing them from briefly flickering as they enter or leave, but when climbing environment or other users they will now also move with them instantly, rather than lagging behind due to network latency.

Some smaller optimizations have been made too, for example to the object Destroy process the same way Duplication was optimized a few weeks earlier and we resolved some performance issues with asset uploads, causing the upload processing queue to get backed up.

If you’d like to know all the changes, you can always check the release notes on Steam or on our official Discord.

[h2]Progress on the desktop mode[/h2]
This week we are gonna focus on some of the groups of Neos. Various groups have been doing something in the world of Neos from maps, events, or even workouts! Showing off their efforts I figured would be only fair. Thanks everyone for coming together and making cool stuff!

[h3]Input Binding system[/h3]
A lot of our current focus is on working on the new desktop mode. We have made important progress with the Input Binding system, which is one of the crucial underlying pieces to unify the VR and desktop implementations.

The system is now largely designed and partially implemented and will be likely rolled out soon for internal use, simplifying and unifying the interactions in the code. We have designed the system to allow us to implement a wide range of devices and combinations of devices, from VR controllers, to classic keyboard and mouse, gamepads, joysticks or even the 3DConnexion Space Mouse.



With the system in place, in-game behaviors like locomotion or grabbing interactions will be fully abstracted from the controls. For example the physical locomotion should not care whether you’re in VR using a controller to navigate or using keyboard and mouse in screen mode, it only needs to know in which direction you want to go and when to jump.

We went through several different approaches for the input binding and have simplified the design, with the core inputs being very basic values, like booleans, scalars and vectors, with complexities of locomotion and controller direction being abstracted by functions.

This will reduce complexity of creating and customizing the bindings and allow for reuse of common patterns, rather than baking them into the bindings themselves. Even though the initial use of this system will be internal and not exposed to you yet, we have made considerations in the design to allow for high degree of flexibility, but also ease of use once the binding configuration becomes accessible.

If you’d like to learn more details about the design considerations, check out the #devlog channel on our official Discord and/or the following design notes.

[h3]Neck Model and beginning of procedural positioning[/h3]
While most of the work so far is architectural and under the hood, first visual bits are starting to show. One of them is implementation of a neck model. In the debugging screen mode in Neos when looking around, the avatar’s head typically moves in a strange way, because the pivot is around the user’s eyes.



With the proper desktop implementation we have instead added a neck model, where the rotation happens at the neck, making the eyes/viewpoint swivel around it. This produces a much more natural look, as you can see in the video below.

There’s still much to do with this system, like adding natural hand positioning and even subtle head movements when idle, but hopefully this shows where the system is headed and the importance of the underlying systems to support this.

[previewyoutube][/previewyoutube]

[h3]Unique Audio Settings for Screen and VR[/h3]
Another part of the desktop mode that was implemented is automatic switching of audio settings depending whether VR or Screen mode is currently active. Since Neos supports dynamically switching from VR to Screen without restart, reconfiguring your settings (active microphone and volumes) would be pretty tiring.

In the latest build of the audio input device, its settings (noise gate, normalization and filtering) and master volume are unique for each mode. The desktop mode isn’t in a practically usable state yet, but once it gets to that point this mechanism will prove useful.

[h2]Progress on the MTC 2.0[/h2]
Another of our on-going efforts is an update to the Metaverse Training Center (MTC) to make Neos friendlier to new users. We are finalizing the Avatar & Lobby environment, with the environment mostly completed and the interactive content and tutorials built right now.

[previewyoutube][/previewyoutube]



In the meanwhile the environment for another room, the Streaming & Record is being built in parallel. This room will teach players how to use the interactive camera in Neos and its features, as well as provide cool places to try it out and convenient access to green green as well.



We can’t wait to have those environments ready for everyone to try out, if you’d like to see the latest updates, check out the #devlog channel on the Discord where we post work in progress pictures and videos!

[h2]Community Highlights[/h2]

[h3]Global Game Jam[/h3]
The NeosVR JP Community recently participated in the Global Game Jam! The theme for alot of their maps had colors, or some form of music. It really added to the atmosphere of the map! I only got to try some of them but I was really impressed by Lost Colors and how cute and how well paced the overall presentation felt! Good Job everyone who participated!



[h3]Radio Calisthenics[/h3]
The Neos JP Community has been doing an early morning get together! Every morning around 7:00 JST Time the folks over in Japan will get together and do some early morning workouts to keep limber and stretch! VR Workouts sound really fun! During this lockdown being able to get together to work out sounds so cool. Thanks to everyone involved!



[h3]Ramsford Lookout[/h3]
The Mystic Forge Team has released Ramsford’s Lookout! It’s a nice little low-poly map, teasing some of their projects to come. I assume this is what some of the Mystic Forge team members have been talking about by saying “secret project” if you’ve asked what they’ve been up to! Can’t wait to see what you guys cook up!



[h3]The Metaverse Meetups[/h3]
The Metaverse Meetup is a social event hosted by “The Metaverse” a group focused on trying to liven up and grow the social scene of Neos. It gives everyone in the community a day to kick back, relax and enjoy everyone’s company! This week was pretty big as we had about 40-60 concurrent users for about like 3-4 hours and a good amount of 80-100 unique users participating! It was really neat too because we had “Stargates” setup to switch from world to world (we had like 3 sessions filled with people!). It was really easy, and it made swapping sessions really streamlined. Props to everyone involved! I only expect them to get crazier and bigger.



---------------------------------

That's all for this week! Check out our official Discord for the latest info as we continue development and share what you've been making or playing with in Neos yourself. And as usual, huge thanks goes to you, our growing community and supporters, for making this project possible and helping us improve it every day. See you next week!